diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,48 @@
+1.23.1 --> 1.24.0
+=================
+* Support ImportQualifiedPost (#477)
+  - Technically breaking change: KnownExtension gained a new constructor ImportQualifiedPost
+* Fix pretty printing of promoted list/tuple with space padding (#423)
+* Fix lexing of operator symbols like @: when TypeApplications is enabled (#430)
+* Read files strictly before closing to prevent resource leaks (#460)
+* Add Safe Haskell annotations to many modules (#465)
+* Remove noncanonical return and mappend definitions (#481)
+* Solve some compiler warnings (#464)
+* Performance optimization: use strict accumulators in lexString and parseInteger (#479)
+
+
+1.23.0 --> 1.23.1
+=================
+* show instance for SrcLoc and SrcSpan renders "(-1)" instead of "-1"
+* Allow empty closed type families (#452)
+
+
+1.22.0 --> 1.23.0
+=================
+* Add support for BlockArguments (#444)
+  - Technically breaking change: KnownExtension gained a new constructor BlockArguments
+* Add support for Arrow Brackets (#445)
+  - Tecnically breaking change: Exp gained new constructor ArrOp
+
+1.21.1 --> 1.22.0
+=================
+* Support QuantifiedConstraints (#427)
+  - Breaking change: constructors for PAsst changed
+  - Technically breaking change: KnownExtention gained a new constructor QuantifiedConstraints
+* Support Template Haskell typed splices and quotations (#432)
+  - Breaking change: new constructors on Token data type
+* Fix unicode identifier parsing (#442)
+
+1.21.0 --> 1.21.1
+=================
+* GHC 8.8.1 compatibility (MonadFail)
+
+1.20.3 --> 1.21.0
+=================
+* DerivingVia (#420)
+* TypeInType  (#414)
+* Parse TH-quoted list constructor (#415)
+
 1.20.2 --> 1.20.3
 =================
 * GHC 8.6.1 compatability (MonadFail)
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -36,3 +36,13 @@
 derives from several sources, all of which are distributable under
 BSD-style or compatible licenses. See the file LICENSE for the complete
 license text.
+
+
+Maintenance
+--------------
+
+Dan Burton is currently keeping haskell-src-exts on life support.
+If you are interested in more actively making improvements to this package,
+please make your interests known.
+
+You might want to try [ghc-lib-parser](http://hackage.haskell.org/package/ghc-lib-parser) instead.
diff --git a/dist/build/Language/Haskell/Exts/InternalParser.hs b/dist/build/Language/Haskell/Exts/InternalParser.hs
deleted file mode 100644
--- a/dist/build/Language/Haskell/Exts/InternalParser.hs
+++ /dev/null
@@ -1,11289 +0,0 @@
-{-# OPTIONS_GHC -w #-}
-{-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-}
-#if __GLASGOW_HASKELL__ >= 710
-{-# OPTIONS_GHC -XPartialTypeSignatures #-}
-#endif
-{-# LANGUAGE CPP #-}
-{-# OPTIONS_HADDOCK hide #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Language.Haskell.Exts.Annotated.Parser
--- Copyright   :  (c) Niklas Broberg 2004-2009,
---                Original (c) Simon Marlow, Sven Panne 1997-2000
--- License     :  BSD-style (see the file LICENSE.txt)
---
--- Maintainer  :  Niklas Broberg, d00nibro@chalmers.se
--- Stability   :  stable
--- Portability :  portable
---
---
------------------------------------------------------------------------------
-module Language.Haskell.Exts.InternalParser (
-              mparseModule,
-              mparseExp,
-              mparsePat,
-              mparseDecl,
-              mparseType,
-              mparseStmt,
-              mparseImportDecl,
-              ngparseModulePragmas,
-              ngparseModuleHeadAndImports,
-              ngparsePragmasAndModuleHead,
-              ngparsePragmasAndModuleName
-              ) where
-import Language.Haskell.Exts.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )
-import Language.Haskell.Exts.Syntax ( Type, Exp, Asst )
-import Language.Haskell.Exts.ParseMonad
-import Language.Haskell.Exts.InternalLexer
-import Language.Haskell.Exts.ParseUtils
-import Language.Haskell.Exts.Fixity
-import Language.Haskell.Exts.SrcLoc
-import Language.Haskell.Exts.Extension
-
-import Control.Monad ( liftM, (<=<), when )
-import Control.Applicative ( (<$>) )
-import Data.Maybe
-#if MIN_VERSION_base(4,11,0)
-import Prelude hiding ((<>))
-#endif
-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
-happyIn14 :: ([Module L]) -> (HappyAbsSyn )
-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn14 #-}
-happyOut14 :: (HappyAbsSyn ) -> ([Module L])
-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut14 #-}
-happyIn15 :: ([[ModulePragma L] -> [S] -> L -> Module L]) -> (HappyAbsSyn )
-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn15 #-}
-happyOut15 :: (HappyAbsSyn ) -> ([[ModulePragma L] -> [S] -> L -> Module L])
-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut15 #-}
-happyIn16 :: (Module L) -> (HappyAbsSyn )
-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn16 #-}
-happyOut16 :: (HappyAbsSyn ) -> (Module L)
-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut16 #-}
-happyIn17 :: (PExp L) -> (HappyAbsSyn )
-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn17 #-}
-happyOut17 :: (HappyAbsSyn ) -> (PExp L)
-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut17 #-}
-happyIn18 :: (([ModulePragma L],[S],L)) -> (HappyAbsSyn )
-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn18 #-}
-happyOut18 :: (HappyAbsSyn ) -> (([ModulePragma L],[S],L))
-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut18 #-}
-happyIn19 :: (([ModulePragma L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn19 #-}
-happyOut19 :: (HappyAbsSyn ) -> (([ModulePragma L],[S],Maybe L))
-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut19 #-}
-happyIn20 :: (ModulePragma L) -> (HappyAbsSyn )
-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn20 #-}
-happyOut20 :: (HappyAbsSyn ) -> (ModulePragma L)
-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut20 #-}
-happyIn21 :: (([Name L],[S])) -> (HappyAbsSyn )
-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn21 #-}
-happyOut21 :: (HappyAbsSyn ) -> (([Name L],[S]))
-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut21 #-}
-happyIn22 :: ([ModulePragma L] -> [S] -> L -> Module L) -> (HappyAbsSyn )
-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn22 #-}
-happyOut22 :: (HappyAbsSyn ) -> ([ModulePragma L] -> [S] -> L -> Module L)
-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut22 #-}
-happyIn23 :: (Maybe (ModuleHead L)) -> (HappyAbsSyn )
-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn23 #-}
-happyOut23 :: (HappyAbsSyn ) -> (Maybe (ModuleHead L))
-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut23 #-}
-happyIn24 :: (Maybe (WarningText L)) -> (HappyAbsSyn )
-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn24 #-}
-happyOut24 :: (HappyAbsSyn ) -> (Maybe (WarningText L))
-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut24 #-}
-happyIn25 :: (([ImportDecl L],[Decl L],[S],L)) -> (HappyAbsSyn )
-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn25 #-}
-happyOut25 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S],L))
-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut25 #-}
-happyIn26 :: (([ImportDecl L],[Decl L],[S])) -> (HappyAbsSyn )
-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn26 #-}
-happyOut26 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S]))
-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut26 #-}
-happyIn27 :: ([S]) -> (HappyAbsSyn )
-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn27 #-}
-happyOut27 :: (HappyAbsSyn ) -> ([S])
-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut27 #-}
-happyIn28 :: ([S]) -> (HappyAbsSyn )
-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn28 #-}
-happyOut28 :: (HappyAbsSyn ) -> ([S])
-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut28 #-}
-happyIn29 :: (Maybe (ExportSpecList L)) -> (HappyAbsSyn )
-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn29 #-}
-happyOut29 :: (HappyAbsSyn ) -> (Maybe (ExportSpecList L))
-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut29 #-}
-happyIn30 :: (ExportSpecList L) -> (HappyAbsSyn )
-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn30 #-}
-happyOut30 :: (HappyAbsSyn ) -> (ExportSpecList L)
-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut30 #-}
-happyIn31 :: ([S]) -> (HappyAbsSyn )
-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn31 #-}
-happyOut31 :: (HappyAbsSyn ) -> ([S])
-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut31 #-}
-happyIn32 :: (([ExportSpec L],[S])) -> (HappyAbsSyn )
-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn32 #-}
-happyOut32 :: (HappyAbsSyn ) -> (([ExportSpec L],[S]))
-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut32 #-}
-happyIn33 :: (ExportSpec L) -> (HappyAbsSyn )
-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn33 #-}
-happyOut33 :: (HappyAbsSyn ) -> (ExportSpec L)
-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut33 #-}
-happyIn34 :: (([Either S (CName L)],[S])) -> (HappyAbsSyn )
-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn34 #-}
-happyOut34 :: (HappyAbsSyn ) -> (([Either S (CName L)],[S]))
-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut34 #-}
-happyIn35 :: (Either S (CName L)) -> (HappyAbsSyn )
-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn35 #-}
-happyOut35 :: (HappyAbsSyn ) -> (Either S (CName L))
-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut35 #-}
-happyIn36 :: (QName L) -> (HappyAbsSyn )
-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn36 #-}
-happyOut36 :: (HappyAbsSyn ) -> (QName L)
-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut36 #-}
-happyIn37 :: (([ImportDecl L],[S])) -> (HappyAbsSyn )
-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn37 #-}
-happyOut37 :: (HappyAbsSyn ) -> (([ImportDecl L],[S]))
-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut37 #-}
-happyIn38 :: (ImportDecl L) -> (HappyAbsSyn )
-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn38 #-}
-happyOut38 :: (HappyAbsSyn ) -> (ImportDecl L)
-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut38 #-}
-happyIn39 :: ((Bool,[S])) -> (HappyAbsSyn )
-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn39 #-}
-happyOut39 :: (HappyAbsSyn ) -> ((Bool,[S]))
-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut39 #-}
-happyIn40 :: ((Bool,[S])) -> (HappyAbsSyn )
-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn40 #-}
-happyOut40 :: (HappyAbsSyn ) -> ((Bool,[S]))
-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut40 #-}
-happyIn41 :: ((Bool,[S])) -> (HappyAbsSyn )
-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn41 #-}
-happyOut41 :: (HappyAbsSyn ) -> ((Bool,[S]))
-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut41 #-}
-happyIn42 :: ((Maybe String,[S])) -> (HappyAbsSyn )
-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn42 #-}
-happyOut42 :: (HappyAbsSyn ) -> ((Maybe String,[S]))
-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut42 #-}
-happyIn43 :: ((Maybe (ModuleName L),[S],Maybe L)) -> (HappyAbsSyn )
-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn43 #-}
-happyOut43 :: (HappyAbsSyn ) -> ((Maybe (ModuleName L),[S],Maybe L))
-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut43 #-}
-happyIn44 :: (Maybe (ImportSpecList L)) -> (HappyAbsSyn )
-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn44 #-}
-happyOut44 :: (HappyAbsSyn ) -> (Maybe (ImportSpecList L))
-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut44 #-}
-happyIn45 :: (ImportSpecList L) -> (HappyAbsSyn )
-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn45 #-}
-happyOut45 :: (HappyAbsSyn ) -> (ImportSpecList L)
-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut45 #-}
-happyIn46 :: ((Bool, Maybe L,[S])) -> (HappyAbsSyn )
-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn46 #-}
-happyOut46 :: (HappyAbsSyn ) -> ((Bool, Maybe L,[S]))
-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut46 #-}
-happyIn47 :: (([ImportSpec L],[S])) -> (HappyAbsSyn )
-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn47 #-}
-happyOut47 :: (HappyAbsSyn ) -> (([ImportSpec L],[S]))
-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut47 #-}
-happyIn48 :: (ImportSpec L) -> (HappyAbsSyn )
-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn48 #-}
-happyOut48 :: (HappyAbsSyn ) -> (ImportSpec L)
-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut48 #-}
-happyIn49 :: (([CName L],[S])) -> (HappyAbsSyn )
-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn49 #-}
-happyOut49 :: (HappyAbsSyn ) -> (([CName L],[S]))
-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut49 #-}
-happyIn50 :: (CName L) -> (HappyAbsSyn )
-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn50 #-}
-happyOut50 :: (HappyAbsSyn ) -> (CName L)
-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut50 #-}
-happyIn51 :: (Decl L) -> (HappyAbsSyn )
-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn51 #-}
-happyOut51 :: (HappyAbsSyn ) -> (Decl L)
-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut51 #-}
-happyIn52 :: ((Maybe Int, [S])) -> (HappyAbsSyn )
-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn52 #-}
-happyOut52 :: (HappyAbsSyn ) -> ((Maybe Int, [S]))
-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut52 #-}
-happyIn53 :: (Assoc L) -> (HappyAbsSyn )
-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn53 #-}
-happyOut53 :: (HappyAbsSyn ) -> (Assoc L)
-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut53 #-}
-happyIn54 :: (([Op L],[S],L)) -> (HappyAbsSyn )
-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn54 #-}
-happyOut54 :: (HappyAbsSyn ) -> (([Op L],[S],L))
-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut54 #-}
-happyIn55 :: (Maybe (InjectivityInfo L)) -> (HappyAbsSyn )
-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn55 #-}
-happyOut55 :: (HappyAbsSyn ) -> (Maybe (InjectivityInfo L))
-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut55 #-}
-happyIn56 :: (InjectivityInfo L) -> (HappyAbsSyn )
-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn56 #-}
-happyOut56 :: (HappyAbsSyn ) -> (InjectivityInfo L)
-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut56 #-}
-happyIn57 :: ([Name L]) -> (HappyAbsSyn )
-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn57 #-}
-happyOut57 :: (HappyAbsSyn ) -> ([Name L])
-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut57 #-}
-happyIn58 :: (([Decl L],[S])) -> (HappyAbsSyn )
-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn58 #-}
-happyOut58 :: (HappyAbsSyn ) -> (([Decl L],[S]))
-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut58 #-}
-happyIn59 :: (([Decl L],[S])) -> (HappyAbsSyn )
-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn59 #-}
-happyOut59 :: (HappyAbsSyn ) -> (([Decl L],[S]))
-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut59 #-}
-happyIn60 :: (Decl L) -> (HappyAbsSyn )
-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn60 #-}
-happyOut60 :: (HappyAbsSyn ) -> (Decl L)
-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut60 #-}
-happyIn61 :: (Maybe (ResultSig L)) -> (HappyAbsSyn )
-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn61 #-}
-happyOut61 :: (HappyAbsSyn ) -> (Maybe (ResultSig L))
-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut61 #-}
-happyIn62 :: (Maybe (ResultSig L)) -> (HappyAbsSyn )
-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn62 #-}
-happyOut62 :: (HappyAbsSyn ) -> (Maybe (ResultSig L))
-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut62 #-}
-happyIn63 :: ((Maybe (ResultSig L), Maybe (InjectivityInfo L))) -> (HappyAbsSyn )
-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn63 #-}
-happyOut63 :: (HappyAbsSyn ) -> ((Maybe (ResultSig L), Maybe (InjectivityInfo L)))
-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut63 #-}
-happyIn64 :: ((Maybe (ResultSig L), Maybe (S, Type L), Maybe (InjectivityInfo L))) -> (HappyAbsSyn )
-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn64 #-}
-happyOut64 :: (HappyAbsSyn ) -> ((Maybe (ResultSig L), Maybe (S, Type L), Maybe (InjectivityInfo L)))
-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut64 #-}
-happyIn65 :: (Decl L) -> (HappyAbsSyn )
-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn65 #-}
-happyOut65 :: (HappyAbsSyn ) -> (Decl L)
-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut65 #-}
-happyIn66 :: ([(Maybe String, L)]) -> (HappyAbsSyn )
-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn66 #-}
-happyOut66 :: (HappyAbsSyn ) -> ([(Maybe String, L)])
-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut66 #-}
-happyIn67 :: ((Maybe String, L)) -> (HappyAbsSyn )
-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn67 #-}
-happyOut67 :: (HappyAbsSyn ) -> ((Maybe String, L))
-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut67 #-}
-happyIn68 :: (Maybe (Overlap L)) -> (HappyAbsSyn )
-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn68 #-}
-happyOut68 :: (HappyAbsSyn ) -> (Maybe (Overlap L))
-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut68 #-}
-happyIn69 :: (Maybe ([TypeEqn L], S)) -> (HappyAbsSyn )
-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn69 #-}
-happyOut69 :: (HappyAbsSyn ) -> (Maybe ([TypeEqn L], S))
-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut69 #-}
-happyIn70 :: ([TypeEqn L]) -> (HappyAbsSyn )
-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn70 #-}
-happyOut70 :: (HappyAbsSyn ) -> ([TypeEqn L])
-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut70 #-}
-happyIn71 :: ([TypeEqn L]) -> (HappyAbsSyn )
-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn71 #-}
-happyOut71 :: (HappyAbsSyn ) -> ([TypeEqn L])
-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut71 #-}
-happyIn72 :: (TypeEqn L) -> (HappyAbsSyn )
-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn72 #-}
-happyOut72 :: (HappyAbsSyn ) -> (TypeEqn L)
-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut72 #-}
-happyIn73 :: (DataOrNew L) -> (HappyAbsSyn )
-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn73 #-}
-happyOut73 :: (HappyAbsSyn ) -> (DataOrNew L)
-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut73 #-}
-happyIn74 :: (([Type L],[S])) -> (HappyAbsSyn )
-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn74 #-}
-happyOut74 :: (HappyAbsSyn ) -> (([Type L],[S]))
-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut74 #-}
-happyIn75 :: (([Decl L],[S])) -> (HappyAbsSyn )
-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn75 #-}
-happyOut75 :: (HappyAbsSyn ) -> (([Decl L],[S]))
-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut75 #-}
-happyIn76 :: (([Decl L],[S])) -> (HappyAbsSyn )
-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn76 #-}
-happyOut76 :: (HappyAbsSyn ) -> (([Decl L],[S]))
-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut76 #-}
-happyIn77 :: (Decl L) -> (HappyAbsSyn )
-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn77 #-}
-happyOut77 :: (HappyAbsSyn ) -> (Decl L)
-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut77 #-}
-happyIn78 :: (Binds L) -> (HappyAbsSyn )
-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn78 #-}
-happyOut78 :: (HappyAbsSyn ) -> (Binds L)
-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut78 #-}
-happyIn79 :: (Decl L) -> (HappyAbsSyn )
-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn79 #-}
-happyOut79 :: (HappyAbsSyn ) -> (Decl L)
-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut79 #-}
-happyIn80 :: (Decl L) -> (HappyAbsSyn )
-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn80 #-}
-happyOut80 :: (HappyAbsSyn ) -> (Decl L)
-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut80 #-}
-happyIn81 :: (Decl L) -> (HappyAbsSyn )
-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn81 #-}
-happyOut81 :: (HappyAbsSyn ) -> (Decl L)
-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut81 #-}
-happyIn82 :: (([Type L],[S])) -> (HappyAbsSyn )
-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn82 #-}
-happyOut82 :: (HappyAbsSyn ) -> (([Type L],[S]))
-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut82 #-}
-happyIn83 :: (Type L) -> (HappyAbsSyn )
-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn83 #-}
-happyOut83 :: (HappyAbsSyn ) -> (Type L)
-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut83 #-}
-happyIn84 :: (Maybe (BooleanFormula L)) -> (HappyAbsSyn )
-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn84 #-}
-happyOut84 :: (HappyAbsSyn ) -> (Maybe (BooleanFormula L))
-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut84 #-}
-happyIn85 :: (BooleanFormula L) -> (HappyAbsSyn )
-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn85 #-}
-happyOut85 :: (HappyAbsSyn ) -> (BooleanFormula L)
-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut85 #-}
-happyIn86 :: (BooleanFormula L) -> (HappyAbsSyn )
-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn86 #-}
-happyOut86 :: (HappyAbsSyn ) -> (BooleanFormula L)
-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut86 #-}
-happyIn87 :: (BooleanFormula L) -> (HappyAbsSyn )
-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn87 #-}
-happyOut87 :: (HappyAbsSyn ) -> (BooleanFormula L)
-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut87 #-}
-happyIn88 :: (Binds L) -> (HappyAbsSyn )
-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn88 #-}
-happyOut88 :: (HappyAbsSyn ) -> (Binds L)
-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut88 #-}
-happyIn89 :: (([Name L],[S],L)) -> (HappyAbsSyn )
-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn89 #-}
-happyOut89 :: (HappyAbsSyn ) -> (([Name L],[S],L))
-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut89 #-}
-happyIn90 :: (CallConv L) -> (HappyAbsSyn )
-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn90 #-}
-happyOut90 :: (HappyAbsSyn ) -> (CallConv L)
-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut90 #-}
-happyIn91 :: (Maybe (Safety L)) -> (HappyAbsSyn )
-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn91 #-}
-happyOut91 :: (HappyAbsSyn ) -> (Maybe (Safety L))
-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut91 #-}
-happyIn92 :: ((Maybe String, Name L, Type L, [S])) -> (HappyAbsSyn )
-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn92 #-}
-happyOut92 :: (HappyAbsSyn ) -> ((Maybe String, Name L, Type L, [S]))
-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut92 #-}
-happyIn93 :: ([Rule L]) -> (HappyAbsSyn )
-happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn93 #-}
-happyOut93 :: (HappyAbsSyn ) -> ([Rule L])
-happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut93 #-}
-happyIn94 :: (Rule L) -> (HappyAbsSyn )
-happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn94 #-}
-happyOut94 :: (HappyAbsSyn ) -> (Rule L)
-happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut94 #-}
-happyIn95 :: (Maybe (Activation L)) -> (HappyAbsSyn )
-happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn95 #-}
-happyOut95 :: (HappyAbsSyn ) -> (Maybe (Activation L))
-happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut95 #-}
-happyIn96 :: ((Maybe [RuleVar L],[S])) -> (HappyAbsSyn )
-happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn96 #-}
-happyOut96 :: (HappyAbsSyn ) -> ((Maybe [RuleVar L],[S]))
-happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut96 #-}
-happyIn97 :: ([RuleVar L]) -> (HappyAbsSyn )
-happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn97 #-}
-happyOut97 :: (HappyAbsSyn ) -> ([RuleVar L])
-happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut97 #-}
-happyIn98 :: (RuleVar L) -> (HappyAbsSyn )
-happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn98 #-}
-happyOut98 :: (HappyAbsSyn ) -> (RuleVar L)
-happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut98 #-}
-happyIn99 :: (([([Name L],String)],[S])) -> (HappyAbsSyn )
-happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn99 #-}
-happyOut99 :: (HappyAbsSyn ) -> (([([Name L],String)],[S]))
-happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut99 #-}
-happyIn100 :: ((([Name L], String),[S])) -> (HappyAbsSyn )
-happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn100 #-}
-happyOut100 :: (HappyAbsSyn ) -> ((([Name L], String),[S]))
-happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut100 #-}
-happyIn101 :: (([Name L],[S])) -> (HappyAbsSyn )
-happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn101 #-}
-happyOut101 :: (HappyAbsSyn ) -> (([Name L],[S]))
-happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut101 #-}
-happyIn102 :: (Name L) -> (HappyAbsSyn )
-happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn102 #-}
-happyOut102 :: (HappyAbsSyn ) -> (Name L)
-happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut102 #-}
-happyIn103 :: (Annotation L) -> (HappyAbsSyn )
-happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn103 #-}
-happyOut103 :: (HappyAbsSyn ) -> (Annotation L)
-happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut103 #-}
-happyIn104 :: (Type L) -> (HappyAbsSyn )
-happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn104 #-}
-happyOut104 :: (HappyAbsSyn ) -> (Type L)
-happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut104 #-}
-happyIn105 :: (PType L) -> (HappyAbsSyn )
-happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn105 #-}
-happyOut105 :: (HappyAbsSyn ) -> (PType L)
-happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut105 #-}
-happyIn106 :: (Type L) -> (HappyAbsSyn )
-happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn106 #-}
-happyOut106 :: (HappyAbsSyn ) -> (Type L)
-happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut106 #-}
-happyIn107 :: (PType L) -> (HappyAbsSyn )
-happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn107 #-}
-happyOut107 :: (HappyAbsSyn ) -> (PType L)
-happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut107 #-}
-happyIn108 :: (Type L) -> (HappyAbsSyn )
-happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn108 #-}
-happyOut108 :: (HappyAbsSyn ) -> (Type L)
-happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut108 #-}
-happyIn109 :: (Type L) -> (HappyAbsSyn )
-happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn109 #-}
-happyOut109 :: (HappyAbsSyn ) -> (Type L)
-happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut109 #-}
-happyIn110 :: (PType L) -> (HappyAbsSyn )
-happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn110 #-}
-happyOut110 :: (HappyAbsSyn ) -> (PType L)
-happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut110 #-}
-happyIn111 :: (PType L) -> (HappyAbsSyn )
-happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn111 #-}
-happyOut111 :: (HappyAbsSyn ) -> (PType L)
-happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut111 #-}
-happyIn112 :: (Promoted L) -> (HappyAbsSyn )
-happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn112 #-}
-happyOut112 :: (HappyAbsSyn ) -> (Promoted L)
-happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut112 #-}
-happyIn113 :: ((Maybe (L -> BangType L,S), Maybe (Unpackedness L))) -> (HappyAbsSyn )
-happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn113 #-}
-happyOut113 :: (HappyAbsSyn ) -> ((Maybe (L -> BangType L,S), Maybe (Unpackedness L)))
-happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut113 #-}
-happyIn114 :: ((L -> BangType L, S)) -> (HappyAbsSyn )
-happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn114 #-}
-happyOut114 :: (HappyAbsSyn ) -> ((L -> BangType L, S))
-happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut114 #-}
-happyIn115 :: (Unpackedness L) -> (HappyAbsSyn )
-happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn115 #-}
-happyOut115 :: (HappyAbsSyn ) -> (Unpackedness L)
-happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut115 #-}
-happyIn116 :: (QName L) -> (HappyAbsSyn )
-happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn116 #-}
-happyOut116 :: (HappyAbsSyn ) -> (QName L)
-happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut116 #-}
-happyIn117 :: (QName L) -> (HappyAbsSyn )
-happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn117 #-}
-happyOut117 :: (HappyAbsSyn ) -> (QName L)
-happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut117 #-}
-happyIn118 :: (MaybePromotedName L) -> (HappyAbsSyn )
-happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn118 #-}
-happyOut118 :: (HappyAbsSyn ) -> (MaybePromotedName L)
-happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut118 #-}
-happyIn119 :: (Type L) -> (HappyAbsSyn )
-happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn119 #-}
-happyOut119 :: (HappyAbsSyn ) -> (Type L)
-happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut119 #-}
-happyIn120 :: (PType L) -> (HappyAbsSyn )
-happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn120 #-}
-happyOut120 :: (HappyAbsSyn ) -> (PType L)
-happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut120 #-}
-happyIn121 :: (PContext L) -> (HappyAbsSyn )
-happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn121 #-}
-happyOut121 :: (HappyAbsSyn ) -> (PContext L)
-happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut121 #-}
-happyIn122 :: (([PType L],[S])) -> (HappyAbsSyn )
-happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn122 #-}
-happyOut122 :: (HappyAbsSyn ) -> (([PType L],[S]))
-happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut122 #-}
-happyIn123 :: (([PType L],[S])) -> (HappyAbsSyn )
-happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn123 #-}
-happyOut123 :: (HappyAbsSyn ) -> (([PType L],[S]))
-happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut123 #-}
-happyIn124 :: (([PType L],[S])) -> (HappyAbsSyn )
-happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn124 #-}
-happyOut124 :: (HappyAbsSyn ) -> (([PType L],[S]))
-happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut124 #-}
-happyIn125 :: (([TyVarBind L],Maybe L)) -> (HappyAbsSyn )
-happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn125 #-}
-happyOut125 :: (HappyAbsSyn ) -> (([TyVarBind L],Maybe L))
-happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut125 #-}
-happyIn126 :: (TyVarBind L) -> (HappyAbsSyn )
-happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn126 #-}
-happyOut126 :: (HappyAbsSyn ) -> (TyVarBind L)
-happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut126 #-}
-happyIn127 :: (([Name L],Maybe L)) -> (HappyAbsSyn )
-happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn127 #-}
-happyOut127 :: (HappyAbsSyn ) -> (([Name L],Maybe L))
-happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut127 #-}
-happyIn128 :: (([Name L],L)) -> (HappyAbsSyn )
-happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn128 #-}
-happyOut128 :: (HappyAbsSyn ) -> (([Name L],L))
-happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut128 #-}
-happyIn129 :: (([FunDep L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn129 #-}
-happyOut129 :: (HappyAbsSyn ) -> (([FunDep L],[S],Maybe L))
-happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut129 #-}
-happyIn130 :: (([FunDep L],[S],L)) -> (HappyAbsSyn )
-happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn130 #-}
-happyOut130 :: (HappyAbsSyn ) -> (([FunDep L],[S],L))
-happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut130 #-}
-happyIn131 :: (FunDep L) -> (HappyAbsSyn )
-happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn131 #-}
-happyOut131 :: (HappyAbsSyn ) -> (FunDep L)
-happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut131 #-}
-happyIn132 :: (([GadtDecl L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn132 #-}
-happyOut132 :: (HappyAbsSyn ) -> (([GadtDecl L],[S],Maybe L))
-happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut132 #-}
-happyIn133 :: (([GadtDecl L],[S])) -> (HappyAbsSyn )
-happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn133 #-}
-happyOut133 :: (HappyAbsSyn ) -> (([GadtDecl L],[S]))
-happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut133 #-}
-happyIn134 :: (([GadtDecl L],[S])) -> (HappyAbsSyn )
-happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn134 #-}
-happyOut134 :: (HappyAbsSyn ) -> (([GadtDecl L],[S]))
-happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut134 #-}
-happyIn135 :: ([GadtDecl L]) -> (HappyAbsSyn )
-happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn135 #-}
-happyOut135 :: (HappyAbsSyn ) -> ([GadtDecl L])
-happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut135 #-}
-happyIn136 :: (([QualConDecl L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn136 #-}
-happyOut136 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],Maybe L))
-happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut136 #-}
-happyIn137 :: (([QualConDecl L],[S],L)) -> (HappyAbsSyn )
-happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn137 #-}
-happyOut137 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],L))
-happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut137 #-}
-happyIn138 :: (QualConDecl L) -> (HappyAbsSyn )
-happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn138 #-}
-happyOut138 :: (HappyAbsSyn ) -> (QualConDecl L)
-happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut138 #-}
-happyIn139 :: ((Maybe [TyVarBind L], [S], Maybe L)) -> (HappyAbsSyn )
-happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn139 #-}
-happyOut139 :: (HappyAbsSyn ) -> ((Maybe [TyVarBind L], [S], Maybe L))
-happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut139 #-}
-happyIn140 :: (ConDecl L) -> (HappyAbsSyn )
-happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn140 #-}
-happyOut140 :: (HappyAbsSyn ) -> (ConDecl L)
-happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut140 #-}
-happyIn141 :: ((Name L, [Type L], L)) -> (HappyAbsSyn )
-happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn141 #-}
-happyOut141 :: (HappyAbsSyn ) -> ((Name L, [Type L], L))
-happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut141 #-}
-happyIn142 :: (([FieldDecl L],[S])) -> (HappyAbsSyn )
-happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn142 #-}
-happyOut142 :: (HappyAbsSyn ) -> (([FieldDecl L],[S]))
-happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut142 #-}
-happyIn143 :: (FieldDecl L) -> (HappyAbsSyn )
-happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn143 #-}
-happyOut143 :: (HappyAbsSyn ) -> (FieldDecl L)
-happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut143 #-}
-happyIn144 :: ([Deriving L]) -> (HappyAbsSyn )
-happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn144 #-}
-happyOut144 :: (HappyAbsSyn ) -> ([Deriving L])
-happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut144 #-}
-happyIn145 :: ([Deriving L]) -> (HappyAbsSyn )
-happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn145 #-}
-happyOut145 :: (HappyAbsSyn ) -> ([Deriving L])
-happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut145 #-}
-happyIn146 :: (Deriving L) -> (HappyAbsSyn )
-happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn146 #-}
-happyOut146 :: (HappyAbsSyn ) -> (Deriving L)
-happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut146 #-}
-happyIn147 :: (([InstRule L],[S])) -> (HappyAbsSyn )
-happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn147 #-}
-happyOut147 :: (HappyAbsSyn ) -> (([InstRule L],[S]))
-happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut147 #-}
-happyIn148 :: (InstHead L) -> (HappyAbsSyn )
-happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn148 #-}
-happyOut148 :: (HappyAbsSyn ) -> (InstHead L)
-happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut148 #-}
-happyIn149 :: (Kind L) -> (HappyAbsSyn )
-happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn149 #-}
-happyOut149 :: (HappyAbsSyn ) -> (Kind L)
-happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut149 #-}
-happyIn150 :: (Kind L) -> (HappyAbsSyn )
-happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn150 #-}
-happyOut150 :: (HappyAbsSyn ) -> (Kind L)
-happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut150 #-}
-happyIn151 :: (Kind L) -> (HappyAbsSyn )
-happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn151 #-}
-happyOut151 :: (HappyAbsSyn ) -> (Kind L)
-happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut151 #-}
-happyIn152 :: (Kind L) -> (HappyAbsSyn )
-happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn152 #-}
-happyOut152 :: (HappyAbsSyn ) -> (Kind L)
-happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut152 #-}
-happyIn153 :: (Kind L) -> (HappyAbsSyn )
-happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn153 #-}
-happyOut153 :: (HappyAbsSyn ) -> (Kind L)
-happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut153 #-}
-happyIn154 :: (([Kind L], [S])) -> (HappyAbsSyn )
-happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn154 #-}
-happyOut154 :: (HappyAbsSyn ) -> (([Kind L], [S]))
-happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut154 #-}
-happyIn155 :: ((Maybe (Kind L), [S])) -> (HappyAbsSyn )
-happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn155 #-}
-happyOut155 :: (HappyAbsSyn ) -> ((Maybe (Kind L), [S]))
-happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut155 #-}
-happyIn156 :: (Maybe ( S, QName L )) -> (HappyAbsSyn )
-happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn156 #-}
-happyOut156 :: (HappyAbsSyn ) -> (Maybe ( S, QName L ))
-happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut156 #-}
-happyIn157 :: ((Maybe [ClassDecl L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn157 #-}
-happyOut157 :: (HappyAbsSyn ) -> ((Maybe [ClassDecl L],[S],Maybe L))
-happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut157 #-}
-happyIn158 :: (([ClassDecl L],[S])) -> (HappyAbsSyn )
-happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn158 #-}
-happyOut158 :: (HappyAbsSyn ) -> (([ClassDecl L],[S]))
-happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut158 #-}
-happyIn159 :: (([ClassDecl L],[S])) -> (HappyAbsSyn )
-happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn159 #-}
-happyOut159 :: (HappyAbsSyn ) -> (([ClassDecl L],[S]))
-happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut159 #-}
-happyIn160 :: (ClassDecl L) -> (HappyAbsSyn )
-happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn160 #-}
-happyOut160 :: (HappyAbsSyn ) -> (ClassDecl L)
-happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut160 #-}
-happyIn161 :: ([S]) -> (HappyAbsSyn )
-happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn161 #-}
-happyOut161 :: (HappyAbsSyn ) -> ([S])
-happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut161 #-}
-happyIn162 :: (ClassDecl L) -> (HappyAbsSyn )
-happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn162 #-}
-happyOut162 :: (HappyAbsSyn ) -> (ClassDecl L)
-happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut162 #-}
-happyIn163 :: ((Maybe [InstDecl L],[S],Maybe L)) -> (HappyAbsSyn )
-happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn163 #-}
-happyOut163 :: (HappyAbsSyn ) -> ((Maybe [InstDecl L],[S],Maybe L))
-happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut163 #-}
-happyIn164 :: (([InstDecl L],[S])) -> (HappyAbsSyn )
-happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn164 #-}
-happyOut164 :: (HappyAbsSyn ) -> (([InstDecl L],[S]))
-happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut164 #-}
-happyIn165 :: (([InstDecl L],[S])) -> (HappyAbsSyn )
-happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn165 #-}
-happyOut165 :: (HappyAbsSyn ) -> (([InstDecl L],[S]))
-happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut165 #-}
-happyIn166 :: (InstDecl L) -> (HappyAbsSyn )
-happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn166 #-}
-happyOut166 :: (HappyAbsSyn ) -> (InstDecl L)
-happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut166 #-}
-happyIn167 :: (InstDecl L) -> (HappyAbsSyn )
-happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn167 #-}
-happyOut167 :: (HappyAbsSyn ) -> (InstDecl L)
-happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut167 #-}
-happyIn168 :: (Decl L) -> (HappyAbsSyn )
-happyIn168 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn168 #-}
-happyOut168 :: (HappyAbsSyn ) -> (Decl L)
-happyOut168 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut168 #-}
-happyIn169 :: ((Maybe (Binds L),[S])) -> (HappyAbsSyn )
-happyIn169 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn169 #-}
-happyOut169 :: (HappyAbsSyn ) -> ((Maybe (Binds L),[S]))
-happyOut169 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut169 #-}
-happyIn170 :: ((Maybe (Type L, S))) -> (HappyAbsSyn )
-happyIn170 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn170 #-}
-happyOut170 :: (HappyAbsSyn ) -> ((Maybe (Type L, S)))
-happyOut170 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut170 #-}
-happyIn171 :: (Rhs L) -> (HappyAbsSyn )
-happyIn171 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn171 #-}
-happyOut171 :: (HappyAbsSyn ) -> (Rhs L)
-happyOut171 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut171 #-}
-happyIn172 :: (([GuardedRhs L],L)) -> (HappyAbsSyn )
-happyIn172 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn172 #-}
-happyOut172 :: (HappyAbsSyn ) -> (([GuardedRhs L],L))
-happyOut172 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut172 #-}
-happyIn173 :: (GuardedRhs L) -> (HappyAbsSyn )
-happyIn173 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn173 #-}
-happyOut173 :: (HappyAbsSyn ) -> (GuardedRhs L)
-happyOut173 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut173 #-}
-happyIn174 :: (Exp L) -> (HappyAbsSyn )
-happyIn174 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn174 #-}
-happyOut174 :: (HappyAbsSyn ) -> (Exp L)
-happyOut174 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut174 #-}
-happyIn175 :: (PExp L) -> (HappyAbsSyn )
-happyIn175 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn175 #-}
-happyOut175 :: (HappyAbsSyn ) -> (PExp L)
-happyOut175 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut175 #-}
-happyIn176 :: (PExp L) -> (HappyAbsSyn )
-happyIn176 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn176 #-}
-happyOut176 :: (HappyAbsSyn ) -> (PExp L)
-happyOut176 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut176 #-}
-happyIn177 :: (PExp L) -> (HappyAbsSyn )
-happyIn177 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn177 #-}
-happyOut177 :: (HappyAbsSyn ) -> (PExp L)
-happyOut177 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut177 #-}
-happyIn178 :: (PExp L) -> (HappyAbsSyn )
-happyIn178 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn178 #-}
-happyOut178 :: (HappyAbsSyn ) -> (PExp L)
-happyOut178 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut178 #-}
-happyIn179 :: (PExp L) -> (HappyAbsSyn )
-happyIn179 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn179 #-}
-happyOut179 :: (HappyAbsSyn ) -> (PExp L)
-happyOut179 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut179 #-}
-happyIn180 :: ([S]) -> (HappyAbsSyn )
-happyIn180 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn180 #-}
-happyOut180 :: (HappyAbsSyn ) -> ([S])
-happyOut180 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut180 #-}
-happyIn181 :: ([S]) -> (HappyAbsSyn )
-happyIn181 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn181 #-}
-happyOut181 :: (HappyAbsSyn ) -> ([S])
-happyOut181 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut181 #-}
-happyIn182 :: (PExp L) -> (HappyAbsSyn )
-happyIn182 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn182 #-}
-happyOut182 :: (HappyAbsSyn ) -> (PExp L)
-happyOut182 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut182 #-}
-happyIn183 :: (PExp L) -> (HappyAbsSyn )
-happyIn183 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn183 #-}
-happyOut183 :: (HappyAbsSyn ) -> (PExp L)
-happyOut183 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut183 #-}
-happyIn184 :: (PExp L) -> (HappyAbsSyn )
-happyIn184 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn184 #-}
-happyOut184 :: (HappyAbsSyn ) -> (PExp L)
-happyOut184 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut184 #-}
-happyIn185 :: ([Pat L]) -> (HappyAbsSyn )
-happyIn185 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn185 #-}
-happyOut185 :: (HappyAbsSyn ) -> ([Pat L])
-happyOut185 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut185 #-}
-happyIn186 :: (Pat L) -> (HappyAbsSyn )
-happyIn186 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn186 #-}
-happyOut186 :: (HappyAbsSyn ) -> (Pat L)
-happyOut186 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut186 #-}
-happyIn187 :: (PExp L) -> (HappyAbsSyn )
-happyIn187 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn187 #-}
-happyOut187 :: (HappyAbsSyn ) -> (PExp L)
-happyOut187 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut187 #-}
-happyIn188 :: (PExp L) -> (HappyAbsSyn )
-happyIn188 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn188 #-}
-happyOut188 :: (HappyAbsSyn ) -> (PExp L)
-happyOut188 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut188 #-}
-happyIn189 :: (PExp L) -> (HappyAbsSyn )
-happyIn189 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn189 #-}
-happyOut189 :: (HappyAbsSyn ) -> (PExp L)
-happyOut189 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut189 #-}
-happyIn190 :: (([S], SumOrTuple L)) -> (HappyAbsSyn )
-happyIn190 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn190 #-}
-happyOut190 :: (HappyAbsSyn ) -> (([S], SumOrTuple L))
-happyOut190 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut190 #-}
-happyIn191 :: (([S], [Maybe (PExp L)])) -> (HappyAbsSyn )
-happyIn191 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn191 #-}
-happyOut191 :: (HappyAbsSyn ) -> (([S], [Maybe (PExp L)]))
-happyOut191 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut191 #-}
-happyIn192 :: (([S], [Maybe (PExp L)])) -> (HappyAbsSyn )
-happyIn192 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn192 #-}
-happyOut192 :: (HappyAbsSyn ) -> (([S], [Maybe (PExp L)]))
-happyOut192 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut192 #-}
-happyIn193 :: ([S]) -> (HappyAbsSyn )
-happyIn193 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn193 #-}
-happyOut193 :: (HappyAbsSyn ) -> ([S])
-happyOut193 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut193 #-}
-happyIn194 :: ([S]) -> (HappyAbsSyn )
-happyIn194 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn194 #-}
-happyOut194 :: (HappyAbsSyn ) -> ([S])
-happyOut194 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut194 #-}
-happyIn195 :: ([S]) -> (HappyAbsSyn )
-happyIn195 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn195 #-}
-happyOut195 :: (HappyAbsSyn ) -> ([S])
-happyOut195 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut195 #-}
-happyIn196 :: (PExp L) -> (HappyAbsSyn )
-happyIn196 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn196 #-}
-happyOut196 :: (HappyAbsSyn ) -> (PExp L)
-happyOut196 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut196 #-}
-happyIn197 :: (([PExp L],[S])) -> (HappyAbsSyn )
-happyIn197 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn197 #-}
-happyOut197 :: (HappyAbsSyn ) -> (([PExp L],[S]))
-happyOut197 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut197 #-}
-happyIn198 :: (PExp L) -> (HappyAbsSyn )
-happyIn198 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn198 #-}
-happyOut198 :: (HappyAbsSyn ) -> (PExp L)
-happyOut198 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut198 #-}
-happyIn199 :: (PExp L) -> (HappyAbsSyn )
-happyIn199 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn199 #-}
-happyOut199 :: (HappyAbsSyn ) -> (PExp L)
-happyOut199 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut199 #-}
-happyIn200 :: ([PExp L]) -> (HappyAbsSyn )
-happyIn200 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn200 #-}
-happyOut200 :: (HappyAbsSyn ) -> ([PExp L])
-happyOut200 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut200 #-}
-happyIn201 :: (PExp L) -> (HappyAbsSyn )
-happyIn201 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn201 #-}
-happyOut201 :: (HappyAbsSyn ) -> (PExp L)
-happyOut201 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut201 #-}
-happyIn202 :: (XName L) -> (HappyAbsSyn )
-happyIn202 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn202 #-}
-happyOut202 :: (HappyAbsSyn ) -> (XName L)
-happyOut202 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut202 #-}
-happyIn203 :: (Loc String) -> (HappyAbsSyn )
-happyIn203 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn203 #-}
-happyOut203 :: (HappyAbsSyn ) -> (Loc String)
-happyOut203 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut203 #-}
-happyIn204 :: (Loc String) -> (HappyAbsSyn )
-happyIn204 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn204 #-}
-happyOut204 :: (HappyAbsSyn ) -> (Loc String)
-happyOut204 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut204 #-}
-happyIn205 :: ([ParseXAttr L]) -> (HappyAbsSyn )
-happyIn205 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn205 #-}
-happyOut205 :: (HappyAbsSyn ) -> ([ParseXAttr L])
-happyOut205 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut205 #-}
-happyIn206 :: (ParseXAttr L) -> (HappyAbsSyn )
-happyIn206 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn206 #-}
-happyOut206 :: (HappyAbsSyn ) -> (ParseXAttr L)
-happyOut206 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut206 #-}
-happyIn207 :: (Maybe (PExp L)) -> (HappyAbsSyn )
-happyIn207 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn207 #-}
-happyOut207 :: (HappyAbsSyn ) -> (Maybe (PExp L))
-happyOut207 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut207 #-}
-happyIn208 :: (L -> PExp L) -> (HappyAbsSyn )
-happyIn208 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn208 #-}
-happyOut208 :: (HappyAbsSyn ) -> (L -> PExp L)
-happyOut208 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut208 #-}
-happyIn209 :: (([PExp L],[S])) -> (HappyAbsSyn )
-happyIn209 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn209 #-}
-happyOut209 :: (HappyAbsSyn ) -> (([PExp L],[S]))
-happyOut209 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut209 #-}
-happyIn210 :: (([[QualStmt L]],[S])) -> (HappyAbsSyn )
-happyIn210 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn210 #-}
-happyOut210 :: (HappyAbsSyn ) -> (([[QualStmt L]],[S]))
-happyOut210 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut210 #-}
-happyIn211 :: (([QualStmt L],[S])) -> (HappyAbsSyn )
-happyIn211 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn211 #-}
-happyOut211 :: (HappyAbsSyn ) -> (([QualStmt L],[S]))
-happyOut211 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut211 #-}
-happyIn212 :: (QualStmt L) -> (HappyAbsSyn )
-happyIn212 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn212 #-}
-happyOut212 :: (HappyAbsSyn ) -> (QualStmt L)
-happyOut212 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut212 #-}
-happyIn213 :: (QualStmt L) -> (HappyAbsSyn )
-happyIn213 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn213 #-}
-happyOut213 :: (HappyAbsSyn ) -> (QualStmt L)
-happyOut213 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut213 #-}
-happyIn214 :: (([Stmt L],[S])) -> (HappyAbsSyn )
-happyIn214 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn214 #-}
-happyOut214 :: (HappyAbsSyn ) -> (([Stmt L],[S]))
-happyOut214 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut214 #-}
-happyIn215 :: (Stmt L) -> (HappyAbsSyn )
-happyIn215 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn215 #-}
-happyOut215 :: (HappyAbsSyn ) -> (Stmt L)
-happyOut215 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut215 #-}
-happyIn216 :: (L -> PExp L) -> (HappyAbsSyn )
-happyIn216 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn216 #-}
-happyOut216 :: (HappyAbsSyn ) -> (L -> PExp L)
-happyOut216 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut216 #-}
-happyIn217 :: (([Alt L],L,[S])) -> (HappyAbsSyn )
-happyIn217 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn217 #-}
-happyOut217 :: (HappyAbsSyn ) -> (([Alt L],L,[S]))
-happyOut217 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut217 #-}
-happyIn218 :: (([Alt L],[S])) -> (HappyAbsSyn )
-happyIn218 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn218 #-}
-happyOut218 :: (HappyAbsSyn ) -> (([Alt L],[S]))
-happyOut218 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut218 #-}
-happyIn219 :: (([Alt L],[S])) -> (HappyAbsSyn )
-happyIn219 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn219 #-}
-happyOut219 :: (HappyAbsSyn ) -> (([Alt L],[S]))
-happyOut219 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut219 #-}
-happyIn220 :: (Alt L) -> (HappyAbsSyn )
-happyIn220 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn220 #-}
-happyOut220 :: (HappyAbsSyn ) -> (Alt L)
-happyOut220 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut220 #-}
-happyIn221 :: (Rhs L) -> (HappyAbsSyn )
-happyIn221 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn221 #-}
-happyOut221 :: (HappyAbsSyn ) -> (Rhs L)
-happyOut221 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut221 #-}
-happyIn222 :: (([GuardedRhs L],L)) -> (HappyAbsSyn )
-happyIn222 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn222 #-}
-happyOut222 :: (HappyAbsSyn ) -> (([GuardedRhs L],L))
-happyOut222 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut222 #-}
-happyIn223 :: (GuardedRhs L) -> (HappyAbsSyn )
-happyIn223 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn223 #-}
-happyOut223 :: (HappyAbsSyn ) -> (GuardedRhs L)
-happyOut223 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut223 #-}
-happyIn224 :: (Pat L) -> (HappyAbsSyn )
-happyIn224 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn224 #-}
-happyOut224 :: (HappyAbsSyn ) -> (Pat L)
-happyOut224 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut224 #-}
-happyIn225 :: (([GuardedRhs L], L, [S])) -> (HappyAbsSyn )
-happyIn225 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn225 #-}
-happyOut225 :: (HappyAbsSyn ) -> (([GuardedRhs L], L, [S]))
-happyOut225 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut225 #-}
-happyIn226 :: (([GuardedRhs L], [S])) -> (HappyAbsSyn )
-happyIn226 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn226 #-}
-happyOut226 :: (HappyAbsSyn ) -> (([GuardedRhs L], [S]))
-happyOut226 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut226 #-}
-happyIn227 :: (([GuardedRhs L], [S])) -> (HappyAbsSyn )
-happyIn227 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn227 #-}
-happyOut227 :: (HappyAbsSyn ) -> (([GuardedRhs L], [S]))
-happyOut227 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut227 #-}
-happyIn228 :: (([Stmt L],L,[S])) -> (HappyAbsSyn )
-happyIn228 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn228 #-}
-happyOut228 :: (HappyAbsSyn ) -> (([Stmt L],L,[S]))
-happyOut228 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut228 #-}
-happyIn229 :: (([Stmt L],[S])) -> (HappyAbsSyn )
-happyIn229 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn229 #-}
-happyOut229 :: (HappyAbsSyn ) -> (([Stmt L],[S]))
-happyOut229 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut229 #-}
-happyIn230 :: (([Stmt L],[S])) -> (HappyAbsSyn )
-happyIn230 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn230 #-}
-happyOut230 :: (HappyAbsSyn ) -> (([Stmt L],[S]))
-happyOut230 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut230 #-}
-happyIn231 :: (Stmt L) -> (HappyAbsSyn )
-happyIn231 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn231 #-}
-happyOut231 :: (HappyAbsSyn ) -> (Stmt L)
-happyOut231 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut231 #-}
-happyIn232 :: (([PFieldUpdate L],[S])) -> (HappyAbsSyn )
-happyIn232 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn232 #-}
-happyOut232 :: (HappyAbsSyn ) -> (([PFieldUpdate L],[S]))
-happyOut232 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut232 #-}
-happyIn233 :: (PFieldUpdate L) -> (HappyAbsSyn )
-happyIn233 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn233 #-}
-happyOut233 :: (HappyAbsSyn ) -> (PFieldUpdate L)
-happyOut233 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut233 #-}
-happyIn234 :: (([IPBind L],[S])) -> (HappyAbsSyn )
-happyIn234 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn234 #-}
-happyOut234 :: (HappyAbsSyn ) -> (([IPBind L],[S]))
-happyOut234 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut234 #-}
-happyIn235 :: (([IPBind L],[S])) -> (HappyAbsSyn )
-happyIn235 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn235 #-}
-happyOut235 :: (HappyAbsSyn ) -> (([IPBind L],[S]))
-happyOut235 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut235 #-}
-happyIn236 :: (IPBind L) -> (HappyAbsSyn )
-happyIn236 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn236 #-}
-happyOut236 :: (HappyAbsSyn ) -> (IPBind L)
-happyOut236 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut236 #-}
-happyIn237 :: (PExp L) -> (HappyAbsSyn )
-happyIn237 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn237 #-}
-happyOut237 :: (HappyAbsSyn ) -> (PExp L)
-happyOut237 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut237 #-}
-happyIn238 :: (PExp L) -> (HappyAbsSyn )
-happyIn238 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn238 #-}
-happyOut238 :: (HappyAbsSyn ) -> (PExp L)
-happyOut238 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut238 #-}
-happyIn239 :: (PExp L) -> (HappyAbsSyn )
-happyIn239 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn239 #-}
-happyOut239 :: (HappyAbsSyn ) -> (PExp L)
-happyOut239 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut239 #-}
-happyIn240 :: (PExp L) -> (HappyAbsSyn )
-happyIn240 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn240 #-}
-happyOut240 :: (HappyAbsSyn ) -> (PExp L)
-happyOut240 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut240 #-}
-happyIn241 :: (Name L) -> (HappyAbsSyn )
-happyIn241 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn241 #-}
-happyOut241 :: (HappyAbsSyn ) -> (Name L)
-happyOut241 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut241 #-}
-happyIn242 :: (Name L) -> (HappyAbsSyn )
-happyIn242 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn242 #-}
-happyOut242 :: (HappyAbsSyn ) -> (Name L)
-happyOut242 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut242 #-}
-happyIn243 :: (QName L) -> (HappyAbsSyn )
-happyIn243 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn243 #-}
-happyOut243 :: (HappyAbsSyn ) -> (QName L)
-happyOut243 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut243 #-}
-happyIn244 :: (IPName L) -> (HappyAbsSyn )
-happyIn244 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn244 #-}
-happyOut244 :: (HappyAbsSyn ) -> (IPName L)
-happyOut244 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut244 #-}
-happyIn245 :: (Name L) -> (HappyAbsSyn )
-happyIn245 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn245 #-}
-happyOut245 :: (HappyAbsSyn ) -> (Name L)
-happyOut245 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut245 #-}
-happyIn246 :: (([S], [Name L])) -> (HappyAbsSyn )
-happyIn246 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn246 #-}
-happyOut246 :: (HappyAbsSyn ) -> (([S], [Name L]))
-happyOut246 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut246 #-}
-happyIn247 :: (QName L) -> (HappyAbsSyn )
-happyIn247 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn247 #-}
-happyOut247 :: (HappyAbsSyn ) -> (QName L)
-happyOut247 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut247 #-}
-happyIn248 :: (Name L) -> (HappyAbsSyn )
-happyIn248 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn248 #-}
-happyOut248 :: (HappyAbsSyn ) -> (Name L)
-happyOut248 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut248 #-}
-happyIn249 :: (QName L) -> (HappyAbsSyn )
-happyIn249 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn249 #-}
-happyOut249 :: (HappyAbsSyn ) -> (QName L)
-happyOut249 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut249 #-}
-happyIn250 :: (QName L) -> (HappyAbsSyn )
-happyIn250 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn250 #-}
-happyOut250 :: (HappyAbsSyn ) -> (QName L)
-happyOut250 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut250 #-}
-happyIn251 :: (Name L) -> (HappyAbsSyn )
-happyIn251 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn251 #-}
-happyOut251 :: (HappyAbsSyn ) -> (Name L)
-happyOut251 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut251 #-}
-happyIn252 :: (QName L) -> (HappyAbsSyn )
-happyIn252 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn252 #-}
-happyOut252 :: (HappyAbsSyn ) -> (QName L)
-happyOut252 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut252 #-}
-happyIn253 :: (Op L) -> (HappyAbsSyn )
-happyIn253 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn253 #-}
-happyOut253 :: (HappyAbsSyn ) -> (Op L)
-happyOut253 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut253 #-}
-happyIn254 :: (QOp L) -> (HappyAbsSyn )
-happyIn254 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn254 #-}
-happyOut254 :: (HappyAbsSyn ) -> (QOp L)
-happyOut254 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut254 #-}
-happyIn255 :: (QOp L) -> (HappyAbsSyn )
-happyIn255 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn255 #-}
-happyOut255 :: (HappyAbsSyn ) -> (QOp L)
-happyOut255 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut255 #-}
-happyIn256 :: (QName L) -> (HappyAbsSyn )
-happyIn256 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn256 #-}
-happyOut256 :: (HappyAbsSyn ) -> (QName L)
-happyOut256 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut256 #-}
-happyIn257 :: (PExp L) -> (HappyAbsSyn )
-happyIn257 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn257 #-}
-happyOut257 :: (HappyAbsSyn ) -> (PExp L)
-happyOut257 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut257 #-}
-happyIn258 :: (QName L) -> (HappyAbsSyn )
-happyIn258 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn258 #-}
-happyOut258 :: (HappyAbsSyn ) -> (QName L)
-happyOut258 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut258 #-}
-happyIn259 :: (Name L) -> (HappyAbsSyn )
-happyIn259 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn259 #-}
-happyOut259 :: (HappyAbsSyn ) -> (Name L)
-happyOut259 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut259 #-}
-happyIn260 :: (Name L) -> (HappyAbsSyn )
-happyIn260 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn260 #-}
-happyOut260 :: (HappyAbsSyn ) -> (Name L)
-happyOut260 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut260 #-}
-happyIn261 :: (IPName L) -> (HappyAbsSyn )
-happyIn261 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn261 #-}
-happyOut261 :: (HappyAbsSyn ) -> (IPName L)
-happyOut261 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut261 #-}
-happyIn262 :: (QName L) -> (HappyAbsSyn )
-happyIn262 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn262 #-}
-happyOut262 :: (HappyAbsSyn ) -> (QName L)
-happyOut262 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut262 #-}
-happyIn263 :: (Name L) -> (HappyAbsSyn )
-happyIn263 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn263 #-}
-happyOut263 :: (HappyAbsSyn ) -> (Name L)
-happyOut263 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut263 #-}
-happyIn264 :: (QName L) -> (HappyAbsSyn )
-happyIn264 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn264 #-}
-happyOut264 :: (HappyAbsSyn ) -> (QName L)
-happyOut264 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut264 #-}
-happyIn265 :: (Name L) -> (HappyAbsSyn )
-happyIn265 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn265 #-}
-happyOut265 :: (HappyAbsSyn ) -> (Name L)
-happyOut265 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut265 #-}
-happyIn266 :: (QName L) -> (HappyAbsSyn )
-happyIn266 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn266 #-}
-happyOut266 :: (HappyAbsSyn ) -> (QName L)
-happyOut266 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut266 #-}
-happyIn267 :: (QName L) -> (HappyAbsSyn )
-happyIn267 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn267 #-}
-happyOut267 :: (HappyAbsSyn ) -> (QName L)
-happyOut267 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut267 #-}
-happyIn268 :: (Name L) -> (HappyAbsSyn )
-happyIn268 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn268 #-}
-happyOut268 :: (HappyAbsSyn ) -> (Name L)
-happyOut268 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut268 #-}
-happyIn269 :: (Name L) -> (HappyAbsSyn )
-happyIn269 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn269 #-}
-happyOut269 :: (HappyAbsSyn ) -> (Name L)
-happyOut269 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut269 #-}
-happyIn270 :: (QName L) -> (HappyAbsSyn )
-happyIn270 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn270 #-}
-happyOut270 :: (HappyAbsSyn ) -> (QName L)
-happyOut270 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut270 #-}
-happyIn271 :: (Literal L) -> (HappyAbsSyn )
-happyIn271 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn271 #-}
-happyOut271 :: (HappyAbsSyn ) -> (Literal L)
-happyOut271 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut271 #-}
-happyIn272 :: (S) -> (HappyAbsSyn )
-happyIn272 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn272 #-}
-happyOut272 :: (HappyAbsSyn ) -> (S)
-happyOut272 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut272 #-}
-happyIn273 :: (S) -> (HappyAbsSyn )
-happyIn273 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn273 #-}
-happyOut273 :: (HappyAbsSyn ) -> (S)
-happyOut273 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut273 #-}
-happyIn274 :: (Decl L) -> (HappyAbsSyn )
-happyIn274 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn274 #-}
-happyOut274 :: (HappyAbsSyn ) -> (Decl L)
-happyOut274 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut274 #-}
-happyIn275 :: (Decl L) -> (HappyAbsSyn )
-happyIn275 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn275 #-}
-happyOut275 :: (HappyAbsSyn ) -> (Decl L)
-happyOut275 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut275 #-}
-happyIn276 :: (Pat L) -> (HappyAbsSyn )
-happyIn276 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn276 #-}
-happyOut276 :: (HappyAbsSyn ) -> (Pat L)
-happyOut276 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut276 #-}
-happyIn277 :: ([Pat L]) -> (HappyAbsSyn )
-happyIn277 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn277 #-}
-happyOut277 :: (HappyAbsSyn ) -> ([Pat L])
-happyOut277 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut277 #-}
-happyIn278 :: (([S], [Name L])) -> (HappyAbsSyn )
-happyIn278 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn278 #-}
-happyOut278 :: (HappyAbsSyn ) -> (([S], [Name L]))
-happyOut278 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut278 #-}
-happyIn279 :: (PatternSynDirection L) -> (HappyAbsSyn )
-happyIn279 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn279 #-}
-happyOut279 :: (HappyAbsSyn ) -> (PatternSynDirection L)
-happyOut279 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut279 #-}
-happyIn280 :: (Decl L) -> (HappyAbsSyn )
-happyIn280 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn280 #-}
-happyOut280 :: (HappyAbsSyn ) -> (Decl L)
-happyOut280 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut280 #-}
-happyIn281 :: ((Maybe [TyVarBind L], [S], Maybe (Context L), Maybe (Context L), Type L )) -> (HappyAbsSyn )
-happyIn281 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn281 #-}
-happyOut281 :: (HappyAbsSyn ) -> ((Maybe [TyVarBind L], [S], Maybe (Context L), Maybe (Context L), Type L ))
-happyOut281 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut281 #-}
-happyIn282 :: (Maybe (DerivStrategy L)) -> (HappyAbsSyn )
-happyIn282 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn282 #-}
-happyOut282 :: (HappyAbsSyn ) -> (Maybe (DerivStrategy L))
-happyOut282 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut282 #-}
-happyIn283 :: (ModuleName L) -> (HappyAbsSyn )
-happyIn283 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn283 #-}
-happyOut283 :: (HappyAbsSyn ) -> (ModuleName L)
-happyOut283 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut283 #-}
-happyIn284 :: (Name L) -> (HappyAbsSyn )
-happyIn284 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn284 #-}
-happyOut284 :: (HappyAbsSyn ) -> (Name L)
-happyOut284 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut284 #-}
-happyIn285 :: (QName L) -> (HappyAbsSyn )
-happyIn285 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn285 #-}
-happyOut285 :: (HappyAbsSyn ) -> (QName L)
-happyOut285 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut285 #-}
-happyIn286 :: (Name L) -> (HappyAbsSyn )
-happyIn286 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn286 #-}
-happyOut286 :: (HappyAbsSyn ) -> (Name L)
-happyOut286 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut286 #-}
-happyIn287 :: (Name L) -> (HappyAbsSyn )
-happyIn287 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn287 #-}
-happyOut287 :: (HappyAbsSyn ) -> (Name L)
-happyOut287 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut287 #-}
-happyIn288 :: (QName L) -> (HappyAbsSyn )
-happyIn288 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn288 #-}
-happyOut288 :: (HappyAbsSyn ) -> (QName L)
-happyOut288 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut288 #-}
-happyIn289 :: (Name L) -> (HappyAbsSyn )
-happyIn289 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn289 #-}
-happyOut289 :: (HappyAbsSyn ) -> (Name L)
-happyOut289 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut289 #-}
-happyIn290 :: (([ImportDecl L],[S],L)) -> (HappyAbsSyn )
-happyIn290 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn290 #-}
-happyOut290 :: (HappyAbsSyn ) -> (([ImportDecl L],[S],L))
-happyOut290 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut290 #-}
-happyIn291 :: ((([ModulePragma L], [S], L), Maybe (ModuleName L))) -> (HappyAbsSyn )
-happyIn291 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn291 #-}
-happyOut291 :: (HappyAbsSyn ) -> ((([ModulePragma L], [S], L), Maybe (ModuleName L)))
-happyOut291 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut291 #-}
-happyIn292 :: ((([ModulePragma L], [S], L), Maybe (ModuleHead L))) -> (HappyAbsSyn )
-happyIn292 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn292 #-}
-happyOut292 :: (HappyAbsSyn ) -> ((([ModulePragma L], [S], L), Maybe (ModuleHead L)))
-happyOut292 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut292 #-}
-happyIn293 :: ((([ModulePragma L], [S], L), Maybe (ModuleHead L), Maybe ([ImportDecl L],[S],L))) -> (HappyAbsSyn )
-happyIn293 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn293 #-}
-happyOut293 :: (HappyAbsSyn ) -> ((([ModulePragma L], [S], L), Maybe (ModuleHead L), Maybe ([ImportDecl L],[S],L)))
-happyOut293 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut293 #-}
-happyInTok :: (Loc Token) -> (HappyAbsSyn )
-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn ) -> (Loc 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\x00\x00\x00\x00\x00\x00\x00\x00\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\x1f\xfc\x5f\x50\x02\x61\x81\xfc\xae\x81\xff\x5f\x68\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3f\xf8\xbf\xa0\x04\xc2\x06\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\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\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\xf2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x0a\x00\x40\x06\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\xfc\xc1\xff\x05\x25\x10\x36\xc8\xef\x1a\xf8\xff\x85\x36\x30\x86\x0d\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x00\x00\x00\x00\x00\x00\x0f\x00\x00\xb0\x01\xfc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x07\xff\x17\x94\x00\x18\x20\xbf\x6b\xe0\xff\x07\x58\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xfd\xff\x07\xf5\x32\x76\xc8\xef\x1a\xf8\xff\x85\x36\x30\x82\x0d\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xfb\xff\x1b\xea\x65\xec\x90\xdf\x35\xf0\xff\x0b\x6d\x60\x04\x1b\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xf7\xff\x17\x9c\x4b\xd8\x21\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\xe0\xef\xff\x2f\x28\x97\xb0\x43\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\x80\x3f\xf8\xbf\xa0\x04\xc0\x04\xf9\x5d\x03\xff\xbf\xc0\x02\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x00\x04\x00\x20\x03\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\xfe\xe0\xff\x82\x12\x00\x03\xe4\x77\x0d\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xc1\xff\x05\x25\x00\x06\xc8\xef\x1a\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x83\xff\x0b\x4a\x00\x0c\x90\xdf\x35\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x07\xff\x17\x94\x40\x58\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\xc0\x1f\xfc\x5f\x50\x02\x61\x81\xfc\xae\x81\xff\x5f\x68\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\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\x7f\xf0\x7f\x41\x09\x84\x05\xf2\xbb\x06\xfe\x7f\xa1\x0d\x8c\x60\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x0a\x00\x40\x06\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\x28\x03\x00\x02\x40\x00\x00\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x06\x00\x14\x04\x00\x00\x00\x00\x00\xe0\xfd\x07\x40\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x28\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\xff\xff\xff\xff\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\x80\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\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\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\xf0\x07\xff\x97\x94\x40\x58\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x3f\xf8\xbf\xa0\x04\xc0\x04\xf9\x5d\x03\xff\x3f\xc0\x02\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x84\x6d\x02\x05\x65\x02\x7c\xc0\xa0\x00\x78\xff\x01\x10\x00\x80\x0c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x0c\x12\x28\x28\x01\x20\x01\x06\x05\xc0\xfb\x0f\x80\x00\x00\x64\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x07\x09\x14\x94\x00\x90\x00\x83\x02\xe0\xfd\x07\x50\x00\x00\x32\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xf7\x09\x1c\xd4\x0a\xd2\x01\x83\x02\xe0\xfd\x07\x50\x00\x00\x32\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\x20\x0f\x12\x68\xa8\x01\x20\x01\x06\x05\xc0\xfb\x0f\xa0\x00\x00\x64\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\x40\x1e\x24\x50\x70\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x40\x01\x00\xc8\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\x80\x3c\x48\xa0\xa0\x04\x80\x04\x18\x14\x00\xef\x3f\x00\x02\x00\x90\x01\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x07\xff\x17\x94\x40\x58\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\x0c\x00\x28\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\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\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\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\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\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\x84\x02\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\xf8\x83\xff\x2b\x4a\x20\x6c\x90\xdf\x35\xf8\xff\xfb\xed\x7e\x25\xff\xfd\x30\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\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\x80\x00\x00\x20\x00\x10\x00\x00\x00\x00\x00\xef\x3f\x00\x02\x00\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xd3\x04\x0e\x6a\x04\x48\x80\x41\x01\xf0\xfe\x03\x28\x00\x00\x19\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\x20\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\x20\x0f\x12\x28\x38\x01\x20\x01\x06\x05\xc0\xfb\x0f\xa0\x00\x00\x64\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x9b\x40\x41\x99\x00\x1d\x30\x28\x00\xde\x7f\x00\x04\x00\x20\x03\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x02\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\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\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\x20\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xc2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x08\x00\x40\x06\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x18\x24\x50\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x00\x01\x00\xc8\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x08\x00\x40\x06\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x06\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xfd\x07\x40\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x0f\x12\x28\x28\x01\x20\x01\x06\x05\xc0\xfb\x0f\xa0\x00\x00\x64\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x14\x80\x82\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\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\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\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\xc0\x1f\xfc\x5f\x51\x02\x61\x83\xfc\xae\x81\xff\x5f\x68\x03\x63\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3f\xf8\xbf\xa2\x04\xc2\x06\xf9\x5d\x03\xff\xbf\xd0\x06\xc6\xb0\x81\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\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\xfc\xc1\xff\x05\x25\x00\x06\xc8\xef\x1a\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x36\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\x20\x05\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\x20\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\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\x0f\x80\x00\xa0\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xe0\xff\x82\x12\x08\x1b\xe4\x77\x0d\xfe\xff\x7e\x9b\x5f\xc9\x7f\x3f\x0c\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\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\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\xf0\x00\x00\x00\x0b\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x04\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\xfc\xc1\xff\x05\x25\x00\x06\xc8\xef\x1a\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x1f\xfc\x5f\x50\x02\x68\x82\xfc\xae\x81\xff\x1f\x60\x01\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\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\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\x10\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x80\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x03\x00\x00\x40\x00\x00\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\xfc\xfd\xff\x05\xf5\x12\x76\xc8\xef\x1a\xf8\xff\x85\x36\x30\x82\x0d\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xfb\xff\x0b\xca\x65\xec\x90\xdf\x35\xf0\xff\x0b\x6d\x60\x04\x1b\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x40\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\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\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\xfe\xfe\xff\x82\x7a\x09\x3b\xe4\x77\x0d\xfc\xff\x42\x1b\x18\xc1\x06\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\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\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\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\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\xfe\xe0\xff\x82\x12\x00\x03\xe4\x77\x0d\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xc1\xff\x05\x25\x00\x06\xc8\xef\x1a\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x83\xff\x0b\x4a\x00\x0c\x90\xdf\x35\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x07\xff\x17\x94\x40\x58\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\xa0\x00\x00\x08\x02\x09\x00\x00\x00\x00\xc0\xff\x0f\xb0\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xe0\xff\x82\x12\x08\x0b\xe4\x77\x0d\xfc\xff\x42\x1b\x18\xc1\x06\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x03\x00\x00\x40\x00\x00\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x07\x09\x14\x94\x00\x90\x00\x83\x02\xe0\xfd\x07\x50\x00\x00\x32\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\xe0\x0f\xfe\x2f\x28\x81\xb0\x40\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\xc0\x1f\xfc\x5f\x50\x02\x61\x81\xfc\xae\x81\xff\x5f\x68\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\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\x7f\xf0\x7f\x41\x09\x84\x05\xf2\xbb\x06\xfe\x7f\xa1\x0d\x8c\x60\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x0c\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\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\x84\x00\x00\x01\x00\x00\x00\x00\x00\x00\xf8\xff\x01\x16\x40\x90\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xc0\x1f\xfc\x5f\x50\x02\x60\x80\xfc\xae\x81\xff\x1f\x60\x01\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\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\x00\x00\x00\x30\x00\x00\x00\x02\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0f\xfe\x2f\x28\x01\x30\x40\x7e\xd7\xc0\xff\x0f\xb0\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\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\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\x20\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\x08\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\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\x28\x00\x00\x00\x01\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xef\xff\x2f\xa8\x97\xb0\x43\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\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\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\xe0\x0f\xfe\x2f\x28\x81\xb0\x40\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\xc0\x1f\xfc\x5f\x50\x02\x61\x83\xfc\xae\x81\xff\x5f\x68\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xf0\xf7\xff\x17\x94\x4b\xd8\x21\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\xc0\xdf\xff\x5f\x50\x2e\x61\x87\xfc\xae\x81\xff\x5f\x68\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\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\x7f\xf0\x7f\x41\x09\x84\x0d\xf2\xbb\x06\xfe\x7f\xa1\x0d\x8c\x62\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xf0\xf7\xff\x17\x94\x4b\xd8\x21\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\xe0\x0f\xfe\x2f\x28\x81\xb0\x40\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\xc0\x1f\xfc\x5f\x50\x02\x61\x83\xfc\xae\x81\xff\x5f\x68\x03\xa3\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xf8\x83\xff\x0b\x4a\x20\x2c\x90\xdf\x35\xf0\xff\x0b\x6d\x60\x04\x1b\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x07\xff\x17\x94\x40\x58\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\xc0\x1f\xfc\x5f\x50\x02\x61\x83\xfc\xae\x81\xff\x5f\x68\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xe0\xff\x82\x12\x08\x0b\xe4\x77\x0d\xfc\xff\x42\x1b\x18\xc1\x06\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\xe4\x41\x02\x05\x25\x00\x24\xc0\xa0\x00\x78\xff\x01\x14\x08\x80\x0c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x68\x03\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0f\xfe\x2f\x28\x01\x30\x40\x7e\xd7\xc0\xff\x0f\xb0\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\x80\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\x80\x3c\x48\xa0\xa0\x04\x80\x04\x18\x14\x00\xef\x3f\x80\x02\x00\x90\x01\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x80\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x61\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x80\x04\x02\x60\x03\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\x42\x00\x80\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\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\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\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\x80\x10\x00\x20\x00\x00\x00\x00\x00\x00\x00\xff\x3f\xc0\x02\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x40\x00\x00\x00\x00\x00\x00\x00\xfe\x7f\x80\x05\x00\x60\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\x42\x00\x80\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x0b\x20\xc8\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\x04\x00\x00\x01\x00\x00\x00\x00\x00\x00\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\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\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\x40\x28\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\xff\xff\xff\xff\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\x80\x7f\xf8\xbf\xa0\x04\xc0\x00\xf9\x5d\x83\xff\xff\xff\xff\xff\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x1f\xfc\x5f\x50\x02\x61\x81\xfc\xae\x81\xff\x5f\x68\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\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\x20\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\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\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\xe0\x0f\xfe\x2f\x28\x81\xb0\x40\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\x80\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\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\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\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\xfc\xc1\xff\x15\x25\x10\x36\xc8\xef\x1a\xf8\xff\x85\x36\x30\x86\x0d\x1c\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x07\xff\x17\x94\x40\x58\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\xe0\x0f\xfe\x2f\x28\x81\xb0\x40\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x03\x00\x02\x42\x00\x80\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x1e\x24\x50\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x40\x01\x00\xc8\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\x79\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x00\x05\x00\x20\x03\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\xf2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x0a\x00\x40\x06\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\xe4\x41\x02\x05\x25\x00\x24\xc0\xa0\x00\x78\xff\x01\x14\x00\x80\x0c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x02\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\x04\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xf7\x1f\x00\x01\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\x80\x3c\x48\xa0\xa0\x04\x80\x04\x18\x14\x00\xef\x3f\x80\x02\x00\x90\x01\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x1f\xfc\x5f\x51\x02\x61\x83\xfc\xae\x81\xff\x5f\x68\x71\x02\xf8\x0f\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\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\x10\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\x40\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\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\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\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\x80\x7f\xf8\xbf\xa0\x04\xc0\x00\xf9\x5d\x83\xff\xff\xff\xff\xff\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xd0\x06\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x3f\xf8\xbf\xa0\x04\xc2\x06\xf9\x5d\x83\xff\xbf\xdf\xee\x57\xf2\xdf\x0f\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\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\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\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\x50\x06\x00\x04\x84\x00\x02\x01\x00\x00\xe0\xff\x07\x58\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x03\x21\x02\x40\x00\x00\x00\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x03\x00\x02\x42\x00\x80\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x07\xff\x57\x94\x40\xd8\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x18\x36\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xf0\x7f\x41\x09\x84\x05\xf2\xbb\x06\xfe\x7f\xa1\x0d\x8c\x60\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0f\xfe\x2f\x28\x81\xb0\x41\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x08\x00\x02\x00\x01\xe0\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\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\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\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\x08\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\x10\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\xa0\x00\x00\x08\x00\x01\x00\x00\x00\x00\xc0\xff\x0f\xb0\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\x04\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\x80\x02\x00\x20\x00\x04\x00\x00\x00\x00\x00\xff\x3f\xc0\x02\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x00\x05\x00\x20\x03\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\x0a\x00\x80\x00\x10\x00\x00\x00\x00\x00\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x01\x20\x00\x00\x00\x00\x00\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x40\x20\x00\x00\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x80\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x00\x04\x00\x20\x03\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\xc2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x08\x00\x40\x06\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\x80\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\xc8\x83\x04\x0a\x4a\x00\x48\x80\x41\x01\xf0\xfe\x03\x28\x00\x00\x19\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\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\x40\x1e\x24\x50\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x40\x01\x00\xc8\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\x80\x3c\x48\xa0\xa0\x04\x80\x04\x18\x14\x00\xef\x3f\x80\x02\x00\x90\x01\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\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\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xa0\x00\x00\x08\x00\x01\x00\x00\x00\x00\xc0\xff\x0f\xb0\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\x40\x1e\x24\x50\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x40\x01\x00\xc8\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\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\x79\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x00\x05\x00\x20\x03\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\xfe\xe0\xff\x82\x12\x08\x1b\xe4\x77\x0d\xfe\xff\x7e\x9b\x5f\xc9\x7f\x3f\x0c\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\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\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\x30\x00\x00\x00\x03\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\xe0\x0f\xfe\xaf\x28\x81\xb0\x41\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\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\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\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\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\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\xc0\x1f\xfc\x5f\x50\x02\x61\x81\xfc\xae\x81\xff\x5f\xe8\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x08\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\xc0\x1f\xfc\x5f\x50\x02\x61\x81\xfc\xae\x81\xff\x5f\x68\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x20\x00\x24\x00\x00\x00\x00\x00\xff\x3f\xc0\x02\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\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\x01\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x07\xff\x17\x94\x00\x18\x20\xbf\x6b\xe0\xff\x07\x58\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0f\xfe\x2f\x28\x81\xb0\x40\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\xc0\x1f\xfc\x5f\x50\x02\x61\x83\xfc\xae\x81\xff\x5f\x68\x03\xa3\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\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\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\x01\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\xfc\xc1\xff\x05\x25\x10\x36\xc8\xef\x1a\xf8\xff\x85\x36\x30\x8a\x0d\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xfe\xe0\xff\x82\x12\x08\x0b\xe4\x77\x0d\xfc\xff\x42\x1b\x18\xc1\x06\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xc1\xff\x05\x25\x10\x36\xc8\xef\x1a\xf8\xff\x85\x36\x30\x82\x0d\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x65\x00\x40\x40\x08\x00\x10\x00\x00\x00\xfe\x7f\x80\x05\x00\x60\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\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\x20\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\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\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\x7f\xf0\x7f\x41\x09\x84\x05\xf2\xbb\x06\xfe\x7f\xa1\x0d\x8c\x60\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xe0\xff\x82\x12\x08\x1b\xe4\x77\x0d\xfc\xff\x42\x1b\x18\xc1\x06\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xe0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\x00\x00\x00\x00\x00\x00\x20\xfc\x07\x40\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x80\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xe0\x01\x00\x00\x14\x80\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\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\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\xf2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x0a\x00\x40\x06\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\xfc\xc1\xff\x05\x25\x10\x36\xc8\xef\x1a\xf8\xff\x85\x36\x30\x82\x0d\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x83\xff\x0b\x4a\x20\x6c\x90\xdf\x35\xf0\xff\x0b\x6d\x60\x04\x1b\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x07\x58\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x0f\x12\x28\x28\x01\x20\x01\x06\x05\xc0\xfb\x0f\xa0\x00\x00\x64\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\x1f\x60\x01\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x7f\x80\x05\x00\x60\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\x40\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\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\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\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\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x10\x02\x00\x04\x00\x00\x00\x00\x00\x00\xe0\xff\x07\x58\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x08\x00\x10\x00\x00\x00\x00\x00\x00\x80\xff\x1f\x60\x01\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x02\x00\x00\x00\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x04\x00\x00\x00\x00\x00\x00\xe0\xff\x07\x58\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x30\x00\xa0\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\xfc\xc1\xff\x05\x25\x00\x06\xc8\xef\x1a\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\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\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\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\x80\x32\x00\x20\x20\x04\x00\x08\x00\x00\x00\xff\x3f\xc0\x02\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x80\x80\x10\x00\x20\x00\x00\x00\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x07\xff\x17\x94\x40\x58\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x02\x04\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xf0\x7f\x41\x09\x84\x0d\xf2\xbb\x06\xfe\x7f\xa1\xc5\x09\xe0\x3f\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\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\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x19\x00\x10\x00\x03\x00\x00\x00\x00\x80\xff\x1f\x60\x01\x04\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\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\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\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\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\x0f\x00\x00\xa0\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x28\x03\x00\x02\x40\x00\x00\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x80\x32\x00\x20\x20\x04\x00\x08\x00\x00\x00\xff\x3f\xc0\x02\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x07\xff\x17\x94\x40\x58\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\x01\x00\x00\x00\x00\xb0\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\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\x01\x00\x40\x00\x00\x00\x00\x00\x00\x00\xfe\x7f\x80\x05\x00\x60\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\xf2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x0a\x00\x40\x06\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\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\x90\x07\x09\x14\x94\x00\x90\x00\x83\x02\xe0\xfd\x07\x50\x00\x00\x32\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x20\x0f\x12\x28\x28\x01\x20\x01\x06\x05\xc0\xfb\x0f\x80\x00\x00\x64\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xa0\x0c\x00\x08\x08\x01\x00\x02\x00\x00\xc0\xff\x0f\xb0\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\x40\x00\x00\x10\x00\x00\x00\x00\x00\x00\x80\xf7\x1f\x00\x01\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\x80\x3c\x48\xa0\xa0\x04\x80\x04\x18\x14\x00\xef\x3f\x80\x02\x00\x90\x01\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\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\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\xc8\x83\x04\x0a\x4a\x00\x48\x80\x41\x01\xf0\xfe\x03\x28\x00\x00\x19\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x19\x00\x10\x10\x02\x00\x04\x00\x00\x80\xff\x1f\x60\x01\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\x80\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\xef\x3f\x00\x02\x00\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x80\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\xe1\x3f\x00\x02\x00\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x20\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x81\x00\x00\x00\x00\x00\x00\x00\x84\xff\x00\x08\x00\x40\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\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\x10\x00\x00\x04\x00\x00\x00\x00\x00\x00\xe0\xff\x07\x58\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x0f\x12\x28\x28\x01\x20\x01\x06\x05\xc0\xfb\x0f\xa0\x00\x00\x64\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\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\x61\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x00\x04\x00\x20\x03\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x20\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\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\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x06\x80\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xf8\x83\xff\x0b\x4a\x20\x2c\x90\xdf\x35\xf0\xff\x0b\x6d\x60\x04\x1b\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x07\xff\x17\x94\x40\xd8\x20\xbf\x6b\xe0\xff\x17\xda\xc0\x08\x36\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\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\x80\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x06\x46\xb0\x81\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\x7f\xf0\x7f\x41\x09\x84\x05\xf2\xbb\x06\xfe\x7f\xa1\x0d\x8c\x60\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\xe0\xff\x82\x12\x08\x0b\xe4\x77\x0d\xfc\xff\x42\x1b\x18\xc1\x06\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\x0a\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xc0\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\x40\x00\x00\x10\x00\x08\x00\x00\x00\x00\x80\xf7\x1f\x00\x01\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\x01\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\x61\x90\x40\x41\x09\x00\x0b\x30\x28\x00\xde\x7f\x00\x04\x00\x20\x03\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\xc2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x08\x00\x40\x06\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xde\x27\x70\x50\x2b\x48\x07\x0c\x0a\x80\xf7\x1f\x40\x01\x00\xc8\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\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\x04\x00\x00\x80\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\xf8\x83\xff\x0b\x4a\x20\x2c\x90\xdf\x35\xf0\xff\x0b\x6d\x60\x04\x1b\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x61\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x00\x04\x00\x20\x03\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xff\x01\x10\x00\x80\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\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\x20\x00\x00\x08\x00\x04\x00\x00\x00\x00\xc0\xfb\x0f\x80\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\x80\x3c\x48\xa0\xa0\x04\x80\x04\x18\x14\x00\xef\x3f\x00\x02\x00\x90\x01\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x01\x00\x40\x00\x00\x00\x00\x00\x00\x00\xfe\x7f\x80\x05\x00\x60\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xc0\x1f\xfc\x5f\x50\x02\x61\x81\xfc\xae\x81\xff\x5f\x68\x03\x23\xd8\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x42\x00\x80\x01\x80\x00\x00\x00\x00\x00\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x28\x03\x00\x02\x40\x00\x00\x00\x00\x00\xf0\xff\x03\x2c\x80\x20\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x40\x28\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\xff\xff\xff\xff\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\x01\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\xca\x00\x80\x80\x10\x00\x20\x00\x00\x00\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x10\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xff\xff\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\xe0\x0f\xfe\x2f\x28\x81\xb0\x40\x7e\xd7\xc0\xff\x2f\xb4\x81\x11\x6c\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\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\xe4\x41\x02\x05\x25\x00\x24\xc0\xa0\x00\x78\xff\x01\x14\x00\x80\x0c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x1e\x24\x50\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x40\x01\x00\xc8\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\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\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\xf0\x07\xff\x57\x94\x40\xd8\x20\xbf\x6b\xe0\xff\x57\x5a\x80\x42\xf6\x03\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\x02\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\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x3f\x00\x02\x00\x90\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xc1\xff\x15\x25\x10\x36\xc8\xef\x1a\xf8\xff\xb5\x16\x27\x90\xff\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\x80\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\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\x40\x18\x24\x50\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x00\x01\x00\xc8\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x28\x00\x00\x82\x40\x00\x00\x00\x00\x00\xf0\xff\x03\x2c\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x06\x09\x14\x94\x00\x90\x00\x83\x02\xe0\xfd\x07\x40\x00\x00\x32\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\x40\x18\x24\x50\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x00\x01\x00\xc8\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\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\xc0\x00\x80\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\x40\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x1e\x24\x70\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x40\x01\x00\xc8\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\x7f\xf0\x7f\x41\x09\x84\x05\xf2\xbb\x06\xfe\x7f\xa1\x0d\x8c\x60\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x40\x08\x00\x10\x00\x01\x00\x00\x00\x00\x80\xff\x1f\x60\x01\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\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xc2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x08\x00\x40\x06\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\x10\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\x80\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x80\x3f\xf8\xbf\xa0\x04\xc2\x02\xf9\x5d\x03\xff\xbf\xd0\x02\x04\xb0\x1f\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\x79\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x80\x04\x02\x20\x03\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x07\x09\x14\x94\x00\x90\x00\x83\x02\xe0\xfd\x07\x50\x00\x00\x32\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x06\x09\x14\x94\x00\x90\x00\x83\x02\xe0\xfd\x07\x40\x00\x00\x32\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\x40\x1e\x24\x50\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x40\x01\x00\xc8\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\x80\x3c\x48\xa0\xa0\x04\x80\x04\x18\x14\x00\xef\x3f\x80\x02\x00\x90\x01\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x7f\x00\x04\x00\x20\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\xfe\xe0\xff\x8a\x12\x08\x1b\xe4\x77\x0d\xfc\xff\x42\x8b\x13\xc0\x7f\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\x40\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\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x1e\x24\x50\x50\x02\x40\x02\x0c\x0a\x80\xf7\x1f\x40\x01\x00\xc8\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\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\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\x10\x02\x00\x04\x00\x04\x00\x00\x00\x00\xe0\xff\x07\x58\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xf0\x7f\x41\x09\x84\x05\xf2\xbb\x06\xfe\x7f\xa1\x0d\x8c\x60\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xfb\x0f\x80\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\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\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\xf0\x07\xff\x17\x94\x40\xd8\x20\xbf\x6b\xe0\xff\x57\x5a\x80\x42\xf6\x03\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\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\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\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\x79\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x00\x04\x00\x20\x03\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\xf2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x0a\x00\x40\x06\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\x78\x00\x00\xa0\x0d\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\x90\x07\x09\x14\x94\x00\x90\x00\x83\x02\xe0\xfd\x07\x40\x00\x00\x32\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\xc0\x1f\xfc\x5f\x50\x02\x61\x83\xfc\xae\x81\xff\x5f\x6b\x71\x02\xf9\x0f\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\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\x0a\x00\x80\x00\x10\x00\x00\x00\x00\x00\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x41\x02\x05\x25\x00\x24\xc0\xa0\x00\x78\xff\x01\x14\x00\x80\x0c\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\xc8\x83\x04\x4a\x4a\x00\x48\x80\x41\x01\xf0\xfe\x03\x28\x00\x00\x19\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\x06\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\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\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x20\x00\x00\x08\x00\x00\x00\x00\x00\x00\xc0\xff\x0f\xb0\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\x08\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\x42\x00\x80\x01\x80\x00\x00\x00\x00\x00\xfc\xff\x00\x0b\x00\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x01\x00\x02\x00\x00\x00\x00\x00\x00\xf0\xff\x03\x2c\x00\x20\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x20\x00\x04\x00\x00\x00\x00\x00\xff\x3f\xc0\x02\x00\xb0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x90\x07\x09\x14\x94\x00\x90\x00\x83\x02\xe0\xfd\x07\x50\x00\x00\x32\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\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\x00\x00\x00\x00\x00\x00\x65\x00\x40\x40\x08\x00\x10\x00\x00\x00\xfe\x7f\x80\x05\x00\x60\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\xf2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x0a\x00\x40\x06\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\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\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\x20\x0f\x12\x28\x28\x01\x20\x01\x06\x05\xc0\xfb\x0f\xa0\x00\x00\x64\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\x80\x3c\x48\xa0\xa0\x04\x80\x04\x18\x14\x00\xef\x3f\x80\x02\x00\x90\x01\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x90\x40\x41\x09\x00\x09\x30\x28\x00\xde\x7f\x00\x05\x00\x20\x03\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xa0\x0c\x00\x08\x08\x01\x00\x02\x00\x00\xc0\xff\x0f\xb0\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\x40\x00\x00\x10\x00\x00\x00\x00\x00\x00\x80\xf7\x1f\x00\x01\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\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\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\x84\x00\x00\x01\x00\x00\x00\x00\x00\x00\xf8\xff\x01\x16\x00\x80\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xf2\x20\x81\x82\x12\x00\x12\x60\x50\x00\xbc\xff\x00\x0a\x00\x40\x06\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\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_mparseModule","%start_mparseExp","%start_mparsePat","%start_mparseDeclAux","%start_mparseType","%start_mparseStmt","%start_mparseImportDecl","%start_ngparseModulePragmas","%start_ngparseModuleHeadAndImports","%start_ngparsePragmasAndModuleHead","%start_ngparsePragmasAndModuleName","modules","modules1","page","topxml","toppragmas","toppragmasaux","toppragma","conids","module","optmodulehead","maybemodwarning","body","bodyaux","semis","optsemis","maybeexports","exports","optcomma","exportlist","export","export_names","cname_w_wildcard","qcname","impdecls","impdecl","optsrc","optsafe","optqualified","maybepkg","maybeas","maybeimpspec","impspec","opthiding","importlist","importspec","import_names","cname","fixdecl","prec","infix","ops","opt_injectivity_info","injectivity_info","inj_varids","topdecls","topdecls1","topdecl","opt_datafam_kind_sig","opt_tyfam_kind_sig","opt_at_kind_inj_sig","opt_at_kind_inj_sig2","role_annot","roles","role","optoverlap","where_type_family","ty_fam_inst_eqn_list","ty_fam_inst_eqns","ty_fam_inst_eqn","data_or_newtype","typelist","decls","decls1","decl","decllist","signdecl","signdecl0","specinldecl","sigtypes","sigtype","name_boolformula","name_boolformula1","name_boolformula_and","name_boolformula_atom","binds","vars","callconv","safety","fspec","rules","rule","activation","ruleforall","rulevars","rulevar","warndeprs","warndepr","namevars","namevar","annotation","truedtype","dtype","truetype","type","truebtype","trueatype","btype","atype","ptype","strict_mark","strictness","unpackedness","gtycon","otycon","qtyconop","truectype","ctype","context","types","types1","types_bars2","ktyvars","ktyvar","tyvars","tyvars1","fds","fds1","fd","gadtlist","gadtconstrs1","gadtconstrs","gadtconstr","constrs0","constrs","constr","forall","constr1","scontype","fielddecls","fielddecl","maybe_derivings","derivings","deriving","dclasses","qtycls1","kind","kind1","bkind","akind","pkind","comma_kinds1","optkind","opt_tyconsig","optcbody","cldecls","cldecls1","cldecl","opt_family","atdecl","optvaldefs","valdefs","valdefs1","insvaldef","atinst","valdef","optwhere","optsig","rhs","gdrhs","gdrh","trueexp","exp","exp0","exp0a","exp0b","exp10a","optlayoutsemi","opthsxsemi","exp10b","exppragma","fexp","apats","apat","aexp","aexp1","aexp2","tup_exprs","commas_tup_tail","tup_tail","commas","bars","bars0","texp","sexps","erpats","xml","children","child","name","xmlname","xmlkeyword","attrs","attr","mattr","list","lexps","pqualstmts","qualstmts","qualstmt","transformqual","quals","qual","parr","altslist","alts","alts1","alt","ralt","gdpats","gdpat","pat","ifaltslist","ifalts","ifalts1","stmtlist","stmts","stmts1","stmt","fbinds","fbind","ipbinds","ipbinds1","ipbind","gcon","gcon_nolist","sysdcon_nolist","sysdcon","var","var_no_safety","qvar","ivar","con","con_list","qcon","varop","qvarop","qvaropm","conop","qconop","op","qop","qopm","gconsym","overloaded_label","qvarid","varid_no_safety","varid","ivarid","qconid","conid","qconsym","consym","qvarsym","qvarsymm","varsym","varsymm","qvarsym1","literal","open","close","pat_syn","pattern_synonym_decl","pattern_synonym_lhs","vars0","commavars","where_decls","pattern_synonym_sig","pstype","deriv_strategy","modid","tyconorcls","qtyconorcls","tyvar","tyvarid","qtyvarop","tyvarsym","impdeclsblock","moduletopname","moduletophead","moduletopimps","VARID","LABELVARID","QVARID","IDUPID","ILINID","CONID","QCONID","DVARID","VARSYM","CONSYM","QVARSYM","QCONSYM","INT","RATIONAL","CHAR","STRING","PRIMINT","PRIMWORD","PRIMFLOAT","PRIMDOUBLE","PRIMCHAR","PRIMSTRING","'('","')'","'(#'","'#)'","';'","'{'","'}'","vccurly","'['","']'","'[:'","':]'","','","'_'","'`'","'.'","'..'","':'","'::'","'='","'\\\\'","'|'","'<-'","'->'","'@'","TYPEAPP","'~'","'=>'","'-'","'!'","'*'","'-<'","'>-'","'-<<'","'>>-'","'(|'","'|)'","'@:'","IDSPLICE","'$('","'[|'","'[p|'","'[t|'","'[d|'","'|]'","VARQUOTE","TYPQUOTE","QUASIQUOTE","PCDATA","'<'","'</'","'<%'","'<%>'","'>'","'/>'","'%>'","'<['","']>'","'foreign'","'export'","'safe'","'unsafe'","'threadsafe'","'interruptible'","'stdcall'","'ccall'","'cplusplus'","'dotnet'","'jvm'","'js'","'javascript'","'capi'","'as'","'by'","'case'","'class'","'data'","'default'","'deriving'","'do'","'else'","'family'","'forall'","'group'","'hiding'","'if'","'import'","'in'","'infix'","'infixl'","'infixr'","'instance'","'let'","'mdo'","'module'","'newtype'","'of'","'proc'","'rec'","'then'","'type'","'using'","'where'","'qualified'","'role'","'pattern'","'stock'","'anyclass'","'{-# INLINE'","'{-# INLINE CONLIKE'","'{-# SPECIALISE'","'{-# SPECIALISE INLINE'","'{-# SOURCE'","'{-# RULES'","'{-# CORE'","'{-# SCC'","'{-# GENERATED'","'{-# DEPRECATED'","'{-# WARNING'","'{-# UNPACK'","'{-# NOUNPACK'","'{-# OPTIONS'","'{-# LANGUAGE'","'{-# ANN'","'{-# MINIMAL'","'{-# NO_OVERLAP'","'{-# OVERLAP'","'{-# OVERLAPS'","'{-# OVERLAPPING'","'{-# OVERLAPPABLE'","'{-# INCOHERENT'","'{-# COMPLETE'","'#-}'","%eof"]
-        bit_start = st * 449
-        bit_end = (st + 1) * 449
-        read_bit = readArrayBit happyExpList
-        bits = map read_bit [bit_start..bit_end - 1]
-        bits_indexed = zip bits [0..448]
-        token_strs_expected = concatMap f bits_indexed
-        f (False, _) = []
-        f (True, nr) = [token_strs !! nr]
-
-happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x00\x00\x75\x29\xa8\x25\x42\x00\x3f\x18\x7c\x23\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x60\x03\x67\x00\x50\x01\x6a\x01\x0b\x02\xc1\x01\x4e\x02\x4e\x02\xda\xff\xdc\x01\x00\x00\x45\x02\x00\x00\x00\x00\x48\x1e\x00\x00\x00\x00\x00\x00\x5a\x2c\x00\x00\x7d\x02\x00\x00\x00\x00\x97\x02\x38\x02\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\x00\x00\x00\x00\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\x1e\x24\x1f\xc5\x20\x66\x22\x00\x00\xf8\x2a\x3e\x1d\x5a\x2c\x5a\x2c\x5a\x2c\x75\x29\x00\x00\x75\x29\x75\x29\x75\x29\x3f\x18\x00\x00\x59\x2e\xd4\x31\x00\x00\x7b\x34\x75\x29\x00\x00\x00\x00\x00\x00\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\x29\x03\x03\x00\x00\x00\x00\x00\x00\x33\x26\x0b\x03\x35\x03\xe4\x2b\x35\x03\x00\x00\x00\x00\x00\x00\x00\x00\x59\x03\x5e\x03\x62\x03\x00\x00\x00\x00\xdb\x13\x00\x00\x00\x00\x3e\x1d\x00\x00\xc8\x01\x00\x00\x00\x00\xe0\x02\x00\x00\x3f\x18\x57\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x13\x2d\x15\x99\x15\x06\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x75\x29\x39\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x02\xf3\x02\xf5\x02\x00\x00\x00\x00\x00\x00\xf5\x02\x81\x03\x0e\x03\x00\x00\x0e\x03\x1f\x00\x00\x00\x00\x00\xa0\x03\x7b\x34\x0f\x03\x30\x01\x00\x00\x5c\x03\x00\x00\x00\x00\xb0\x03\x00\x00\xec\x0d\x5a\x00\x00\x00\x00\x00\x0a\x33\x00\x00\x00\x00\x00\x00\x4e\x14\x69\x01\x05\x16\xbe\x03\xbb\x03\xba\x14\xc2\x03\x00\x00\xc5\x03\xc9\x03\x00\x00\xe1\x03\x9a\x01\x59\x01\xca\x01\x00\x00\x00\x00\x24\x02\x47\x04\xaa\x00\x71\x04\x00\x00\x00\x00\x75\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x04\x00\x00\x7d\x04\x00\x00\x3e\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x1d\x00\x00\x00\x00\x3e\x1d\x00\x00\x00\x00\x40\x33\x3f\x18\x00\x00\x00\x00\x00\x00\xb2\x08\x99\x04\x02\x04\x11\x04\x00\x00\xf1\x22\xf1\x22\xb8\x04\x00\x00\x5a\x2c\x00\x00\x7b\x04\xdd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x04\x3a\x00\xbd\x04\x00\x00\xec\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\x0a\x19\xfe\x01\x21\x05\x00\x00\x00\x00\x78\x0e\x20\x0f\x0a\x05\x1a\x05\x1d\x05\x3b\x05\x6d\x05\x62\x05\x43\x01\x00\x00\x5a\x2c\x00\x00\x00\x00\x00\x00\x6e\x2b\x00\x00\x78\x05\x79\x05\x0e\x01\x8e\x05\x98\x05\x00\x00\x00\x00\x75\x29\x00\x00\x00\x00\x00\x00\x61\x2f\x00\x00\x41\x03\x97\x05\x9e\x05\x00\x00\xac\x05\xaf\x1f\x50\x21\xd1\x02\x00\x00\x00\x00\xdd\x02\xc0\x05\x3a\x20\xa6\x01\xc7\x05\xd9\x05\xdd\x05\xe0\x05\xe7\x05\x00\x00\x5a\x2c\x5a\x2c\x5a\x2c\x75\x29\x74\x2e\x00\x00\x00\x00\x00\x00\x75\x29\x00\x00\x61\x2f\x3f\x18\x75\x29\x75\x29\x75\x29\x75\x29\xb0\x05\x74\x05\x33\x00\x00\x00\x30\x01\x5a\x00\x00\x00\x00\x00\x00\x00\x7c\x2f\x00\x00\xb7\x05\x00\x00\x5a\x2c\x86\x05\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x02\x5a\x2c\x0d\x06\x1a\x06\x11\x01\x0b\x00\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x06\x3c\x06\x00\x00\x00\x00\x30\x06\x3a\x06\x3d\x06\x22\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x21\x45\x06\x00\x00\x00\x00\x54\x06\x00\x00\x00\x00\x00\x00\x75\x29\xbe\x26\x00\x00\x58\x06\x00\x00\x00\x00\x00\x00\x66\x22\x00\x00\x66\x22\x75\x29\x07\x24\x63\x06\x00\x00\x00\x00\x66\x22\x75\x29\x07\x24\x00\x00\x00\x00\x72\x06\x00\x00\x75\x29\x75\x29\x00\x00\x49\x27\x00\x00\x00\x00\x75\x29\x00\x00\x00\x00\x00\x00\x9f\x06\x5a\x00\x00\x00\x00\x00\x00\x00\x71\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x14\x00\x00\x00\x00\x00\x00\x5a\x2c\x38\x00\x3f\x18\x2e\x06\x9d\x06\x9f\x02\x00\x00\x00\x00\x00\x00\x8f\x06\x00\x00\xa5\x18\x4d\x31\xb3\x06\xb3\x06\x21\x00\xb3\x06\xd1\x06\x68\x31\x68\x31\x7c\x2f\xb6\x31\x53\x02\xcd\x06\x00\x00\x7b\x34\x00\x2a\x00\x00\xaf\x06\x00\x00\x00\x00\x00\x00\x00\x00\x75\x29\xe3\x06\x6c\x02\xec\x06\x5a\x00\x94\x06\x00\x00\x75\x29\x00\x00\x75\x29\x00\x07\x0e\x07\xf1\x22\x5a\x00\x75\x29\x75\x29\xf9\x06\x00\x00\x00\x00\x09\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x2d\x00\x00\x00\x00\x18\x19\x00\x00\x18\x19\x18\x19\x18\x19\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x03\x00\x00\x9d\x02\x41\x01\xd2\x02\x00\x00\x00\x00\xe3\x33\x18\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x10\x18\x07\x27\x07\x5a\x00\x5a\x00\x8e\x03\xeb\x06\x00\x00\x00\x00\x00\x2a\x03\x07\x3b\x07\x4e\x07\x5d\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x45\x07\x10\x07\x86\x0e\x60\x07\x60\x07\x00\x00\x59\x07\x00\x00\x00\x00\x70\x07\x00\x00\x00\x00\x00\x00\x82\x07\x00\x00\x4d\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x2c\xd4\x2d\x00\x00\x00\x00\x94\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x22\x00\x00\x00\x00\x00\x00\x75\x29\x00\x00\x00\x00\x00\x00\x00\x00\x49\x27\x00\x00\x00\x00\x29\x00\x61\x07\x00\x00\x7b\x07\x00\x00\xda\x01\x85\x03\xc1\x03\xce\x03\xea\x03\xee\x03\x55\x04\xa8\x04\xed\x04\xfb\x04\x1c\x05\x60\x05\x8c\x05\xd1\x05\x05\x06\x09\x06\x16\x06\x40\x06\x4c\x06\x6a\x06\x89\x06\x00\x00\x88\x07\x8a\x07\xbe\x07\x28\x07\x00\x00\xa8\x07\xba\x07\x00\x00\xf0\x2d\x51\x07\x17\x00\x00\x00\xd0\x07\xd1\x07\x30\x00\x39\x00\x00\x00\xd7\x07\xcb\x30\x46\x00\xcb\x30\x18\x19\xcb\x30\xcb\x30\xc5\x2f\xcf\x07\x90\x04\x22\x03\xd8\x07\x06\x1c\x3e\x1d\x74\x02\x18\x19\x6e\x07\x76\x07\x78\x07\x84\x07\x8c\x07\x98\x07\xb3\x07\x00\x00\x00\x00\x00\x00\x18\x19\x18\x19\x0d\x08\x30\x07\x30\x07\x00\x05\x00\x05\xcb\x30\x18\x19\x08\x04\x18\x19\x20\x0f\x20\x08\xfb\x07\xbb\x01\x00\x00\x00\x00\xac\x01\x00\x00\x24\x08\x31\x08\x00\x00\x00\x00\x92\x24\x36\x08\x00\x00\x5a\x00\x2d\x08\x39\x08\x00\x00\x00\x00\x00\x00\xd4\x27\x00\x00\x6e\x00\x00\x00\x00\x00\x32\x08\x00\x00\xfb\x02\x00\x00\x33\x08\x00\x00\x00\x00\x34\x08\x00\x00\x00\x00\x00\x00\x75\x29\x46\x2f\x00\x00\x00\x00\x00\x00\x4d\x08\x00\x00\x1b\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x5c\x08\x5a\x2c\x00\x00\x4e\x08\x52\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x04\x00\x00\x00\x00\x00\x00\x75\x29\x1d\x25\x75\x29\x0c\x08\x03\x00\x1d\x25\x00\x00\x00\x00\x00\x00\x00\x00\x95\x06\xff\x07\x75\x29\x5f\x28\x00\x00\x53\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x31\x00\x00\x00\x00\x2d\x04\x15\x08\xfe\x07\xd4\x2d\x16\x08\xab\x06\x37\x01\x00\x00\x01\x08\x55\x08\x00\x00\x75\x29\x5f\x28\x0f\x08\x6f\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x16\x10\x08\x00\x00\x60\x08\x72\x08\x00\x00\x68\x08\x00\x00\x8f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x08\x00\x00\xc2\x09\x66\x08\x00\x00\x4c\x04\x18\x19\xea\x28\xea\x28\xc1\x32\x84\x19\xc1\x32\x00\x00\xc1\x32\x8b\x02\xf9\x07\xfa\x07\xfc\x07\x6d\x08\x78\x08\x8d\x08\x73\x08\x3d\x08\x9d\x08\x00\x00\x68\x31\x00\x00\x68\x31\x00\x00\x00\x00\x00\x00\x9a\x08\x22\x32\x22\x32\x00\x00\x18\x08\x99\x05\x00\x00\x00\x00\x5a\x2c\x00\x00\x00\x00\xce\x02\x78\x02\x99\x08\x00\x00\x83\x08\x95\x08\x94\x08\xa2\x08\x00\x00\x00\x00\xd4\x2d\x00\x00\xd4\x2d\x00\x00\x00\x00\x75\x29\xd0\x04\xa0\x08\x82\x2a\x4f\x11\xa0\x08\x22\x08\x26\x08\x42\x08\x00\x00\xe1\x2c\x00\x00\x64\x04\x00\x00\x00\x00\xae\x08\xa7\x08\x00\x00\x00\x00\xb5\x08\xc2\x09\x00\x00\xd8\x04\xdd\x2e\xe9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x08\x00\x00\xb6\x08\x00\x00\x00\x00\xd4\x2d\x00\x00\xc2\x08\x69\x08\x00\x00\x75\x29\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x29\x3d\x32\xf0\x19\xb3\x08\x00\x00\xf0\x19\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x08\xb8\x08\x00\x00\x00\x00\x06\x1c\x00\x00\x00\x00\x00\x00\x61\x08\x00\x00\x00\x00\xad\x08\xd4\x2d\x95\x33\xf0\x19\x4c\x00\x00\x00\xc4\x08\xf0\x19\x00\x00\x00\x00\xd4\x2d\xaf\x33\xbe\x08\x00\x00\x00\x00\xce\x08\x00\x00\xc9\x08\x00\x00\x1e\x17\x9c\x02\x3f\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x08\xa1\x03\x00\x00\x00\x00\x00\x00\x58\x32\xf0\x19\xd6\x08\x00\x00\xa4\x1d\x00\x00\x00\x00\x90\x08\xe8\x08\x00\x00\xa4\x08\x00\x00\x9f\x02\xa4\x08\x81\x08\xe3\x08\xe5\x08\xbb\x01\x00\x00\x00\x00\x8e\x08\xe0\x08\x00\x00\x75\x29\xea\x28\xf2\x08\x00\x00\x75\x29\x75\x29\x75\x29\x00\x00\xeb\x08\x00\x00\xb0\x08\xa8\x08\xbd\x06\x50\x00\x00\x00\x00\x00\x13\x00\xd8\x04\x00\x00\x00\x00\x9b\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x08\x00\x00\x0d\x03\x00\x00\x00\x00\x00\x00\x00\x00\x25\x33\x82\x00\x56\x1a\xa4\x1d\x00\x00\x00\x00\xfc\x08\xff\x08\x6f\x13\xb4\x08\x00\x00\x00\x00\x9c\x02\x75\x29\x00\x00\x00\x00\x09\x09\xfa\x08\x0a\x1e\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\xe3\x33\x00\x00\x11\x09\x7a\x33\x00\x00\x06\x1c\x00\x00\xc1\x32\x9e\x08\x17\x09\x00\x00\x00\x00\xa1\x08\x0e\x09\x8b\x32\x00\x00\xc1\x32\x14\x09\xf7\x08\x00\x00\x75\x29\x13\x09\x1e\x09\x32\x09\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x2f\x38\x09\x68\x2d\x00\x00\x22\x04\x7b\x34\x00\x00\x00\x00\x36\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x2d\x45\x09\x00\x00\x7b\x34\x75\x29\x2b\x09\x00\x00\x00\x00\x00\x00\xc2\x1a\x00\x00\x00\x00\x00\x00\x2e\x1b\x00\x00\x00\x00\x27\x09\x00\x00\x42\x09\xd6\x11\x46\x09\x5a\x00\xe3\x33\x00\x00\x00\x00\xba\x0f\x47\x09\x5a\x00\x00\x00\x0a\x1e\x00\x00\x00\x00\x00\x00\x4a\x09\x47\x30\x6c\x1c\x00\x00\x0a\x1e\x60\x09\x00\x00\x2d\x02\x4c\x09\x5a\x00\x00\x00\x00\x00\xe4\x16\x00\x00\x75\x29\x00\x00\x00\x00\x00\x00\x5f\x09\x00\x00\xf8\x2e\x00\x00\x55\x09\x68\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x09\x00\x00\x0a\x1e\x5f\x01\xbb\x02\x00\x00\x00\x00\x69\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x09\xe4\x12\x50\x17\xfd\x33\x00\x00\x00\x00\x9a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x1e\x00\x00\x9a\x1b\x9a\x1b\x17\x34\xc8\x10\x6a\x09\x5a\x00\x00\x00\x00\x00\x9a\x1b\x00\x00\x3a\x09\xed\x08\x00\x00\x00\x00\x04\x31\x3d\x09\x00\x00\x00\x00\x75\x29\x00\x00\x72\x09\x00\x00\x00\x00\x17\x34\x00\x00\xcb\x06\x00\x00\x62\x09\x83\x00\x66\x09\x5d\x12\x76\x09\xc9\x04\xd3\x04\xd8\x1c\x9a\x1b\x00\x00\x6e\x0d\xd8\x1c\x00\x00\x41\x10\x76\x09\x00\x00\xe9\x30\x9a\x1b\xd3\x17\x34\x03\x76\x09\x00\x00\x7d\x09\x74\x09\x00\x00\x00\x00\x00\x00\x8a\x09\xa6\x32\xae\x02\x00\x00\x00\x00\x62\x30\x8d\x09\x7d\x30\x00\x00\x00\x00\x00\x00\xe9\x30\x00\x00\x00\x00\x00\x00\x80\x09\x9a\x1b\x00\x00\x37\x05\x00\x00\xd4\x2d\x9a\x1b\x50\x09\x2f\x09\x00\x00\x9a\x1b\x00\x00\x9a\x1b\x9a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x09\x00\x00\x8f\x09\x00\x00\x00\x00\xd4\x2d\xc9\x33\x00\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x48\x03\x00\x00\x00\x00\xa7\x09\x00\x00\x00\x00\x68\x31\x92\x09\x95\x09\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x1b\x00\x00\x00\x00\x00\x00"#
-
-happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x02\x00\x7d\x38\x9d\x3f\x04\x00\xf6\x06\xab\x37\xaa\x09\x01\x00\xfd\xff\xff\xff\xfe\xff\x06\x00\x52\x03\x93\x05\x00\x00\x00\x00\xba\x09\x00\x00\xbb\x09\x00\x00\x00\x00\x00\x00\xac\x09\x00\x00\x00\x00\x00\x00\x00\x00\x44\x10\x00\x00\x00\x00\x00\x00\x1b\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3c\xb3\x3c\xd8\x3c\x39\x3d\x00\x00\xc2\x35\xe7\x0c\x25\x47\xe1\x0c\x42\x47\xba\x3f\x00\x00\x9a\x38\xf4\x38\xc5\x45\x13\x07\xc7\x08\x62\x07\xfc\x00\x00\x00\x4a\x03\x1f\x41\x0c\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x41\x62\xff\x00\x00\x00\x00\x00\x00\x22\x38\xce\xff\x70\xff\xa1\x36\x73\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x0c\x00\x00\x00\x00\xe3\x02\x00\x00\x63\x09\x00\x00\x00\x00\x00\x00\x00\x00\xad\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x05\x8c\x06\xa0\x06\xbb\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x11\x39\x5a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x09\x00\x00\x00\x00\x00\x00\x0f\x05\x6c\x05\x00\x00\x00\x00\xdf\xff\x00\x00\x00\x00\x00\x00\xd6\x03\x00\x00\x00\x00\x05\x00\x72\x04\x5d\x05\xc3\x08\x00\x00\x00\x00\x07\x00\x0d\x00\x00\x00\x00\x00\x76\x00\xcc\x08\x00\x00\x00\x00\xb3\xff\x00\x00\x00\x00\x00\x00\x55\x06\x1f\x09\x57\x07\x00\x00\x00\x00\xc0\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\xae\x01\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x04\x00\x00\x00\x00\xcf\x0b\x00\x00\x00\x00\xbd\x01\xc1\x09\x00\x00\x00\x00\x00\x00\xf8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x93\x35\xed\x35\x00\x00\x00\x00\x66\x47\x00\x00\x00\x00\x2d\x09\x00\x00\x09\x00\x23\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x12\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x02\x21\x09\x00\x00\x00\x00\x00\x00\x10\x03\x80\x01\x00\x00\x00\x00\xcb\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x47\x00\x00\x00\x00\x00\x00\xa2\x46\x00\x00\x72\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x46\x00\x00\x00\x00\x00\x00\xd3\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x3d\xe0\x3d\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x3d\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x0c\xa7\x47\xc4\x47\x6b\x39\xd5\x01\x00\x00\x00\x00\x00\x00\x61\x46\x00\x00\x4d\x06\x6c\x07\x96\x41\xf0\x41\x0d\x42\x67\x42\xbe\x09\x00\x00\x7b\x00\x00\x00\xd0\x08\xdb\x08\x95\x05\x9f\x05\xe5\x02\x47\x03\x00\x00\xab\x03\x00\x00\xe8\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x03\x05\x48\xe6\x08\xc2\x05\xe7\x08\x00\x00\x11\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x06\x00\x00\x48\x06\x00\x00\xc6\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x3d\x00\x00\x00\x00\x00\x00\x4b\x06\x00\x00\x00\x00\x00\x00\x14\x40\x31\x40\x00\x00\xb9\x05\x00\x00\x00\x00\x00\x00\x41\x3e\x00\x00\x64\x3e\x84\x42\x5a\x34\x00\x00\x00\x00\x00\x00\xc5\x3e\xde\x42\xb4\x34\x00\x00\x26\x00\x2c\x00\x00\x00\xfb\x42\x55\x43\x00\x00\x47\x36\x00\x00\x00\x00\x61\x46\x00\x00\x00\x00\x00\x00\xbc\x09\xe1\x08\xb0\x06\x00\x00\x00\x00\xf0\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x06\x00\x00\x00\x00\x00\x00\x29\x48\x00\x00\x04\x0a\x00\x00\x00\x00\xd7\x08\x00\x00\x00\x00\x00\x00\xaf\x09\x00\x00\x1e\x0c\x76\x01\x96\x09\x98\x09\x9b\x09\xa0\x09\x2c\x06\x68\x03\x79\x03\x01\x04\x4d\x01\x38\x01\x00\x00\x00\x00\x08\x06\xe4\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x40\x7a\xff\x68\x02\x00\x00\xf1\x08\x00\x00\x00\x00\x72\x43\x00\x00\xcc\x43\x00\x00\x20\x09\x72\x36\xf8\x08\xe9\x43\x43\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\xdb\x05\x00\x00\x00\x00\x18\x0a\x00\x00\x35\x0a\x64\x0a\x78\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\xff\xbc\x0a\xc0\x06\x06\x07\x00\x00\x00\x00\x00\x00\x00\x00\x19\x02\x00\x00\x00\x00\xf9\x08\xfb\x08\xdc\x09\x00\x00\x3b\x09\x00\x00\x01\x47\xf6\x09\x1c\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x07\x00\x00\x66\x0a\x72\x07\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\x37\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x04\x89\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x36\x00\x00\x00\x00\x00\x00\x60\x44\x00\x00\x00\x00\x00\x00\x83\x07\x26\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x09\x05\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x09\x73\x04\x00\x00\x87\x04\xd9\x0a\xce\x04\xe0\x04\x5d\x01\x00\x00\xac\x06\x00\x00\x00\x00\x04\x0c\x7f\x02\xb2\xff\x1b\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x04\x2f\x0b\x99\x09\xb9\x09\xbd\x09\xff\x04\x6e\x05\xe8\x00\x9a\x07\x46\x01\xb7\x07\xa7\x01\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\xff\x00\x00\x00\x00\x26\x3f\x00\x00\x00\x00\x08\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x39\x00\x00\x00\x00\x00\x00\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\x44\x7f\x04\x00\x00\x00\x00\x00\x00\xf9\x09\x00\x00\x91\x07\x9e\x07\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x09\x46\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x07\xbd\x07\x10\x09\x00\x00\x00\x00\x00\x00\xd7\x44\x0e\x35\x31\x45\x00\x00\x00\x00\x68\x35\x00\x00\x00\x00\xcd\x07\x00\x00\x4f\x05\x00\x00\xe2\x39\x05\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x03\x00\x00\x00\x00\x9f\x01\xa7\x05\xa3\x09\xb4\x09\xbf\x05\x00\x00\x00\x00\x00\x00\x85\x09\x8b\x09\x00\x00\xff\x39\x80\x37\x8e\x09\xe0\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\xa5\x09\x06\x04\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xff\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x09\x03\x0a\x02\x05\x00\x00\x00\x00\x08\x0a\xcb\x07\xa8\x40\x02\x41\xe9\x06\x43\x0b\x7b\x01\x00\x00\xfd\x00\x34\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x09\xea\x09\x00\x00\xb0\x02\x00\x00\x2e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\xd9\xff\x00\x00\x00\x00\xe1\xff\x86\x09\x00\x00\x6a\x48\x00\x00\x00\x00\x00\x00\x70\x09\x9d\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x13\x00\x00\xfd\x09\x00\x00\x00\x00\x59\x3a\xc5\x00\x00\x00\x7e\x46\x6f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xff\x00\x00\x00\x00\x94\x09\x00\x00\x00\x00\x36\x0a\x00\x00\x00\x00\x00\x00\xaf\x05\x00\x00\x3f\x09\x7c\x00\x74\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x05\x00\x00\x00\x00\x00\x00\x00\x00\x76\x3a\x00\x00\x84\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x46\xd1\xff\x76\x04\x00\x00\x00\x00\x8a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x0b\x00\x00\xd9\x09\x00\x00\x4f\x09\x00\x00\x00\x00\xb9\x07\x6d\x0c\xdb\x00\xdf\x07\x1a\x0a\x00\x00\x57\x09\x60\x0b\x00\x00\x00\x00\x20\x0d\x57\x00\x00\x00\x00\x00\x00\x00\x5e\x09\x00\x00\x00\x00\x00\x00\x04\x02\xe6\x06\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x0e\x08\x00\x00\x00\x00\xa0\x0c\xed\x09\x00\x00\xd0\x05\x61\x09\x00\x00\xde\x09\x00\x00\x64\x09\xdc\x05\xf7\x09\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\xd1\x09\xa6\x09\x00\x00\xd0\x3a\x43\x3f\x00\x00\x00\x00\xed\x3a\x47\x3b\x64\x3b\x00\x00\x00\x00\x00\x00\x54\x0a\x5a\x0a\x00\x00\x71\x09\x00\x00\x00\x00\x6e\x06\x73\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x06\x00\x00\xa7\x00\x00\x00\x35\x00\x44\x00\x00\x00\xe6\x00\x9c\x00\x21\x08\xd6\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x38\x06\x6a\x07\x00\x00\x00\x00\xea\x06\xbe\x3b\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x2e\x00\x31\x00\x47\x02\x00\x00\x9c\x07\x00\x00\x00\x00\x1a\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x0a\x00\x00\x7e\xff\x00\x00\x7f\x09\xe6\x00\x00\x00\x34\x0c\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x1a\x07\x00\x00\x00\x00\x00\x00\x4e\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x19\x00\x00\x00\x56\x06\x80\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x05\x00\x00\x00\x00\xa6\x06\xdb\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x04\x00\x00\x00\x00\x00\x00\x7d\x0b\x4a\x00\x4e\x00\x00\x00\x00\x00\xd3\xff\x11\x05\x00\x00\x87\x09\x68\x00\x00\x00\x00\x00\x94\x02\x00\x00\x88\x09\x00\x00\x66\x04\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x21\x08\x00\x00\xac\x04\x90\x09\x00\x00\xa9\x00\x00\x00\x89\x09\x00\x00\x00\x00\xb5\x06\x00\x00\x35\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x08\x00\x00\x00\x00\x00\x00\x21\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x08\x00\x00\x00\x00\xfa\x09\x8a\x05\x5a\x0c\x00\x00\x00\x00\x00\x00\x3e\x08\x00\x00\x00\x00\x2a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x80\x05\x00\x00\x9d\x01\x9a\x03\xe2\xff\x40\x03\x00\x00\x8c\x09\x00\x00\x00\x00\x82\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\xa8\x45\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x09\x00\x00\x2f\x05\x00\x00\xf3\x01\x5c\x0a\x77\x0c\x21\x04\x00\x00\x60\x12\x8b\x0c\x00\x00\xc2\x02\x00\x00\x00\x00\x89\x01\x96\x08\xc5\x08\xb6\xff\x00\x00\x00\x00\x00\x00\x80\x0a\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x01\xd1\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\x6f\x0a\xe2\x08\x00\x00\x70\x0a\x00\x00\x3b\x0f\xf6\x08\xe5\x06\x2d\x0a\x00\x00\x0a\x09\x00\x00\x3e\x04\x39\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x06\x00\x00\x2b\x08\x00\x00\x00\x00\x31\x13\x06\x01\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\x81\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x09\x00\x00\x00\x00\x00\x00"#
-
-happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#
-happyAdjustOffset off = off
-
-happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\x19\xfd\x00\x00\x00\x00\x19\xfd\x00\x00\x00\x00\x00\x00\x19\xfd\x19\xfd\x19\xfd\x19\xfd\x00\x00\x00\x00\xea\xff\xef\xfc\x00\x00\xe2\xff\x00\x00\xe2\xff\x00\x00\x00\x00\x00\x00\xbc\xff\x85\xfd\x61\xfe\x5f\xfe\x59\xfe\x58\xfe\x56\xfe\x54\xfe\x4e\xfe\x44\xfe\x3f\xfe\x36\xfe\x33\xfe\x24\xfe\x00\x00\x00\x00\x2f\xfe\x71\xfd\x7a\xfd\x30\xfe\x32\xfe\x79\xfd\x31\xfe\x6c\xfd\x3e\xfd\x50\xfd\x6a\xfd\x65\xfd\x34\xfd\x2e\xfe\x4d\xfd\x51\xfd\x4f\xfd\x36\xfd\x35\xfd\x32\xfd\x33\xfd\x23\xfd\x21\xfd\x22\xfd\x20\xfd\x1f\xfd\x1e\xfd\x1d\xfd\x1c\xfd\x1b\xfd\x1a\xfd\x00\x00\x00\x00\x00\x00\xa7\xfd\x4e\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x19\xfd\x00\x00\x00\x00\x18\xfe\x00\x00\x00\x00\xfd\xfd\x49\xfd\x3d\xfd\x3c\xfd\x3a\xfd\x3b\xfd\x48\xfd\x47\xfd\x46\xfd\x45\xfd\x44\xfd\x43\xfd\x42\xfd\x41\xfd\x4c\xfd\x00\x00\x19\xfd\x38\xfd\x39\xfd\x4a\xfd\x19\xfd\x19\xfd\x19\xfd\x00\x00\x19\xfd\x4b\xfd\x37\xfd\x40\xfd\x3f\xfd\x00\x00\x00\x00\x00\x00\x01\xff\xd0\xfe\x07\xff\xfd\xfe\xee\xfe\x00\x00\xe6\xfe\xe5\xfe\xfc\xfe\xdf\xfe\x00\x00\xd3\xfe\x00\x00\x00\x00\xfb\xfc\xd8\xfe\xfb\xfe\xfc\xfc\xe8\xfe\xe7\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xfe\xe2\xfe\xe3\xfe\xf1\xfe\x00\x00\x00\x00\xef\xfe\xfa\xfc\xf9\xfc\xf8\xfc\xc8\xfe\x00\x00\x00\x00\x00\x00\xd6\xff\xd6\xff\x95\xfd\x00\x00\x19\xfd\x00\x00\x61\xfe\x00\x00\xe2\xff\xf1\xff\xef\xff\x19\xfd\x00\x00\xe2\xff\x00\x00\x36\xff\x00\x00\xd6\xff\xd6\xff\x00\x00\xd7\xff\xd9\xff\x00\x00\xe0\xfe\xe1\xfe\x00\x00\xed\xfe\x78\xfd\x77\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\xff\xd0\xfe\xcd\xfe\x00\x00\x00\x00\xdc\xfe\xcd\xfe\x00\x00\x00\x00\x00\x00\xda\xfe\x0e\xfe\xcd\xfe\x00\x00\x00\x00\x00\x00\x52\xfd\x31\xfd\x00\x00\x2e\xfd\x2a\xfd\x2d\xfd\x28\xfd\x2f\xfd\x24\xfd\x30\xfd\xde\xfe\x26\xfd\x53\xfd\x00\x00\x29\xfd\xe3\xfe\x25\xfd\x00\x00\xd1\xfe\xe4\xfe\xfa\xfe\xfe\xfe\x00\x00\xd5\xfe\x5b\xfd\x00\x00\xf6\xfc\xf5\xfc\x00\x00\x00\x00\xcf\xfe\xf4\xfc\xf3\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x84\xfd\x8a\xfd\x8a\xfd\x00\x00\x3c\xfe\x00\x00\x45\xfe\x87\xfd\x4c\xfe\x50\xfe\xd6\xff\xd6\xff\x46\xfe\x00\x00\x4a\xfe\x00\x00\xc4\xfd\xf8\xfd\xf4\xfd\xf7\xfd\xf6\xfd\xf5\xfd\xf0\xfd\xef\xfd\xee\xfd\xed\xfd\xeb\xfd\xec\xfd\xea\xfd\xe9\xfd\xe8\xfd\xe7\xfd\xe6\xfd\xe5\xfd\xe4\xfd\xe3\xfd\xe2\xfd\xe1\xfd\xe0\xfd\xf2\xfd\xf1\xfd\xdf\xfd\xde\xfd\xdd\xfd\xdc\xfd\xdb\xfd\xda\xfd\xd9\xfd\xd8\xfd\xd7\xfd\xd6\xfd\xd5\xfd\xd4\xfd\xd3\xfd\xd2\xfd\xd1\xfd\xd0\xfd\xcf\xfd\xce\xfd\xcd\xfd\xcc\xfd\xcb\xfd\xca\xfd\xc9\xfd\xf3\xfd\xc8\xfd\xc7\xfd\xc6\xfd\x19\xfe\x1a\xfe\x00\x00\x00\x00\x00\x00\x1c\xfe\x1b\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x58\xfe\x00\x00\x00\x00\x05\xfe\x00\x00\x94\xfd\x47\xfe\x38\xfe\x37\xfe\xff\xfe\x00\x00\x3d\xfe\x19\xfd\x09\xfe\xa6\xfd\xa5\xfd\x00\x00\x55\xfd\x54\xfd\x00\x00\x5f\xfd\x2c\xfd\x2b\xfd\x00\x00\x27\xfd\xc0\xfd\x00\x00\xbf\xfd\x72\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x75\xfd\x0c\xfe\x09\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xfd\x00\x00\x2c\xfd\x2b\xfd\x76\xfd\x29\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x40\xfe\x57\xfd\x56\xfd\x5e\xfe\x61\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\xff\x00\x00\xec\xfc\xee\xfc\x00\x00\x00\x00\xd6\xff\xd6\xff\xd6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\xff\x0d\xff\x70\xfd\x69\xfd\x00\x00\x00\x00\x00\x00\xd6\xff\x00\x00\x00\x00\xea\xff\xec\xff\x17\xfd\x18\xfd\xf0\xfc\x00\xfd\xff\xfc\xd6\xff\xed\xfc\xd6\xff\xbd\xff\xb8\xff\xbb\xff\x5a\xfe\x5b\xfe\x5c\xfe\x5d\xfe\x60\xfe\x00\x00\x00\x00\x57\xfe\x55\xfe\x00\x00\x82\xfd\x7f\xfd\x00\x00\x35\xfe\x81\xfd\x86\xfd\x39\xfe\x3a\xfe\x6b\xfd\x64\xfd\x27\xfe\x17\xfe\x10\xfe\x16\xfe\x2d\xfe\x15\xfe\x11\xfe\x73\xfd\x0f\xfe\x2c\xfe\x00\x00\x00\x00\x2b\xfe\x0a\xfe\x0d\xfe\x74\xfd\x2a\xfe\x00\x00\x29\xfe\x00\x00\xbe\xfd\x00\x00\x00\x00\x08\xfe\x28\xfe\x00\x00\x00\x00\x00\x00\x48\xfe\xd6\xff\xd6\xff\x3e\xfe\x00\x00\x00\x00\x26\xfe\x00\x00\x22\xfe\x21\xfe\x00\x00\x20\xfe\x1f\xfe\x51\xff\x9f\xff\x00\x00\xd6\xff\x91\xff\x90\xff\x00\x00\x7b\xff\x52\xff\x4b\xff\x4a\xff\x50\xff\x83\xff\x58\xfe\x4f\xff\x16\xfd\x4e\xff\x00\x00\x00\x00\x00\x00\x5b\xff\x00\x00\x01\xfd\x9d\xff\x9c\xff\x9b\xff\x64\xff\x5a\xff\x00\x00\x00\x00\x1d\xff\x1d\xff\x1d\xff\x1d\xff\x1f\xff\x11\xff\x11\xff\x00\x00\x3d\xff\x00\x00\x00\x00\x1d\xfe\x00\x00\xc1\xfd\x00\xfe\x00\x00\xfa\xfd\xfe\xfd\x4b\xfe\xfc\xfd\x00\x00\x19\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x4d\xfe\x00\x00\x3b\xfe\x00\x00\x00\x00\x88\xfd\x8a\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xfe\x04\xff\x00\x00\x05\xff\x06\xff\x02\xff\xdd\xfe\xd6\xfe\xd7\xfe\xdb\xfe\xf9\xfe\xf4\xfe\x00\x00\xd9\xfe\xf8\xfe\x00\x00\xf7\xfe\x00\x00\x00\x00\x00\x00\xeb\xfe\xf6\xfe\xf5\xfe\xf2\xfe\x00\x00\xea\xfe\x00\x00\x00\x00\x00\x00\xc9\xfe\xc7\xfe\x00\x00\x00\x00\xd6\xff\xd6\xff\xbf\xff\xdb\xff\xd8\xff\xde\xff\x55\xff\x00\x00\x00\x00\x00\x00\x00\x00\xdf\xff\x00\x00\xc4\xfd\xe4\xff\xc1\xfd\x00\x00\xd4\xff\x00\x00\x00\x00\x34\xff\x4c\xff\x35\xff\x4d\xff\xd6\xff\x53\xff\x67\xfe\xd6\xff\x7c\xfd\x32\xfe\x00\x00\xd7\xff\xda\xff\xdd\xff\xd2\xfe\x00\x00\xe9\xfe\xec\xfe\xce\xfe\xcb\xfe\xcc\xfe\xca\xfe\x00\x00\x9d\xfe\x9c\xfe\x9a\xfe\x96\xfe\xfd\xfc\x95\xfe\x94\xfe\x00\x00\x00\x00\x98\xfe\xf7\xfc\x00\x00\x42\xfe\x43\xfe\x8d\xfd\x8b\xfd\x8c\xfd\x8a\xfd\x8e\xfd\x4f\xfe\x52\xfe\x00\x00\x92\xfd\x93\xfd\x8f\xfd\xd6\xff\x00\x00\x49\xfe\x05\xfe\x00\x00\x00\x00\xc2\xfd\x00\x00\xc5\xfd\x00\x00\x4d\xfd\x32\xfd\x49\xfd\x3d\xfd\x3c\xfd\x3a\xfd\x3b\xfd\x48\xfd\x47\xfd\x46\xfd\x45\xfd\x44\xfd\x43\xfd\x42\xfd\x41\xfd\x4c\xfd\x38\xfd\x39\xfd\x4a\xfd\x4b\xfd\xf9\xfd\x67\xfd\x8c\xfe\x00\x00\x00\x00\x3e\xff\x3c\xff\x3a\xff\x37\xff\x00\x00\x00\x00\x00\x00\x12\xff\x00\x00\x0f\xff\x00\x00\x00\x00\x20\xff\x1d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\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\x02\xfd\x04\xfd\x03\xfd\x57\xff\x00\x00\xc2\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\xfe\x00\x00\xd7\xff\x93\xff\x00\x00\x00\x00\x9e\xff\xa9\xfd\x00\x00\xab\xfd\x00\x00\x19\xfd\x06\xfe\x53\xfe\x00\x00\x00\x00\x9f\xfd\x00\x00\xa2\xfd\xb6\xfd\xb4\xfd\xb3\xfd\xb2\xfd\x00\x00\xa4\xfd\x09\xfe\xb8\xfd\x5e\xfd\xba\xfd\xbc\xfd\x09\xfe\xb9\xfd\x0b\xfe\x14\xfe\x07\xfe\x03\xfe\x04\xfe\x12\xfe\x13\xfe\x00\x00\x00\x00\x34\xfe\x5a\xfd\x60\xfd\xb6\xff\xb9\xff\x00\x00\x00\x00\xeb\xff\xe8\xff\xe5\xff\x00\x00\x00\x00\x00\x00\x0a\xff\x00\x00\x00\x00\xe7\xff\x09\xff\x6f\xfd\x68\xfd\x0b\xff\xe6\xff\xe9\xff\xd6\xff\xd6\xff\x00\x00\xb7\xff\x83\xfd\x80\xfd\xbd\xfd\x00\x00\x00\x00\xb1\xfd\x00\x00\x00\x00\xa0\xfd\xa1\xfd\xd6\xff\x9c\xfd\x00\x00\xa8\xfd\x00\x00\x00\x00\x25\xfe\xa0\xff\x59\xfd\x58\xfd\x99\xff\x5d\xfd\x63\xfd\x00\x00\x1e\xfe\x92\xff\x8e\xfe\xa6\xfe\xbb\xfe\x00\x00\xaf\xfe\x49\xff\x00\x00\x32\xff\x69\xfe\x65\xfe\x63\xfe\x00\x00\x00\x00\x69\xfe\x25\xff\x31\xff\x30\xff\x2f\xff\x2e\xff\x2d\xff\x2c\xff\x2b\xff\x2a\xff\x00\x00\x88\xfe\xc4\xfe\x7a\xff\x00\x00\x58\xff\x03\xff\x59\xff\x64\xff\x66\xff\x67\xff\x68\xff\x69\xff\x6a\xff\x65\xff\x78\xfe\x6e\xff\x00\x00\x00\x00\x08\xff\x78\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xfd\x12\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\xff\x21\xff\x80\xff\x13\xff\x7f\xff\x00\x00\x10\xff\x7e\xff\x7d\xff\x00\x00\x00\x00\x00\x00\x42\xff\x00\x00\x00\x00\xfd\xfd\x01\xfe\x00\x00\xff\xfd\xfb\xfd\x00\x00\x91\xfd\x4c\xfe\x89\xfd\x00\x00\x00\x00\x00\x00\x9d\xfe\x93\xfe\x99\xfe\x00\x00\xf3\xfe\x00\x00\xc0\xff\xdc\xff\x00\x00\xd7\xff\x7e\xfd\x00\x00\xd7\xff\x56\xff\x00\x00\x00\x00\x00\x00\xd5\xff\xd0\xff\xf0\xff\x00\x00\xfd\xfd\xed\xff\x00\x00\xd0\xff\xce\xff\xcd\xff\xcb\xff\x00\x00\xd1\xff\x00\x00\x00\x00\x00\x00\xe3\xff\xe1\xff\xe0\xff\x54\xff\x7d\xfd\x00\x00\x7b\xfd\x00\x00\x9b\xfe\x97\xfe\x00\x00\x91\xfe\x00\x00\x00\x00\x90\xfd\x00\x00\xc3\xfd\x4a\xfe\x8b\xfe\x7c\xff\x3b\xff\x39\xff\x38\xff\x0e\xff\x14\xff\x22\xff\x00\x00\x00\x00\x00\x00\x00\x00\x1c\xff\x00\x00\x43\xff\x46\xff\x47\xff\x66\xfd\x0d\xfd\x00\x00\x0e\xfd\x05\xfd\x00\x00\x09\xfd\xc8\xfe\x11\xfd\x14\xfd\x15\xfd\x8f\xff\x98\xff\x00\x00\x00\x00\x00\x00\x6f\xff\x86\xff\x19\xfd\x00\x00\x84\xff\x8a\xff\x00\x00\x00\x00\xc1\xfe\xbf\xfe\x87\xff\x19\xfd\x81\xff\x00\x00\x6e\xfd\x00\x00\x00\x00\x00\x00\x29\xff\x28\xff\x27\xff\x26\xff\x6b\xfe\x19\xfd\x00\x00\x66\xfe\x64\xfe\x6c\xfe\x00\x00\x00\x00\xb5\xfe\xb3\xfe\x00\x00\xc8\xfe\x8d\xfe\xa6\xfe\x19\xfd\x8c\xff\xa5\xfe\xa3\xfe\x01\xfd\xa6\xfe\xbb\xfe\x00\x00\x00\x00\x00\x00\xac\xfd\xaa\xfd\x69\xfe\x99\xfd\x97\xfd\x00\x00\xd7\xff\x9e\xfd\xb5\xfd\x00\x00\x00\x00\x00\x00\xa3\xfd\xb7\xfd\xbb\xfd\xb4\xff\xd7\xff\x00\x00\x00\x00\xf1\xfc\xf2\xfc\xb2\xff\x00\x00\xb0\xfd\xae\xfd\xaf\xfd\x9d\xfd\x9a\xfd\x98\xfd\x9b\xfd\x9a\xff\x5c\xfd\x62\xfd\xa6\xfe\x89\xff\x00\x00\xa4\xfe\xd6\xff\xd6\xff\x8b\xff\x00\x00\x00\x00\xaa\xfe\x00\x00\xb1\xfe\xae\xfe\x00\x00\xd8\xfe\x00\x00\xaf\xfe\x48\xff\x33\xff\x00\x00\x00\x00\x6a\xfe\x82\xff\x00\x00\x00\x00\x00\x00\xd6\xff\xd6\xff\xc4\xfe\xc5\xfe\xc4\xfe\x79\xff\x85\xff\xd6\xff\xd6\xff\x6d\xff\x6c\xff\x6b\xff\x8d\xff\x76\xff\x77\xff\x63\xff\x97\xff\x00\x00\x13\xfd\x19\xfd\x00\x00\x06\xfd\x00\x00\x10\xfd\x00\x00\x00\x00\x41\xff\x3f\xff\x1b\xff\x00\x00\x00\x00\x18\xff\x16\xff\x00\x00\x00\x00\x00\x00\x96\xfd\x00\x00\x00\x00\x90\xfe\x00\x00\xc6\xfe\xc7\xff\x00\x00\xcc\xff\xc2\xff\xc1\xff\xc8\xff\x00\x00\x00\x00\xd1\xff\xd2\xff\x00\x00\x00\x00\xcf\xff\xd3\xff\x00\x00\xc5\xff\xc3\xff\xa2\xff\xa1\xff\xca\xff\xc4\xff\x92\xfe\x00\x00\x00\x00\x51\xfe\x00\x00\x00\x00\x00\x00\x17\xff\x19\xff\x44\xff\x00\x00\x45\xff\x0c\xfd\x07\xfd\x00\x00\xd6\xff\xd6\xff\x00\x00\x8e\xff\x19\xfd\x76\xfe\x00\x00\x00\x00\x00\x00\xbe\xfe\xc0\xfe\x86\xfe\x00\x00\x00\x00\x23\xff\x00\x00\x6d\xfd\x62\xfe\xb4\xfe\x00\x00\x00\x00\xaa\xfe\xb2\xfe\x00\x00\x00\x00\xb0\xfe\x00\x00\x00\x00\x00\x00\xa2\xfe\x9e\xfe\x00\x00\x88\xff\x00\x00\xb5\xff\xbe\xff\xb3\xff\x00\x00\xaf\xff\xd0\xff\xad\xfd\x9f\xfe\x00\x00\xa1\xfe\xbc\xfe\xbd\xfe\xd6\xff\xb8\xfe\x00\x00\xad\xfe\x00\xff\x00\x00\x00\x00\xa8\xfe\xac\xfe\xd7\xfe\x24\xff\x89\xfe\x8a\xfe\x83\xfe\xd6\xff\x84\xfe\x82\xfe\x80\xfe\x00\x00\x00\x00\xc3\xfe\x79\xfe\x7a\xfe\x00\x00\x70\xfe\x71\xfe\xd6\xff\x74\xfe\x72\xfe\x73\xfe\x5b\xff\x00\x00\x62\xff\x00\x00\x00\x00\x00\x00\x55\xff\x00\x00\x00\x00\x08\xfd\x40\xff\x00\x00\x1e\xff\x00\x00\x00\x00\x8f\xfe\xc9\xff\x00\x00\x00\x00\xee\xff\xc6\xff\x00\x00\x02\xfe\x00\x00\x0a\xfd\x0b\xfd\x96\xff\x94\xff\x00\x00\x5d\xff\x00\x00\x00\x00\x00\x00\xd7\xff\x77\xfe\x8e\xfe\x72\xff\x00\x00\x00\x00\x81\xfe\x00\x00\x00\x00\x7f\xfe\xd7\xff\x87\xfe\xab\xfe\x00\x00\x00\x00\x00\x00\xd7\xff\xba\xfe\xa0\xfe\x00\x00\xd0\xff\xac\xff\xab\xff\xfe\xfc\xa8\xff\x00\x00\x00\x00\xa9\xff\xaa\xff\x00\x00\x00\x00\xd1\xff\xb0\xff\xb9\xfe\xb7\xfe\x00\x00\xa7\xfe\xa9\xfe\x85\xfe\x7a\xff\x00\x00\x7b\xfe\x75\xff\x7d\xfe\x00\x00\x00\x00\xa6\xfe\xbb\xfe\x75\xfe\x00\x00\x60\xff\x5e\xff\x00\x00\x61\xff\x95\xff\x15\xff\x41\xfe\x5c\xff\x5f\xff\x6f\xfe\xa6\xfe\x6e\xfe\x98\xff\x71\xff\x7c\xfe\x00\x00\x00\x00\x49\xff\x7e\xfe\x00\x00\xad\xff\xb1\xff\x00\x00\xa3\xff\xa6\xff\x00\x00\xa7\xff\xa5\xff\x00\x00\x00\x00\x00\x00\x74\xff\x70\xff\x6d\xfe\x73\xff\x00\x00\xa4\xff\xb6\xfe"#
-
-happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x04\x00\x04\x00\x04\x00\x02\x00\x04\x00\x04\x00\x11\x00\x12\x00\x13\x00\x04\x00\x38\x00\x11\x00\x2b\x00\x40\x00\x0b\x00\x0b\x00\x47\x00\x48\x00\x49\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\x4a\x00\x67\x00\x0d\x00\x0e\x00\x21\x00\x22\x00\x4e\x00\x40\x00\x47\x00\x48\x00\x49\x00\x70\x00\x53\x00\x54\x00\x1b\x00\x0d\x00\x0e\x00\x4a\x00\x17\x00\x40\x00\x13\x00\x0d\x00\x0e\x00\x79\x00\x0d\x00\x0e\x00\x1b\x00\x0d\x00\x0e\x00\x4a\x00\x1b\x00\x40\x00\xd6\x00\x0d\x00\x0e\x00\x0d\x00\x0e\x00\xcb\x00\x0d\x00\x0e\x00\x1f\x00\x4a\x00\x0d\x00\x0e\x00\x3d\x00\xcb\x00\xd6\x00\x66\x00\x67\x00\xd6\x00\x3d\x00\x1b\x00\x23\x00\x01\x00\x1b\x00\x1c\x00\x00\x00\x0d\x00\x0e\x00\x0d\x00\x1b\x00\x1b\x00\x1b\x00\x0d\x00\x0e\x00\x2f\x00\x00\x00\x0d\x00\x0e\x00\xe9\x00\x1c\x00\x14\x00\x15\x00\x4b\x00\x15\x00\x60\x00\x02\x01\x22\x00\x3c\x00\x48\x00\x0a\x00\x4a\x00\x0c\x00\x1b\x00\xf8\x00\xf9\x00\x1e\x00\x24\x00\x24\x00\x24\x00\x02\x01\xf5\x00\x02\x01\x02\x01\x9c\x00\x31\x00\x1e\x00\x50\x00\x53\x00\x54\x00\x02\x01\xf5\x00\x6b\x00\x7c\x00\x4e\x00\x47\x00\x48\x00\x00\x00\x4a\x00\x4b\x00\x28\x00\x3d\x00\x6d\x00\x4f\x00\x52\x00\x3d\x00\x0a\x00\x17\x00\x18\x00\x11\x01\x48\x00\x49\x00\x16\x00\x72\x00\x75\x00\x27\x00\x80\x00\x81\x00\x10\x01\x11\x01\x6d\x00\x25\x00\x2e\x00\x27\x00\x1b\x00\xe9\x00\x6d\x00\x1e\x00\x2c\x00\x2d\x00\x2e\x00\x6d\x00\x9b\x00\x25\x00\xf5\x00\x33\x00\xf8\x00\xf9\x00\x77\x00\xe3\x00\xf8\x00\xf9\x00\x96\x00\x3b\x00\x9b\x00\x75\x00\xe4\x00\x3f\x00\x96\x00\x41\x00\x42\x00\x43\x00\x28\x00\x77\x00\xe3\x00\x18\x00\x90\x00\xf5\x00\xf6\x00\x90\x00\x18\x00\x10\x01\x11\x01\xf5\x00\xf5\x00\xf6\x00\xfe\x00\xff\x00\x25\x00\x9b\x00\x27\x00\x23\x00\xf5\x00\xf6\x00\x02\x01\x2c\x00\x2d\x00\x2e\x00\x9b\x00\x02\x01\x9b\x00\xf5\x00\x33\x00\xf8\x00\xf9\x00\xe5\x00\x75\x00\xd4\x00\xe3\x00\xe9\x00\x3b\x00\x02\x01\xe7\x00\xdc\x00\x3f\x00\x24\x00\x41\x00\x42\x00\x43\x00\xdc\x00\xf4\x00\xf5\x00\xf6\x00\x02\x01\xf8\x00\xf9\x00\xf5\x00\xf6\x00\xcc\x00\x11\x01\xf9\x00\x23\x00\x24\x00\xd4\x00\xcc\x00\x02\x01\xb1\x00\xe5\x00\xb3\x00\xb4\x00\xe5\x00\x02\x01\x02\x01\x02\x01\xe9\x00\x02\x01\x02\x01\x0f\x01\x02\x01\x02\x01\x02\x01\x0e\x01\xf4\x00\xf5\x00\xf6\x00\xf4\x00\xf5\x00\xf6\x00\x9a\x00\xf8\x00\xf9\x00\x15\x01\x17\x01\x16\x01\xe4\x00\x06\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xf5\x00\xf6\x00\xa8\x00\xa9\x00\xaa\x00\x78\x00\x79\x00\xad\x00\xae\x00\xaf\x00\xe3\x00\xf5\x00\x0f\x01\xf5\x00\xe7\x00\xe3\x00\x1b\x00\x86\x00\xe3\x00\xb9\x00\xe3\x00\x23\x00\xe7\x00\x4b\x00\xe7\x00\x27\x00\x06\x00\x07\x00\xf5\x00\xf6\x00\x2c\x00\x1b\x00\xf9\x00\xf5\x00\xf6\x00\x9a\x00\xf5\x00\xf6\x00\xf5\x00\xf6\x00\xf9\x00\x11\x01\xf9\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\x70\x00\xf5\x00\xa8\x00\xa9\x00\xaa\x00\x00\x00\x0e\x01\xad\x00\xae\x00\xaf\x00\xdf\x00\x70\x00\xe1\x00\xe2\x00\x18\x00\x23\x00\xe5\x00\xe6\x00\xf5\x00\xb9\x00\xe9\x00\x29\x00\xe5\x00\x66\x00\x67\x00\x23\x00\xe9\x00\x23\x00\x10\x01\x11\x01\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xf4\x00\xf5\x00\xf6\x00\x1a\x00\xf8\x00\xf9\x00\x70\x00\x01\x01\x10\x01\x11\x01\x04\x01\x05\x01\xea\x00\x02\x01\x3b\x00\xed\x00\x0a\x01\xef\x00\x23\x00\x1a\x00\xdf\x00\x2c\x00\xe1\x00\xe2\x00\x29\x00\xed\x00\xe5\x00\xe6\x00\x23\x00\xfb\x00\xe9\x00\x14\x01\xfe\x00\xff\x00\xe9\x00\x46\x00\x47\x00\x48\x00\x49\x00\xfb\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xf8\x00\xf9\x00\xf8\x00\xf9\x00\xde\x00\xe3\x00\x25\x00\x01\x01\x27\x00\xe7\x00\x04\x01\x05\x01\xe6\x00\x2c\x00\x2d\x00\x2e\x00\x0a\x01\x90\x00\x91\x00\x92\x00\x33\x00\x1a\x00\xe3\x00\xf5\x00\xf6\x00\xe7\x00\xe7\x00\xf9\x00\x3b\x00\xf7\x00\x23\x00\x18\x00\x3f\x00\x7a\x00\x41\x00\x42\x00\x43\x00\x09\x00\x0a\x00\xe3\x00\xf5\x00\xf6\x00\x23\x00\xf9\x00\xf9\x00\x25\x00\xe5\x00\x27\x00\x23\x00\xf5\x00\xa7\x00\x2c\x00\x8d\x00\x4b\x00\x2e\x00\x39\x00\x3a\x00\xf5\x00\xf6\x00\x33\x00\xf5\x00\xf4\x00\xf5\x00\xf6\x00\x75\x00\x25\x00\x26\x00\x3b\x00\xb9\x00\x1a\x00\xbb\x00\x3f\x00\x3b\x00\x41\x00\x42\x00\x43\x00\x10\x01\x11\x01\x23\x00\x33\x00\x34\x00\x35\x00\xf5\x00\xf5\x00\xf6\x00\xf8\x00\xf9\x00\x10\x01\x11\x01\x5b\x00\x31\x00\x5d\x00\xf5\x00\x34\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x08\x01\x69\x00\x6a\x00\x6b\x00\x5b\x00\x81\x00\x00\x00\x10\x01\x11\x01\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x10\x01\x11\x01\x1a\x00\x7a\x00\x9a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xe7\x00\xe8\x00\x23\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\x4c\x00\x4d\x00\xa8\x00\xa9\x00\xaa\x00\xa7\x00\x8d\x00\xad\x00\xae\x00\xaf\x00\xe3\x00\xf9\x00\x4b\x00\x06\x00\x07\x00\x23\x00\x75\x00\x25\x00\x26\x00\xb9\x00\x28\x00\x29\x00\x18\x00\xb9\x00\x25\x00\xbb\x00\x27\x00\x9a\x00\xf5\x00\xf6\x00\x17\x00\x33\x00\x34\x00\x35\x00\x1b\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\x29\x00\x00\x00\xa8\x00\xa9\x00\xaa\x00\xf5\x00\xf6\x00\xad\x00\xae\x00\xaf\x00\x3e\x00\x3f\x00\x06\x00\x41\x00\x42\x00\x43\x00\xe7\x00\xe8\x00\xdf\x00\xb9\x00\xe1\x00\xe2\x00\x87\x00\x07\x01\xe5\x00\xe6\x00\x80\x00\x81\x00\xe9\x00\x17\x00\xf5\x00\xf6\x00\x7a\x00\xe5\x00\xf9\x00\xf5\x00\xf6\x00\x2d\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\x06\x00\x07\x00\x06\x01\xf4\x00\xf5\x00\xf6\x00\x8d\x00\x01\x01\x07\x01\xe6\x00\x04\x01\x05\x01\xdf\x00\x1b\x00\xe1\x00\xe2\x00\x0a\x01\x17\x00\xe5\x00\xe6\x00\xf5\x00\xf6\x00\xe9\x00\x06\x00\xf5\x00\x1b\x00\xf7\x00\xf8\x00\xf9\x00\xe3\x00\x2c\x00\x1c\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\x08\x01\x17\x00\xf5\x00\x2c\x00\x09\x00\xf8\x00\xf9\x00\x01\x01\xf5\x00\xf6\x00\x04\x01\x05\x01\x10\x01\x11\x01\xda\x00\xdb\x00\x0a\x01\xf5\x00\x9a\x00\x06\x00\xf8\x00\xf9\x00\x1a\x00\x71\x00\x25\x00\xe5\x00\x27\x00\x75\x00\xa4\x00\x10\x01\x11\x01\x23\x00\xa8\x00\x26\x00\xaa\x00\x2d\x00\x17\x00\xad\x00\xae\x00\xaf\x00\xf4\x00\xf5\x00\xf6\x00\xe5\x00\x10\x01\x11\x01\x33\x00\x34\x00\x35\x00\xb9\x00\x3f\x00\x9c\x00\x41\x00\x42\x00\x43\x00\x1d\x00\x5a\x00\x5b\x00\xf4\x00\xf5\x00\xf6\x00\x23\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x25\x00\xe4\x00\x27\x00\x18\x00\x1a\x00\x07\x00\x09\x00\x0a\x00\x06\x00\x07\x00\x23\x00\x0d\x00\x0e\x00\x23\x00\x23\x00\xdd\x00\xde\x00\xdf\x00\xf5\x00\xe1\x00\xe2\x00\x2e\x00\x2c\x00\xe5\x00\xe6\x00\x17\x00\x3f\x00\xe9\x00\x41\x00\x42\x00\x43\x00\x56\x00\x57\x00\x58\x00\x2c\x00\x26\x00\x2e\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\x06\x00\x07\x00\x76\x00\xb3\x00\x33\x00\x34\x00\x35\x00\x01\x01\xe7\x00\xe8\x00\x04\x01\x05\x01\x1c\x00\x81\x00\x82\x00\x27\x00\x0a\x01\x17\x00\x91\x00\x92\x00\x1c\x00\x94\x00\x2e\x00\x5a\x00\x5b\x00\x20\x00\xf9\x00\x9a\x00\x23\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xa4\x00\xd1\x00\x06\x00\x07\x00\xa8\x00\xd5\x00\xaa\x00\x06\x00\x07\x00\xad\x00\xae\x00\xaf\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x17\x00\x2a\x00\xb9\x00\x18\x00\x2d\x00\x17\x00\x1c\x00\x19\x00\x01\x00\x92\x00\xf2\x00\x94\x00\x9b\x00\x1f\x00\x23\x00\x08\x00\x09\x00\x9a\x00\xfa\x00\xfb\x00\xfc\x00\x18\x00\xfe\x00\xff\x00\x00\x01\x23\x00\x25\x00\xa4\x00\x27\x00\x27\x00\x10\x00\xa8\x00\x23\x00\xaa\x00\x2c\x00\x10\x00\xad\x00\xae\x00\xaf\x00\x10\x00\xdf\x00\xf5\x00\xe1\x00\xe2\x00\xf8\x00\xf9\x00\xe5\x00\xe6\x00\xb9\x00\x9c\x00\xe9\x00\x3e\x00\x3f\x00\x29\x00\x41\x00\x42\x00\x43\x00\x75\x00\x57\x00\x58\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\x9b\x00\x10\x01\x11\x01\x9c\x00\xf2\x00\xe3\x00\x25\x00\x01\x01\x27\x00\xe7\x00\x04\x01\x05\x01\xfa\x00\xfb\x00\x1d\x00\x1c\x00\x0a\x01\x58\x00\x59\x00\xdf\x00\x23\x00\xe1\x00\xe2\x00\xf5\x00\xf6\x00\xe5\x00\xe6\x00\xf9\x00\x9c\x00\xe9\x00\x01\x00\x28\x00\x3f\x00\x2a\x00\x41\x00\x42\x00\x43\x00\x08\x00\x09\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\x1c\x00\x55\x00\x56\x00\x57\x00\x58\x00\x8a\x00\x8b\x00\x01\x01\x23\x00\xf5\x00\x04\x01\x05\x01\xf8\x00\xf9\x00\x6e\x00\x2a\x00\x0a\x01\x1d\x00\x55\x00\x56\x00\x57\x00\x58\x00\xea\x00\x39\x00\x3a\x00\xed\x00\x18\x00\xef\x00\xf5\x00\x03\x00\x9a\x00\xf8\x00\xf9\x00\x22\x00\x08\x00\x09\x00\x10\x01\x11\x01\x20\x00\xfb\x00\xa4\x00\x20\x00\xfe\x00\xff\x00\xa8\x00\x28\x00\xaa\x00\x2a\x00\x23\x00\xad\x00\xae\x00\xaf\x00\x90\x00\x91\x00\x92\x00\x10\x01\x11\x01\x5b\x00\x28\x00\x5d\x00\x2a\x00\xb9\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xf2\x00\x69\x00\x6a\x00\x6b\x00\xbc\x00\xbd\x00\xbe\x00\x9a\x00\xfa\x00\xfb\x00\xfc\x00\x2c\x00\xfe\x00\xff\x00\x00\x01\xe3\x00\x28\x00\xa4\x00\x2a\x00\xe7\x00\x28\x00\xa8\x00\x2a\x00\xaa\x00\x8c\x00\x8d\x00\xad\x00\xae\x00\xaf\x00\xdf\x00\xe9\x00\xe1\x00\xe2\x00\xf5\x00\xf6\x00\xe5\x00\xe6\x00\xf9\x00\xb9\x00\xe9\x00\xe3\x00\xf4\x00\xf5\x00\xf6\x00\xe7\x00\xf8\x00\xf9\x00\x29\x00\x2a\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xe0\x00\xe1\x00\xf5\x00\xf6\x00\xf5\x00\xf6\x00\xf9\x00\x01\x01\xf9\x00\xe9\x00\x04\x01\x05\x01\x0f\x01\x06\x00\x07\x00\xfb\x00\x0a\x01\xe3\x00\xfe\x00\xff\x00\xdf\x00\xe7\x00\xe1\x00\xe2\x00\xf8\x00\xf9\x00\xe5\x00\xe6\x00\x29\x00\x2a\x00\xe9\x00\x58\x00\x59\x00\x3a\x00\xe3\x00\xf5\x00\xf6\x00\x18\x00\xe7\x00\xf9\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xf5\x00\xf6\x00\x01\x01\x4f\x00\xf9\x00\x04\x01\x05\x01\x29\x00\x2a\x00\x71\x00\x3a\x00\x0a\x01\x74\x00\x75\x00\x5b\x00\x28\x00\x5d\x00\x2a\x00\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x18\x00\x69\x00\x6a\x00\x6b\x00\x18\x00\x3c\x00\xf5\x00\x18\x00\xf7\x00\xf8\x00\xf9\x00\xfc\x00\x18\x00\xfe\x00\xff\x00\x00\x01\x5b\x00\x0a\x00\x5d\x00\x0c\x00\x9b\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x0d\x00\x69\x00\x6a\x00\x6b\x00\x10\x01\x11\x01\x9b\x00\x5b\x00\x5c\x00\x5d\x00\x4c\x00\x4d\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x44\x00\x45\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x5a\x00\x5b\x00\x53\x00\x54\x00\x55\x00\x56\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x44\x00\x45\x00\x28\x00\x5b\x00\x2a\x00\x5d\x00\x04\x00\x05\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x06\x00\x07\x00\x6a\x00\x6b\x00\x44\x00\x45\x00\xe3\x00\x5b\x00\x2e\x00\x5d\x00\xe7\x00\x6e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x29\x00\x2a\x00\x6a\x00\x6b\x00\xf5\x00\xf6\x00\x1b\x00\x5b\x00\xf9\x00\x5d\x00\x29\x00\x2a\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x77\x00\xe6\x00\x6a\x00\x6b\x00\x5e\x00\x4e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x28\x00\x28\x00\xf5\x00\x2a\x00\xf7\x00\xf8\x00\xf9\x00\x0c\x00\x0d\x00\x0e\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x28\x00\xe6\x00\x2a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x2a\x00\x09\x00\x2c\x00\x0b\x00\xbc\x00\xbd\x00\xbe\x00\x10\x01\x11\x01\xf5\x00\x5b\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x20\x00\x25\x00\x26\x00\x28\x00\x28\x00\x2a\x00\xf5\x00\x26\x00\xf7\x00\xf8\x00\xf9\x00\x3b\x00\x43\x00\x10\x01\x11\x01\x33\x00\x34\x00\x35\x00\x42\x00\x43\x00\x33\x00\x34\x00\x35\x00\xe5\x00\xda\x00\xdb\x00\xf5\x00\xe6\x00\x43\x00\xf8\x00\xf9\x00\x29\x00\x2a\x00\x10\x01\x11\x01\xe5\x00\x08\x00\x09\x00\xf4\x00\xf5\x00\xf6\x00\x3b\x00\xf5\x00\xe5\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x42\x00\x43\x00\xf4\x00\xf5\x00\xf6\x00\x10\x01\x11\x01\x0c\x00\x0d\x00\x0e\x00\xf4\x00\xf5\x00\xf6\x00\x43\x00\xf5\x00\xe9\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x18\x00\x10\x01\x11\x01\x28\x00\xf2\x00\x2a\x00\xf4\x00\xf5\x00\xf6\x00\x2c\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xf5\x00\x1c\x00\xf7\x00\xf8\x00\xf9\x00\x05\x00\x06\x00\x10\x01\x11\x01\x9d\x00\x9e\x00\x9f\x00\x06\x00\x07\x00\xf5\x00\x0d\x00\x0e\x00\xf8\x00\xf9\x00\x0f\x01\x2e\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x0d\x00\x0e\x00\x10\x01\x11\x01\x17\x00\x23\x00\x19\x00\xe5\x00\x28\x00\xa4\x00\x2a\x00\x20\x00\x1f\x00\xa8\x00\x22\x00\xaa\x00\x10\x01\x11\x01\xad\x00\xae\x00\xaf\x00\x23\x00\xf4\x00\xf5\x00\xf6\x00\xe5\x00\x1a\x00\x98\x00\x99\x00\x9a\x00\xb9\x00\x41\x00\x42\x00\x43\x00\xf5\x00\x0d\x00\x0e\x00\xf8\x00\xf9\x00\xa4\x00\xf4\x00\xf5\x00\xf6\x00\xa8\x00\x18\x00\xaa\x00\x5a\x00\x5b\x00\xad\x00\xae\x00\xaf\x00\x18\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xb9\x00\x10\x01\x11\x01\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xdf\x00\x18\x00\xe1\x00\xe2\x00\xf2\x00\x18\x00\xe5\x00\xe6\x00\x18\x00\x28\x00\xe9\x00\x2a\x00\xfa\x00\xfb\x00\xfc\x00\x18\x00\xfe\x00\xff\x00\x00\x01\x53\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\x9d\x00\x9e\x00\x9f\x00\xdf\x00\x9b\x00\xe1\x00\xe2\x00\x01\x01\x06\x00\xe5\x00\xe6\x00\x05\x00\x06\x00\xe9\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xcf\x00\xd0\x00\xd1\x00\x9b\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\x82\x00\x83\x00\x84\x00\x75\x00\x28\x00\xa4\x00\x2a\x00\x01\x01\x28\x00\xa8\x00\x2a\x00\xaa\x00\x0d\x00\x0e\x00\xad\x00\xae\x00\xaf\x00\x7b\x00\x7c\x00\x7d\x00\x23\x00\x28\x00\x5b\x00\x2a\x00\x5d\x00\x7e\x00\xb9\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xe9\x00\x1d\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x82\x00\x83\x00\x84\x00\x0d\x00\x0e\x00\xf4\x00\xf5\x00\xf6\x00\x25\x00\xf8\x00\xf9\x00\x23\x00\x82\x00\x83\x00\x84\x00\x25\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x2a\x00\x28\x00\xdf\x00\x2a\x00\xe1\x00\xe2\x00\xb4\x00\xb5\x00\xe5\x00\xe6\x00\x2c\x00\x0f\x01\xe9\x00\x28\x00\xf5\x00\x2a\x00\x23\x00\xf8\x00\xf9\x00\xe9\x00\x4f\x00\x50\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\x2c\x00\xf4\x00\xf5\x00\xf6\x00\x25\x00\xf8\x00\xf9\x00\x01\x01\x1e\x00\x1f\x00\x20\x00\x1d\x00\x10\x01\x11\x01\x28\x00\x5b\x00\x2a\x00\x5d\x00\x68\x00\xb3\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x0f\x01\xf2\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x82\x00\x83\x00\x84\x00\xfa\x00\xfb\x00\xfc\x00\x0d\x00\xfe\x00\xff\x00\x00\x01\x5b\x00\x28\x00\x5d\x00\x2a\x00\x17\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x0d\x00\x0e\x00\x6a\x00\x6b\x00\x2c\x00\x6d\x00\x2e\x00\xe9\x00\xbd\x00\xbe\x00\xf4\x00\xf5\x00\xf6\x00\xe6\x00\xf8\x00\xf9\x00\x0d\x00\x0e\x00\xf4\x00\xf5\x00\xf6\x00\x1f\x00\xf8\x00\xf9\x00\x2a\x00\xf2\x00\x2c\x00\x1b\x00\xf5\x00\x1d\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\x10\x00\xfe\x00\xff\x00\x00\x01\x18\x00\x1b\x00\x5b\x00\x1d\x00\x5d\x00\x0f\x01\xb3\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x10\x01\x11\x01\x6a\x00\x6b\x00\x49\x00\x6d\x00\x6e\x00\x5b\x00\xb1\x00\x5d\x00\xb3\x00\x1c\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xb3\x00\x1d\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x7a\x00\xb9\x00\x5b\x00\xbb\x00\x5d\x00\x0d\x00\x0e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x1d\x00\xe6\x00\x6a\x00\x6b\x00\x28\x00\x6d\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x1b\x00\xf2\x00\x0f\x00\x10\x00\xf5\x00\x25\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\x1d\x00\xfe\x00\xff\x00\x00\x01\x4e\x00\x85\x00\xe6\x00\xbc\x00\xbd\x00\xbe\x00\xb3\x00\x9c\x00\xf4\x00\xf5\x00\xf6\x00\x1d\x00\xf8\x00\xf9\x00\xf2\x00\x10\x01\x11\x01\xf5\x00\x48\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\x5b\x00\x17\x00\x5d\x00\x0d\x00\x0e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x10\x00\x69\x00\x6a\x00\x6b\x00\xbc\x00\xbd\x00\xbe\x00\x10\x01\x11\x01\x82\x00\x83\x00\x84\x00\x82\x00\x83\x00\x84\x00\x10\x00\x5b\x00\x2a\x00\x5d\x00\x61\x00\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x1b\x00\x69\x00\x6a\x00\x6b\x00\x0d\x00\x0e\x00\xf5\x00\x29\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xeb\x00\x0d\x00\x0e\x00\xee\x00\x23\x00\xf0\x00\xf5\x00\xf2\x00\xf7\x00\xf8\x00\xf9\x00\x18\x00\xe6\x00\x10\x01\x11\x01\xfa\x00\xfb\x00\xfc\x00\x0d\x00\xfe\x00\xff\x00\x00\x01\x2a\x00\xfa\x00\xfb\x00\x17\x00\x18\x00\xf5\x00\x23\x00\xf7\x00\xf8\x00\xf9\x00\x4e\x00\x10\x01\x11\x01\x5b\x00\x29\x00\x5d\x00\x17\x00\x18\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x0d\x00\x0e\x00\x6a\x00\x6b\x00\x9b\x00\x6d\x00\x10\x01\x11\x01\x5b\x00\x0a\x00\x5d\x00\x0d\x00\x0e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x2c\x00\x69\x00\x6a\x00\x6b\x00\xe0\x00\xe1\x00\x0d\x00\x0e\x00\xe6\x00\x23\x00\xf5\x00\xf6\x00\x10\x00\xe9\x00\x29\x00\x2a\x00\xfe\x00\xff\x00\x7c\x00\x7d\x00\xfe\x00\xff\x00\xf2\x00\xf5\x00\x9b\x00\xf7\x00\xf8\x00\xf9\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\x23\x00\x5b\x00\x1f\x00\x5d\x00\x29\x00\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x2a\x00\x69\x00\x6a\x00\x6b\x00\x10\x01\x11\x01\xf5\x00\x9b\x00\xf7\x00\xf8\x00\xf9\x00\x71\x00\x72\x00\xf5\x00\xf6\x00\x9b\x00\x5b\x00\x9b\x00\x5d\x00\x0d\x00\x0e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9b\x00\x69\x00\x6a\x00\x6b\x00\x10\x01\x11\x01\x72\x00\x5b\x00\x9b\x00\x5d\x00\x0d\x00\x0e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9b\x00\x69\x00\x6a\x00\x6b\x00\x0d\x00\x0e\x00\x2c\x00\x5b\x00\x1b\x00\x5d\x00\xe6\x00\x43\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xe5\x00\x69\x00\x6a\x00\x6b\x00\xe9\x00\xf5\x00\x1c\x00\xf7\x00\xf8\x00\xf9\x00\x2d\x00\xe6\x00\x1d\x00\x29\x00\x2a\x00\xf4\x00\xf5\x00\xf6\x00\x2c\x00\xf8\x00\xf9\x00\x23\x00\x10\x00\x2c\x00\x2c\x00\x2c\x00\xf5\x00\x06\x00\xf7\x00\xf8\x00\xf9\x00\x18\x00\x10\x01\x11\x01\x5b\x00\x18\x00\x5d\x00\x60\x00\x6e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x23\x00\x69\x00\x6a\x00\x6b\x00\x65\x00\x7d\x00\x10\x01\x11\x01\x7d\x00\x69\x00\xe6\x00\x2c\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x29\x00\x18\x00\x23\x00\x7d\x00\x7d\x00\x7d\x00\xf5\x00\x2a\x00\xf7\x00\xf8\x00\xf9\x00\x9b\x00\x9b\x00\x29\x00\x9b\x00\x20\x00\x5b\x00\x0d\x00\x5d\x00\x29\x00\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x69\x00\x69\x00\x6a\x00\x6b\x00\x10\x01\x11\x01\xf5\x00\x10\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x18\x00\x9b\x00\x1b\x00\x20\x00\x33\x00\x23\x00\x06\x00\x07\x00\x18\x00\x1b\x00\x0a\x00\x9b\x00\x0c\x00\x7d\x00\xf5\x00\x9b\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x18\x00\x10\x01\x11\x01\x17\x00\x23\x00\x19\x00\x17\x00\x2a\x00\x18\x00\x0d\x00\x67\x00\x1f\x00\x23\x00\x20\x00\xf5\x00\x1d\x00\xf7\x00\xf8\x00\xf9\x00\x2c\x00\x28\x00\x10\x01\x11\x01\x5b\x00\x7d\x00\x5d\x00\x1c\x00\x23\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x1c\x00\x69\x00\x6a\x00\x6b\x00\x1c\x00\x10\x01\x11\x01\x5b\x00\x29\x00\x5d\x00\xe6\x00\x65\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x7d\x00\x69\x00\x6a\x00\x6b\x00\x2c\x00\xf5\x00\x1c\x00\xf7\x00\xf8\x00\xf9\x00\x25\x00\x65\x00\x25\x00\x7d\x00\x2c\x00\x1b\x00\x23\x00\x5f\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x6d\x00\xf5\x00\x7c\x00\x1c\x00\xf8\x00\xf9\x00\x1c\x00\x65\x00\x69\x00\x10\x01\x11\x01\x5b\x00\x18\x00\x5d\x00\x29\x00\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x1c\x00\x69\x00\x6a\x00\x6b\x00\x10\x01\x11\x01\xf5\x00\x26\x00\xf7\x00\xf8\x00\xf9\x00\x7d\x00\x9b\x00\x23\x00\x28\x00\x9b\x00\x5b\x00\x2a\x00\x5d\x00\x49\x00\x23\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x18\x00\x69\x00\x6a\x00\x6b\x00\x10\x01\x11\x01\x18\x00\x5b\x00\x0d\x00\x5d\x00\x29\x00\x2e\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x1c\x00\x69\x00\x6a\x00\x6b\x00\x18\x00\x1d\x00\x1d\x00\x5b\x00\x06\x00\x5d\x00\xe6\x00\x1d\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xe9\x00\x69\x00\x6a\x00\x6b\x00\x17\x00\xf5\x00\x23\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\xf4\x00\xf5\x00\xf6\x00\x18\x00\xf8\x00\xf9\x00\x29\x00\x68\x00\x1c\x00\x4c\x00\x1d\x00\x9b\x00\x4c\x00\x18\x00\xf5\x00\x2a\x00\xf7\x00\xf8\x00\xf9\x00\x2a\x00\x1b\x00\x10\x01\x11\x01\x5b\x00\x18\x00\x5d\x00\x23\x00\x0f\x01\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x17\x00\x69\x00\x6a\x00\x6b\x00\x18\x00\x10\x01\x11\x01\x5b\x00\x29\x00\x5d\x00\xe6\x00\x7d\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x65\x00\x69\x00\x6a\x00\x6b\x00\x65\x00\xf5\x00\x2c\x00\xf7\x00\xf8\x00\xf9\x00\x18\x00\x2e\x00\x2c\x00\x18\x00\x09\x00\x09\x00\x19\x00\xba\x00\x64\x00\xe6\x00\x02\x01\x6f\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x03\x01\x0d\x01\xbf\x00\xb3\x00\xa6\x00\xb3\x00\x10\x01\x11\x01\xf5\x00\x1a\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x0d\x01\x03\x01\xf9\x00\xf9\x00\x1b\x00\x26\x00\x0c\x01\x03\x01\x36\x00\x0a\x00\x51\x00\x26\x00\x51\x00\x28\x00\xf5\x00\x51\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x51\x00\x10\x01\x11\x01\x03\x01\x33\x00\x34\x00\x35\x00\xd8\x00\x03\x00\xbf\x00\x03\x01\x03\x01\x8e\x00\x03\x01\xf5\x00\xfb\x00\xf7\x00\xf8\x00\xf9\x00\x51\x00\x4c\x00\x10\x01\x11\x01\x5b\x00\x4c\x00\x5d\x00\x03\x01\x73\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x1c\x00\xf9\x00\x6a\x00\x6b\x00\x76\x00\x10\x01\x11\x01\x5b\x00\x0d\x01\x5d\x00\xe6\x00\x9b\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9b\x00\x9f\x00\x6a\x00\x6b\x00\x4d\x00\xf5\x00\x2f\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x8f\x00\x36\x00\x95\x00\x34\x00\x30\x00\x52\x00\x50\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\xba\x00\xd1\x00\xf5\x00\xa6\x00\xf7\x00\xf8\x00\xf9\x00\x11\x00\x6f\x00\x10\x01\x11\x01\x5b\x00\x0d\x01\x5d\x00\xba\x00\x35\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x09\x01\x02\x01\x6a\x00\x6b\x00\x6f\x00\x10\x01\x11\x01\x5b\x00\x02\x01\x5d\x00\x84\x00\x02\x01\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x9b\x00\x76\x00\x6a\x00\x6b\x00\x0c\x01\x1d\x00\x18\x00\x5b\x00\x03\x01\x5d\x00\x37\x00\xd1\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x0d\x01\x02\x01\x6a\x00\x6b\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\xf9\x00\x03\x01\x03\x01\x03\x01\x93\x00\x32\x00\x03\x01\x5b\x00\x11\x00\x5d\x00\xe6\x00\x03\x01\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xe9\x00\x2f\x00\x6a\x00\x6b\x00\x31\x00\xf5\x00\x76\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\xf4\x00\xf5\x00\xf6\x00\x2a\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\x10\x01\x11\x01\x5b\x00\xff\xff\x5d\x00\xff\xff\x0f\x01\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x10\x01\x11\x01\x5b\x00\xff\xff\x5d\x00\xe6\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xf5\x00\xe9\x00\xf7\x00\xf8\x00\xf9\x00\xe6\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xff\xff\xff\xff\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xe6\x00\xff\xff\x10\x01\x11\x01\x9c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x01\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\x10\x01\x11\x01\xff\xff\x5b\x00\xff\xff\x5d\x00\xff\xff\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\x6b\x00\x10\x01\x11\x01\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\x6b\x00\x10\x01\x11\x01\xff\xff\xff\xff\xff\xff\xe6\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xeb\x00\xff\xff\xff\xff\xee\x00\xff\xff\xf0\x00\xff\xff\xf2\x00\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xe6\x00\xff\xff\xfa\x00\xfb\x00\xfc\x00\xff\xff\xfe\x00\xff\x00\x00\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\x10\x01\x11\x01\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\x10\x01\x11\x01\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\xff\xff\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\xff\xff\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\x6b\x00\x10\x01\x11\x01\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\xff\xff\x6b\x00\x10\x01\x11\x01\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xe6\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xe6\x00\x5b\x00\x10\x01\x11\x01\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\x10\x01\x11\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe6\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x01\xff\xff\xff\xff\xff\xff\xff\xff\x10\x01\x11\x01\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\xff\xff\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\xff\xff\xff\xff\x10\x01\x11\x01\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xe6\x00\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xf5\x00\x0b\x01\xf7\x00\xf8\x00\xf9\x00\xff\xff\x10\x01\x11\x01\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe6\x00\x10\x01\x11\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\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\xf5\x00\xff\xff\xff\xff\xf8\x00\xf9\x00\xff\xff\xff\xff\x10\x01\x11\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x10\x01\x11\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\xff\xff\xe6\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\x5e\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf5\x00\x10\x01\x11\x01\xf8\x00\xf9\x00\xff\xff\xff\xff\xe6\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\x10\x01\x11\x01\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\xe6\x00\xff\xff\xff\xff\xff\xff\x10\x01\x11\x01\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\x7e\x00\x7f\x00\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe6\x00\xff\xff\xff\xff\xff\xff\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\x10\x01\x11\x01\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xe6\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\xff\xff\x0f\x01\xff\xff\xff\xff\xff\xff\xf5\x00\xff\xff\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\x10\x01\x11\x01\xe9\x00\xff\xff\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\x23\x00\xff\xff\x25\x00\x26\x00\xf5\x00\x28\x00\x29\x00\xf8\x00\xf9\x00\xb9\x00\x10\x01\x11\x01\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xee\x00\xff\xff\x10\x01\x11\x01\xf2\x00\xff\xff\xff\xff\xf5\x00\xff\xff\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xff\xff\xff\xff\xe9\x00\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xf5\x00\xff\xff\xff\xff\xf8\x00\xf9\x00\x10\x01\x11\x01\x12\x01\x13\x01\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xf5\x00\xff\xff\xff\xff\xf8\x00\xf9\x00\xff\xff\x01\x01\xff\xff\xff\xff\xff\xff\x10\x01\x11\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x10\x01\x11\x01\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\x1b\x00\xff\xff\xe9\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xf4\x00\xf5\x00\xf6\x00\x2b\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x0f\x01\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\x6d\x00\xff\xff\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\xff\xff\x76\x00\xff\xff\x78\x00\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x92\x00\x93\x00\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\xff\xff\x9a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x26\x00\x19\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\x6d\x00\xff\xff\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\xff\xff\x76\x00\xff\xff\x78\x00\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x92\x00\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\xff\xff\x76\x00\xff\xff\x78\x00\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x92\x00\x93\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xe9\x00\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\x70\x00\x71\x00\xff\xff\xff\xff\x74\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\x0f\x01\xff\xff\xff\xff\x93\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\x6f\x00\x70\x00\x71\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xeb\x00\x68\x00\x69\x00\xee\x00\x6b\x00\xf0\x00\xff\xff\xf2\x00\x6f\x00\x70\x00\x71\x00\xff\xff\xff\xff\x74\x00\xff\xff\xfa\x00\xfb\x00\xfc\x00\xff\xff\xfe\x00\xff\x00\x00\x01\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xeb\x00\x68\x00\x69\x00\xee\x00\x6b\x00\xf0\x00\xff\xff\xf2\x00\x6f\x00\x70\x00\x71\x00\xff\xff\xff\xff\x74\x00\xff\xff\xfa\x00\xfb\x00\xfc\x00\xff\xff\xfe\x00\xff\x00\x00\x01\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x76\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x76\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x93\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xeb\x00\x68\x00\x69\x00\xee\x00\x6b\x00\xf0\x00\xff\xff\xf2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xfa\x00\xfb\x00\xfc\x00\xff\xff\xfe\x00\xff\x00\x00\x01\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\x93\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\x09\x00\x0a\x00\xff\xff\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\x25\x00\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xff\xff\x3d\x00\x3e\x00\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xff\xff\x0f\x01\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\x0a\x00\x7e\x00\x0c\x00\x0d\x00\x81\x00\x82\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\x8e\x00\x8f\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\x09\x00\x0a\x00\xff\xff\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\x25\x00\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x23\x00\xff\xff\x25\x00\x26\x00\xff\xff\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\x0d\x00\x81\x00\x82\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\x19\x00\x1a\x00\x8e\x00\x8f\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\x52\x00\x21\x00\x8e\x00\x8f\x00\x24\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\x0d\x00\x81\x00\x82\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\x8e\x00\x8f\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\x52\x00\x21\x00\x8e\x00\x8f\x00\x24\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x69\x00\xff\xff\x6b\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x7e\x00\x19\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x72\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\x18\x00\x7e\x00\x7f\x00\x0d\x00\x81\x00\x82\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\x17\x00\x26\x00\x19\x00\x28\x00\x8e\x00\x8f\x00\xff\xff\xff\xff\x1f\x00\x2e\x00\x21\x00\xff\xff\xff\xff\x24\x00\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x69\x00\xff\xff\x6b\x00\x06\x00\x07\x00\xff\xff\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x7e\x00\x19\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\xff\xff\x8e\x00\x8f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x6b\x00\x06\x00\x07\x00\xff\xff\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x7e\x00\x19\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\xff\xff\x8e\x00\x8f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\x8e\x00\x8f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x6b\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x7e\x00\x19\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x6b\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x7e\x00\x19\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x6b\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x7e\x00\x19\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\x46\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x25\x00\x26\x00\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\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\xff\xff\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\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\xff\xff\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\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\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\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\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\x2c\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\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\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\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\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\x7a\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\x7a\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\xff\xff\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x30\x00\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\xff\xff\x34\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\xff\xff\x48\x00\xff\xff\x4a\x00\x4b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\xff\xff\x0a\x00\xff\xff\x0c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x1f\x00\xff\xff\x06\x00\x07\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x1f\x00\xff\xff\x06\x00\x07\x00\xff\xff\x24\x00\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\x17\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xad\x00\xae\x00\xaf\x00\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x68\x00\x69\x00\xff\xff\x6b\x00\xb9\x00\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x1f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x09\x00\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\x17\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\x68\x00\x69\x00\x01\x00\x6b\x00\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x17\x00\x81\x00\x82\x00\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\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\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x68\x00\x69\x00\x01\x00\x6b\x00\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x17\x00\x81\x00\x82\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\x01\x00\x6b\x00\x03\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x17\x00\x81\x00\x82\x00\x68\x00\x69\x00\x01\x00\x6b\x00\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x01\x00\x81\x00\x82\x00\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x1c\x00\x81\x00\x82\x00\x68\x00\x69\x00\xff\xff\x6b\x00\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\x75\x00\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x1d\x00\xff\xff\x68\x00\x69\x00\x06\x00\x6b\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x18\x00\xff\xff\x7e\x00\x7f\x00\x01\x00\x81\x00\x82\x00\xff\xff\xff\xff\x06\x00\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\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x68\x00\x69\x00\x01\x00\x6b\x00\x03\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x17\x00\x81\x00\x82\x00\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x01\x00\xff\xff\xff\xff\x68\x00\x69\x00\x06\x00\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x17\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x01\x00\x81\x00\x82\x00\x68\x00\x69\x00\x06\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\x01\x00\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x17\x00\x81\x00\x82\x00\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\x19\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x1f\x00\xff\xff\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x01\x00\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\x17\x00\x81\x00\x82\x00\x68\x00\x69\x00\x01\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x17\x00\x81\x00\x82\x00\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\x01\x00\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x17\x00\x81\x00\x82\x00\x68\x00\x69\x00\x01\x00\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x17\x00\x81\x00\x82\x00\x68\x00\x69\x00\x01\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x01\x00\x81\x00\x82\x00\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x17\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x01\x00\x81\x00\x82\x00\x68\x00\x69\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x01\x00\x81\x00\x82\x00\xff\xff\xff\xff\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\x6b\x00\x17\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x26\x00\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\x6b\x00\x17\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\x01\x00\x6b\x00\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\x01\x00\xff\xff\x6b\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\x01\x00\xff\xff\x6b\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x6b\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x6b\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\x6b\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x01\x00\xff\xff\x81\x00\x82\x00\xff\xff\x06\x00\x6b\x00\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\xff\xff\xff\xff\x81\x00\x82\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\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\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc5\x00\xc6\x00\xc7\x00\xff\xff\xc9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc6\x00\xc7\x00\xff\xff\xc9\x00\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xd2\x00\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xb9\x00\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\x01\x01\xd7\x00\xff\xff\xd9\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xb9\x00\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xb9\x00\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\x01\x01\xd7\x00\xff\xff\xd9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x00\xc9\x00\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xd2\x00\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xb9\x00\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\x01\x01\xd7\x00\xff\xff\xd9\x00\xff\xff\xac\x00\xad\x00\xae\x00\xaf\x00\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xb9\x00\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xb9\x00\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\x01\x01\xd7\x00\xff\xff\xd9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x00\xc9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc8\x00\xc9\x00\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xd2\x00\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xb9\x00\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xff\xff\xd9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xc9\x00\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd3\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\x01\x01\x02\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xb0\x00\xff\xff\xff\xff\xb3\x00\xb4\x00\xff\xff\xb6\x00\xff\xff\xb8\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\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\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xb0\x00\xff\xff\xff\xff\xb3\x00\xb4\x00\xff\xff\xb6\x00\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb6\x00\xff\xff\xff\xff\xb9\x00\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xc2\x00\xc3\x00\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xfd\x00\xff\xff\xff\x00\x00\x01\x01\x01\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xfd\x00\xff\xff\xff\x00\x00\x01\x01\x01\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb6\x00\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xca\x00\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xff\xff\xb6\x00\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xfd\x00\xff\xff\xff\x00\x00\x01\x01\x01\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xfd\x00\xff\xff\xff\x00\x00\x01\x01\x01\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xff\xff\xb6\x00\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb6\x00\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xfd\x00\xff\xff\xff\x00\x00\x01\x01\x01\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xfd\x00\xff\xff\xff\x00\x00\x01\x01\x01\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb6\x00\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb6\x00\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xfd\x00\xff\xff\xff\x00\x00\x01\x01\x01\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xfd\x00\xff\xff\xff\x00\x00\x01\x01\x01\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb6\x00\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xec\x00\xff\xff\xee\x00\xff\xff\xff\xff\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xff\xff\xfd\x00\xff\xff\xff\x00\x00\x01\x01\x01\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xcd\x00\xce\x00\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xce\x00\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb8\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd2\x00\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\x01\x01\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xff\xff\xff\xff\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xa5\x00\xff\xff\xe9\x00\xa8\x00\xa9\x00\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xb9\x00\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xa8\x00\xff\xff\xaa\x00\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xac\x00\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xbd\x00\xbe\x00\x01\x01\xc0\x00\xc1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xbd\x00\xbe\x00\xff\xff\xc0\x00\xc1\x00\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xad\x00\xae\x00\xaf\x00\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xb9\x00\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\x01\x01\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x01\xff\xff\xdf\x00\xff\xff\xe1\x00\xe2\x00\xff\xff\xff\xff\xe5\x00\xe6\x00\xff\xff\xff\xff\xe9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\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"#
-
-happyTable :: HappyAddr
-happyTable = HappyA# "\x00\x00\x12\x00\x0e\x00\x10\x00\xa8\x00\x14\x00\xa9\x00\xae\x03\xaf\x03\xb0\x03\x0c\x00\xf0\x04\x22\x05\x08\x05\xb0\x00\xa0\x00\x59\x02\x85\x03\xb3\x02\xb4\x02\xb5\x00\x51\x02\xb5\x00\x1b\x02\xff\x00\x67\x03\xb5\x00\x51\x02\x23\x05\x24\x05\xf7\x03\xb0\x00\xcc\x03\xb3\x02\xb4\x02\x47\x02\x72\x04\x73\x04\x50\x02\xb5\x00\xa7\x04\xb1\x00\xae\xff\xb0\x00\x8a\x04\xb5\x00\xa7\x04\x30\x05\xb5\x00\x1b\x02\x80\x03\xb5\x00\xf0\x02\x33\x03\x50\x02\xb0\x00\x04\x01\xb5\x00\xf0\x02\xb5\x00\xad\x04\xda\x01\xb5\x00\xad\x04\xc2\x02\x4f\x04\xb5\x00\xbc\x04\x54\x02\x91\x02\xfe\x00\xca\x03\x84\x00\xf8\x00\x52\x02\x80\x03\xe0\x01\x5f\x04\x19\xfd\xa7\x01\xa0\x01\xb5\x00\xbc\x04\x7a\x03\x7e\x03\x18\x02\x50\x02\xb5\x00\xf4\x04\x76\x01\xa0\x01\xb5\x00\xf4\x04\x7e\x04\xa3\x00\x8c\x04\x8d\x04\xd5\x04\x02\x05\x23\x04\xf9\x00\x55\x05\x77\x01\xae\x00\xdb\x00\xaf\x00\xdd\x00\x50\x02\x31\x00\x32\x00\xa1\x01\x8e\x04\x60\x04\x8e\x04\xf9\x00\x89\x00\xdb\x01\xf9\x00\xff\xff\x7b\x03\xa1\x01\x90\x03\x9a\x04\x73\x04\xdb\x01\x89\x00\xc9\x04\x24\x04\x50\x04\x19\x02\x5a\x00\xa0\x01\x5b\x00\x5c\x00\xe0\x00\xf6\x04\x17\x00\x1a\x02\xdd\x02\xf5\x04\xdb\x00\x4c\x02\x4d\x02\xa4\x04\xcd\x03\xb4\x02\x80\x04\xc4\x02\xb0\x00\x2b\x03\xd6\x04\xd7\x04\x6e\x02\x8c\x00\x17\x00\xe7\x01\xca\x01\xe8\x01\x43\x05\xd2\x04\x19\xfd\xa1\x01\x4e\x02\xea\x01\xeb\x01\xde\x02\x14\x03\xbb\x04\x89\x00\xec\x01\x8a\x00\x32\x00\xbe\x04\xb5\x02\x31\x00\x32\x00\xa9\x04\xed\x01\x84\x03\xb0\x00\xf8\x03\xee\x01\xa8\x04\xef\x01\xf0\x01\xf1\x01\x37\x03\xbd\x04\xb5\x02\x9d\x03\xaf\x04\x2e\x00\x95\x01\xae\x04\x34\x02\x48\x02\x8c\x00\xf9\x03\x2e\x00\x74\x04\x1a\x03\xd7\x00\xe7\x01\x81\x03\xe8\x01\xc7\x01\x2e\x00\x95\x01\xb2\x00\x9e\x03\xea\x01\xeb\x01\x7f\x03\xf1\x04\x22\x03\x89\x00\xec\x01\x8a\x00\x32\x00\xb1\x03\x89\x01\x1d\x02\x25\x05\x7a\x02\xed\x01\xb2\x00\x26\x05\x55\x02\xee\x01\x65\x05\xef\x01\xf0\x01\xf1\x01\x53\x02\x2d\x00\x2e\x00\x2f\x00\xb2\x00\x31\x00\x32\x00\x2e\x00\x95\x01\xf3\x02\x09\x05\x96\x01\x57\x05\x58\x05\x1c\x02\xf1\x02\xb2\x00\xbf\x01\x47\x03\xc0\x01\xc1\x01\xb1\x03\x0d\x00\x0d\x00\x0d\x00\x7a\x02\x0d\x00\x0d\x00\xb2\x03\xa1\x00\xa1\x00\x0d\x00\x27\x05\x2d\x00\x2e\x00\x2f\x00\x2d\x00\x2e\x00\x2f\x00\xf2\x01\x31\x00\x32\x00\x0f\x00\x13\x00\x11\x00\xf8\x03\x3a\x00\xf3\x01\x1a\x00\xf4\x01\x1c\x00\x2e\x00\x74\x04\x1d\x00\x1e\x00\x1f\x00\xd0\x04\xd1\x04\x20\x00\x21\x00\x22\x00\x25\x05\xf9\x03\xb2\x03\x89\x00\x26\x05\xb5\x02\x50\x02\xbf\x04\x8f\x04\x23\x00\x8f\x04\xd8\x01\x90\x04\x46\x03\x90\x04\xd9\x01\xa3\x01\xa4\x01\x2e\x00\x95\x01\xda\x01\x50\x02\x96\x01\x2e\x00\x95\x01\xf2\x01\x2e\x00\x95\x01\x2e\x00\x95\x01\x96\x01\x45\x05\x96\x01\xf3\x01\x1a\x00\xf4\x01\x1c\x00\x61\x04\x89\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\x27\x05\x20\x00\x21\x00\x22\x00\x26\x00\x47\x02\x27\x00\x28\x00\x70\x02\x08\x04\x29\x00\x2a\x00\x89\x00\x23\x00\x2b\x00\x09\x04\x81\x04\x3c\x01\x84\x00\x3c\x02\x82\x04\xe0\x01\x57\x04\x8c\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x2d\x00\x2e\x00\x2f\x00\x39\x02\x31\x00\x32\x00\x5f\x05\x33\x00\xe4\x04\x8c\x00\xf5\x01\xf6\x01\x38\x03\xa4\x01\xe1\x01\x39\x03\xf7\x01\x3a\x03\x08\x04\x69\x01\x26\x00\x3a\x02\x27\x00\x28\x00\x1e\x05\xb9\x04\x29\x00\x2a\x00\xcf\x00\x3b\x03\x2b\x00\xa5\x01\x3c\x03\xd7\x00\xd2\x04\xb1\x02\xb2\x02\xb3\x02\xb4\x02\x3b\x03\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xc0\x04\x32\x00\x31\x00\x32\x00\xbc\x03\x8f\x04\xe7\x01\x33\x00\xe8\x01\x90\x04\xf5\x01\xf6\x01\xbd\x03\xe9\x01\xea\x01\xeb\x01\xf7\x01\x8c\x01\x8d\x01\x8e\x01\xec\x01\x3b\x02\x8f\x04\x2e\x00\x95\x01\x2a\x05\x90\x04\x96\x01\xed\x01\x30\x00\x3c\x02\xc3\x01\xee\x01\x41\x03\xef\x01\xf0\x01\xf1\x01\xda\x00\xdb\x00\x4c\x04\x2e\x00\x95\x01\xcf\x00\x96\x01\x96\x01\xe7\x01\x47\x03\xe8\x01\x36\x03\x89\x00\x14\x02\x6a\x01\x42\x03\xd5\x04\x3f\x03\x0d\x05\x0b\x05\x2e\x00\x95\x01\xec\x01\x89\x00\x2d\x00\x2e\x00\x2f\x00\xb0\x00\x3e\x03\xdf\x00\xed\x01\x15\x02\x38\x02\x16\x02\xee\x01\x37\x03\xef\x01\xf0\x01\xf1\x01\x48\x02\x8c\x00\xc7\x01\xe2\x00\x60\x01\xe4\x00\x89\x00\x2e\x00\xdc\x03\x8a\x00\x32\x00\x48\x02\x8c\x00\x7b\x00\x95\x00\x7c\x00\x89\x00\x96\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xdd\x03\x0c\x05\x86\x00\x87\x00\x2f\x02\x34\x05\xff\xff\x3d\x01\x8c\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x48\x02\x8c\x00\xce\x00\x14\x04\xf2\x01\xda\x00\xdb\x00\xdc\x00\xdd\x00\xae\x02\xaf\x02\xcf\x00\xf3\x01\x1a\x00\xf4\x01\x1c\x00\x8c\x03\x8d\x03\x1d\x00\x1e\x00\x1f\x00\x77\x04\x15\x04\x20\x00\x21\x00\x22\x00\xb5\x02\x96\x01\xd5\x04\x3a\x00\x3b\x00\xe1\x02\xb0\x00\x7f\x01\xdf\x00\x23\x00\xe0\x00\xe2\x02\x36\x02\x15\x02\xe7\x01\x16\x02\xe8\x01\xf2\x01\x2e\x00\x95\x01\x80\x04\xe2\x00\x60\x01\xe4\x00\x50\x02\xf3\x01\x1a\x00\xf4\x01\x1c\x00\x37\x02\xff\xff\x1d\x00\x1e\x00\x1f\x00\x2e\x00\x71\x03\x20\x00\x21\x00\x22\x00\x63\x02\x64\x02\x3a\x00\xef\x01\xf0\x01\xf1\x01\xc6\x02\xc7\x02\x26\x00\x23\x00\x27\x00\x28\x00\x86\x01\x72\x03\x29\x00\x2a\x00\x54\x05\xd7\x04\x2b\x00\xb1\x02\x2e\x00\xc8\x02\x3d\x05\x47\x03\x96\x01\x2e\x00\x71\x03\x95\xfd\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x3a\x00\x3b\x00\xc9\x02\x2d\x00\x2e\x00\x2f\x00\x3e\x05\x33\x00\xde\x03\x88\x00\xf5\x01\xf6\x01\x26\x00\x50\x02\x27\x00\x28\x00\xf7\x01\x69\x03\x29\x00\x2a\x00\x2e\x00\xdc\x03\x2b\x00\x3a\x00\x89\x00\x50\x02\x30\x00\x8a\x00\x32\x00\x2b\x05\x91\x02\x79\x01\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x9f\x04\xb1\x02\x89\x00\x91\x02\xda\x00\x8a\x00\x32\x00\x33\x00\x2e\x00\x95\x01\xf5\x01\xf6\x01\x8b\x00\x8c\x00\xb3\x01\xb4\x01\xf7\x01\x89\x00\xf2\x01\x3a\x00\xb0\x01\x32\x00\xce\x01\xf2\x03\xe7\x01\xb5\x01\xe8\x01\xac\x04\x65\x02\x8b\x00\x8c\x00\xc7\x01\x1d\x00\xdf\x00\x1f\x00\x78\x01\xb1\x02\x20\x00\x21\x00\x22\x00\x2d\x00\x2e\x00\x2f\x00\x47\x03\x2c\x02\x8c\x00\xe2\x00\x60\x01\xe4\x00\x23\x00\xdd\x04\xff\xff\xef\x01\xf0\x01\xf1\x01\x1c\x05\x69\x03\x6a\x03\x2d\x00\x2e\x00\x2f\x00\x1d\x05\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xe7\x01\x52\x04\xe8\x01\xc6\x01\xcb\x01\x9a\x01\xda\x00\xdb\x00\x3a\x00\x3b\x00\x36\x03\xb5\x00\x9b\x01\xcf\x00\xc7\x01\x66\x02\x67\x02\x26\x00\xf9\x03\x27\x00\x28\x00\xc8\x03\x6a\x01\x29\x00\x68\x02\x80\x04\xdd\x04\x2b\x00\xef\x01\xf0\x01\xf1\x01\xd0\x03\xba\x02\xbb\x02\xc9\x01\xdf\x00\xca\x01\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x3a\x00\x3b\x00\xd7\x02\xd1\x00\xe2\x00\x60\x01\xe4\x00\x33\x00\xae\x02\xdb\x03\xf5\x01\xf6\x01\xfb\x00\xd8\x02\xd9\x02\x29\x03\xf7\x01\xc2\x04\xde\x04\xdf\x04\xb4\x00\xe0\x04\xca\x01\xb0\x04\x6a\x03\x71\x02\x96\x01\xf2\x01\x3c\x02\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x65\x02\x8e\x02\x3a\x00\x3b\x00\x1d\x00\x8f\x02\x1f\x00\x3a\x00\x3b\x00\x20\x00\x21\x00\x22\x00\xe7\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x80\x04\x6e\x03\x23\x00\xff\x04\x6f\x03\xbf\x00\xfb\x00\xc0\x00\x8e\x01\x35\x05\xd2\x00\xe0\x04\xba\x00\xc1\x00\x00\x05\x8f\x01\xac\x00\xf2\x01\xd3\x00\xd4\x00\xd5\x00\x5d\x05\xd6\x00\xd7\x00\xd8\x00\xd2\x01\xe7\x01\x65\x02\xe8\x01\xd3\x01\xf8\x00\x1d\x00\x5e\x05\x1f\x00\xd4\x01\xf7\x00\x20\x00\x21\x00\x22\x00\xf6\x00\x26\x00\x89\x00\x27\x00\x28\x00\x8a\x00\x32\x00\x29\x00\x2a\x00\x23\x00\xff\xff\x2b\x00\x63\x02\x64\x02\xe5\x00\xef\x01\xf0\x01\xf1\x01\xb0\x00\xcf\x03\xbb\x02\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xb9\x00\x8b\x00\x8c\x00\xff\xff\x0f\x02\x93\x01\xe7\x01\x33\x00\xe8\x01\x94\x01\xf5\x01\xf6\x01\xd3\x00\xd4\x00\x5f\x05\xb4\x00\xf7\x01\x91\x01\x92\x01\x26\x00\x1d\x05\x27\x00\x28\x00\x2e\x00\x95\x01\x29\x00\x2a\x00\x96\x01\xff\xff\x2b\x00\x90\x01\xf7\xfd\xbb\x03\xf7\xfd\xef\x01\xf0\x01\xf1\x01\x8f\x01\xac\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xa3\x00\xbc\x02\xb9\x02\xba\x02\xbb\x02\x99\x03\x79\x02\x33\x00\x36\x03\x89\x00\xf5\x01\xf6\x01\x8a\x00\x32\x00\x21\x02\x4f\x04\xf7\x01\x51\x02\xb8\x02\xb9\x02\xba\x02\xbb\x02\x38\x03\x0a\x05\x0b\x05\x39\x03\x42\x02\x37\x04\x89\x00\xaa\x00\xf2\x01\x8a\x00\x32\x00\x41\x02\xab\x00\xac\x00\x8b\x00\x8c\x00\x40\x02\x3b\x03\x65\x02\x3f\x02\x3c\x03\xd7\x00\x1d\x00\xf6\xfd\x1f\x00\xf6\xfd\x3e\x02\x20\x00\x21\x00\x22\x00\x8c\x01\x8d\x01\x8e\x01\x8b\x00\x8c\x00\x7b\x00\xef\xfd\x7c\x00\xef\xfd\x23\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x0f\x02\x0c\x05\x86\x00\x87\x00\x08\x01\x09\x01\x0a\x01\xf2\x01\xd3\x00\xd4\x00\x70\x01\x3d\x02\xd6\x00\xd7\x00\xd8\x00\x93\x01\xee\xfd\x65\x02\xee\xfd\x94\x01\xed\xfd\x1d\x00\xed\xfd\x1f\x00\x5e\x02\x5f\x02\x20\x00\x21\x00\x22\x00\x26\x00\x7a\x02\x27\x00\x28\x00\x2e\x00\x95\x01\x29\x00\x2a\x00\x96\x01\x23\x00\x2b\x00\x93\x01\x7b\x02\x2e\x00\x2f\x00\x94\x01\x31\x00\x32\x00\x44\x03\x45\x03\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xbb\x00\xbc\x00\x2e\x00\x95\x01\x2e\x00\x16\x04\x96\x01\x33\x00\x17\x04\xbd\x00\xf5\x01\xf6\x01\x7c\x02\xa3\x01\xa4\x01\x19\x03\xf7\x01\x93\x01\x1a\x03\xd7\x00\x26\x00\x94\x01\x27\x00\x28\x00\x31\x00\x32\x00\x29\x00\x2a\x00\x44\x03\x45\x03\x2b\x00\x91\x01\xb7\x02\x38\x05\x93\x01\x2e\x00\x95\x01\x35\x02\x94\x01\x96\x01\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x19\x02\x5a\x00\x8a\x04\x5b\x00\x5c\x00\x2e\x00\x95\x01\x33\x00\x1a\x02\x96\x01\xf5\x01\xf6\x01\xe9\x03\xea\x03\xf2\x03\x49\x05\xf7\x01\xf3\x03\xf4\x03\x7b\x00\xeb\xfd\x7c\x00\xeb\xfd\x88\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x33\x02\x0c\x05\x86\x00\x87\x00\x32\x02\x5b\x03\x89\x00\x31\x02\x30\x00\x8a\x00\x32\x00\x70\x01\x27\xfd\xd6\x00\xd7\x00\xd8\x00\x7b\x00\xdb\x00\x7c\x00\xdd\x00\x29\x02\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x2a\x02\x0c\x05\x86\x00\x87\x00\x8b\x00\x8c\x00\x28\x02\x7b\x00\x5c\x03\x5d\x03\xad\x03\xae\x03\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x71\x04\x6e\x04\xc5\x00\x87\x00\x5e\x03\xc7\x00\xda\x04\x6a\x03\xfe\x03\xff\x03\x00\x04\x01\x04\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x6d\x04\x6e\x04\xec\xfd\x7b\x00\xec\xfd\x7c\x00\x38\x00\x39\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xa3\x01\xa4\x01\x6f\x04\x87\x00\xf8\x04\x6e\x04\x93\x01\x7b\x00\x23\x02\x7c\x00\x94\x01\x21\x02\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x44\x03\x45\x03\x6f\x04\x87\x00\x2e\x00\x95\x01\x20\x02\x7b\x00\x96\x01\x7c\x00\x3c\x05\x3d\x05\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x1b\x02\x88\x00\x6f\x04\x87\x00\xd3\x04\x14\x02\xd4\x04\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x12\x02\xea\xfd\x89\x00\xea\xfd\x30\x00\x8a\x00\x32\x00\xb7\x00\xb5\x00\xb6\x00\x96\x03\x97\x03\x77\x02\x78\x02\x79\x02\xe9\xfd\x88\x00\xe9\xfd\xda\x00\xdb\x00\xdc\x00\xdd\x00\x4c\x03\xda\x00\x4d\x03\xdc\x00\x58\x02\x09\x01\x0a\x01\x8b\x00\x8c\x00\x89\x00\x2e\x02\x30\x00\x8a\x00\x32\x00\x88\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xc9\x00\x7f\x01\xdf\x00\xe8\xfd\xe0\x00\xe8\xfd\x89\x00\xdf\x00\x30\x00\x8a\x00\x32\x00\xe7\x04\xe7\x01\x8b\x00\x8c\x00\xe2\x00\x60\x01\xe4\x00\xe8\x04\xe9\x04\xe2\x00\x60\x01\xe4\x00\x7b\x03\x26\x03\xb4\x01\x89\x00\x88\x00\xe6\x01\x8a\x00\x32\x00\x51\x05\x52\x05\x8b\x00\x8c\x00\xb5\x01\x57\x02\xac\x00\x2d\x00\x2e\x00\x2f\x00\xe7\x04\x89\x00\x78\x03\x30\x00\x8a\x00\x32\x00\x88\x00\xe8\x04\xe9\x04\x2d\x00\x2e\x00\x2f\x00\x8b\x00\x8c\x00\xb4\x00\xb5\x00\xb6\x00\x2d\x00\x2e\x00\x2f\x00\xe4\x01\x89\x00\x7a\x02\x30\x00\x8a\x00\x32\x00\x88\x00\xe3\x01\x8b\x00\x8c\x00\xe7\xfd\x0f\x02\xe7\xfd\x7b\x02\x2e\x00\x2f\x00\xe2\x01\x31\x00\x32\x00\xd3\x00\xd4\x00\x89\x00\xdd\x01\x30\x00\x8a\x00\x32\x00\x89\x01\x8a\x01\x8b\x00\x8c\x00\x4d\x03\x49\x03\x4a\x03\x3a\x00\x3b\x00\x89\x00\xb5\x00\x9d\x01\x8a\x00\x32\x00\x7c\x02\xca\x01\xea\x04\xeb\x04\xec\x04\xed\x04\xb5\x00\x9c\x01\x8b\x00\x8c\x00\x3f\x01\xd0\x01\x40\x01\x76\x03\xe6\xfd\x65\x02\xe6\xfd\xd1\x01\x41\x01\x1d\x00\xd7\x01\x1f\x00\x8b\x00\x8c\x00\x20\x00\x21\x00\x22\x00\xd0\x01\x2d\x00\x2e\x00\x2f\x00\x75\x03\xcf\x01\x3f\x05\xec\x04\xed\x04\x23\x00\x15\x05\xf0\x01\xf1\x01\x89\x00\xb5\x00\x15\x03\x8a\x00\x32\x00\x65\x02\x2d\x00\x2e\x00\x2f\x00\x1d\x00\xc8\x01\x1f\x00\x0e\x05\x6a\x03\x20\x00\x21\x00\x22\x00\xbf\x01\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x23\x00\x8b\x00\x8c\x00\x7b\x04\x77\x02\x78\x02\x79\x02\x7c\x04\x26\x00\xbe\x01\x27\x00\x28\x00\xd2\x00\xbd\x01\x29\x00\x2a\x00\x2a\xfd\xe5\xfd\x2b\x00\xe5\xfd\xd3\x00\xd4\x00\xd5\x00\x2d\xfd\xd6\x00\xd7\x00\xd8\x00\xaa\x01\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x48\x03\x49\x03\x4a\x03\x26\x00\xa8\x01\x27\x00\x28\x00\x33\x00\x3a\x00\x29\x00\x2a\x00\x12\x03\x8a\x01\x2b\x00\x7b\x04\x77\x02\x78\x02\x79\x02\xfd\x04\x1b\x04\x1c\x04\x1d\x04\x1c\x03\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x10\x04\x11\x04\x12\x04\xb0\x00\xe4\xfd\x16\x05\xe4\xfd\x33\x00\xe3\xfd\x1d\x00\xe3\xfd\x1f\x00\xb5\x00\x11\x03\x20\x00\x21\x00\x22\x00\x09\x04\x0a\x04\x0b\x04\x17\x03\xe2\xfd\x7b\x00\xe2\xfd\x7c\x00\x10\x03\x23\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x7a\x02\x0c\x03\xcf\x00\x87\x00\xd0\x00\xc7\x00\x40\x04\x11\x04\x12\x04\xb5\x00\x10\x03\x7b\x02\x2e\x00\x2f\x00\x0e\x03\x31\x00\x32\x00\x0b\x03\x3b\x04\x11\x04\x12\x04\x0d\x03\x75\x02\x76\x02\x77\x02\x78\x02\x79\x02\x0a\x03\xdb\xfd\x26\x00\xdb\xfd\x27\x00\x28\x00\x02\x03\x03\x03\x29\x00\x2a\x00\xcd\x01\x7c\x02\x2b\x00\xda\xfd\x89\x00\xda\xfd\xcf\x00\x8a\x00\x32\x00\x7a\x02\xbd\x02\xbe\x02\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x6a\x01\x7b\x02\x2e\x00\x2f\x00\xfe\x02\x31\x00\x32\x00\x33\x00\xc5\x04\xc6\x04\xc7\x04\xf3\x02\x8b\x00\x8c\x00\xd8\xfd\x7b\x00\xd8\xfd\x7c\x00\xdb\x02\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x7c\x02\x0f\x02\xcf\x00\x87\x00\xd0\x00\xc7\x00\xc2\x04\x11\x04\x12\x04\xd3\x00\xd4\x00\x70\x01\xe9\x02\xd6\x00\xd7\x00\xd8\x00\x7b\x00\xc6\xfd\x7c\x00\xc6\xfd\xda\x02\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xe4\x02\xe5\x02\xc5\x00\x87\x00\x91\x02\x45\x02\x1f\x04\x7a\x02\xad\x02\x0a\x01\xd4\x01\x2e\x00\x2f\x00\x88\x00\xb0\x01\x32\x00\xb5\x00\x6c\x02\x7b\x02\x2e\x00\x2f\x00\xc2\x02\x31\x00\x32\x00\x68\xfe\xd2\x00\x68\xfe\x50\x02\x89\x00\x2e\x04\x30\x00\x8a\x00\x32\x00\xd3\x00\xd4\x00\xd5\x00\xc0\x02\xd6\x00\xd7\x00\xd8\x00\xbe\x01\x43\x05\x7b\x00\x45\x05\x7c\x00\x7c\x02\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x8b\x00\x8c\x00\xc9\x00\x87\x00\x95\x02\xca\x00\xcb\x00\x7b\x00\x07\x03\xc4\x00\xc0\x01\xdd\x01\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x46\x02\x8e\x02\xc5\x00\x87\x00\xc6\x00\xc7\x00\x8c\x02\x15\x02\x7b\x00\x16\x02\x7c\x00\x6a\x02\x6b\x02\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x89\x02\x88\x00\xc5\x00\x87\x00\x82\x02\xcb\x04\xd0\x02\xd1\x02\xd2\x02\xd3\x02\xd4\x02\xd5\x02\x88\x02\xb5\x04\xa7\x03\xa8\x03\x89\x00\x81\x02\x30\x00\x8a\x00\x32\x00\xd3\x00\xd4\x00\xd5\x00\x63\x02\xd6\x00\xd7\x00\xd8\x00\x5c\x02\xcc\x04\x88\x00\x00\x05\x09\x01\x0a\x01\xcc\x00\xdf\x02\xaf\x01\x2e\x00\x2f\x00\x62\x02\xb0\x01\x32\x00\x0f\x02\x8b\x00\x8c\x00\x89\x00\xae\x00\x30\x00\x8a\x00\x32\x00\xd3\x00\xd4\x00\x7b\x00\xaa\x03\x7c\x00\xa3\x03\xa4\x03\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xa7\x03\x85\x00\x86\x00\x87\x00\xfb\x04\x09\x01\x0a\x01\x8b\x00\x8c\x00\x4c\x05\x11\x04\x12\x04\x62\x05\x11\x04\x12\x04\xa6\x03\x7b\x00\xa0\x03\x7c\x00\x54\x01\x88\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x50\x02\x45\x01\x86\x00\x87\x00\xa0\x03\xa1\x03\x89\x00\x9d\x03\x30\x00\x8a\x00\x32\x00\x88\x00\x50\x03\x51\x03\x52\x03\x53\x03\x54\x03\x55\x03\x56\x03\x57\x03\x7a\x01\xb5\x00\x91\x03\x7b\x01\xcc\xfe\xe4\x01\x89\x00\xeb\x00\x30\x00\x8a\x00\x32\x00\x9c\x03\x88\x00\x8b\x00\x8c\x00\xd3\x00\xd4\x00\x7d\x01\x95\x03\xd6\x00\xd7\x00\xd8\x00\x8e\x03\x6f\x03\xd4\x00\x23\x03\x4d\x02\x89\x00\x75\x03\x30\x00\x8a\x00\x32\x00\x8f\x03\x8b\x00\x8c\x00\x7b\x00\x8b\x03\x7c\x00\x22\x03\x4d\x02\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x29\x04\x2b\x04\xc5\x00\x87\x00\x89\x03\x42\x02\x8b\x00\x8c\x00\x7b\x00\xdb\x00\x7c\x00\x29\x04\x2a\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x88\x03\xae\x01\x86\x00\x87\x00\xbb\x00\xbc\x00\x1f\x04\x20\x04\x88\x00\x87\x03\x2e\x00\xe3\x03\x83\x03\xbd\x00\x63\x04\x64\x04\x51\x04\xd7\x00\xb4\x04\x0b\x04\x1a\x03\xd7\x00\x2a\x02\x89\x00\x85\x03\x30\x00\x8a\x00\x32\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x82\x03\x7b\x00\xc2\x02\x7c\x00\x71\x03\x88\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x6d\x03\x45\x03\x86\x00\x87\x00\x8b\x00\x8c\x00\x89\x00\x66\x03\x30\x00\x8a\x00\x32\x00\xaa\x04\xab\x04\x2e\x00\x99\x04\x65\x03\x7b\x00\x64\x03\x7c\x00\x1f\x05\x20\x05\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x63\x03\x40\x03\x86\x00\x87\x00\x8b\x00\x8c\x00\x60\x03\x7b\x00\x62\x03\x7c\x00\x19\x05\x1a\x05\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x61\x03\xe6\x03\x86\x00\x87\x00\x0f\x05\x10\x05\x5a\x03\x7b\x00\x50\x02\x7c\x00\x88\x00\x3f\x03\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x41\x01\x60\x04\x86\x00\x87\x00\x42\x01\x89\x00\xb4\x00\x30\x00\x8a\x00\x32\x00\x35\x03\x88\x00\x30\x03\x61\x05\x64\x04\x2d\x00\x2e\x00\x2f\x00\x2a\x03\x31\x00\x32\x00\x2e\x03\x26\x03\x2a\x03\xcd\x01\xc9\x01\x89\x00\x3a\x00\x30\x00\x8a\x00\x32\x00\x1f\x03\x8b\x00\x8c\x00\x7b\x00\x1e\x03\x7c\x00\x25\x04\x21\x02\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x19\x04\x4b\x04\x86\x00\x87\x00\x14\x04\x10\x04\x8b\x00\x8c\x00\x03\x04\x0d\x04\x88\x00\x4d\x03\xe8\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xf2\x03\xf0\x03\xd0\xfe\x03\x04\xf7\x03\xee\x03\x89\x00\xeb\x03\x30\x00\x8a\x00\x32\x00\xdb\x03\xda\x03\xd8\x03\xd9\x03\xd7\x03\x7b\x00\xd6\x03\x7c\x00\xd5\x03\x88\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xd4\x03\x11\x05\x86\x00\x87\x00\x8b\x00\x8c\x00\x89\x00\xc0\x02\x30\x00\x8a\x00\x32\x00\x88\x00\xcf\x03\xcc\x03\x20\x02\xc4\x03\xc5\x03\xc3\x03\x3a\x00\x3b\x00\xc2\x03\x50\x02\xdb\x00\xbb\x03\xdd\x00\xb9\x03\x89\x00\xba\x03\x30\x00\x8a\x00\x32\x00\x88\x00\x88\x04\x8b\x00\x8c\x00\xbf\x00\x87\x04\xc0\x00\x85\x04\xa0\x03\x7e\x04\x7b\x04\x7a\x04\xc1\x00\x6d\x04\x71\x04\x89\x00\x6c\x04\x30\x00\x8a\x00\x32\x00\x66\x04\xe0\x00\x8b\x00\x8c\x00\x7b\x00\x68\x04\x7c\x00\x5d\x04\x57\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x56\x04\x05\x05\x86\x00\x87\x00\xb4\x00\x8b\x00\x8c\x00\x7b\x00\x54\x04\x7c\x00\x88\x00\x14\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x10\x04\x33\x05\x86\x00\x87\x00\x4b\x04\x89\x00\x40\x04\x30\x00\x8a\x00\x32\x00\x3a\x04\x14\x04\x39\x04\x03\x04\x91\x02\x50\x02\x2e\x03\x30\x04\x95\x03\x76\x02\x77\x02\x78\x02\x79\x02\x17\x00\x89\x00\xc4\x04\xb7\x04\x8a\x00\x32\x00\x65\xfd\x14\x04\x0d\x04\x8b\x00\x8c\x00\x7b\x00\xb3\x04\x7c\x00\xb2\x04\x88\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xa4\x04\x31\x05\x86\x00\x87\x00\x8b\x00\x8c\x00\x89\x00\x9c\x04\x30\x00\x8a\x00\x32\x00\xa7\x04\x9f\x04\x9e\x04\x96\x04\x9d\x04\x7b\x00\x99\x04\x7c\x00\x98\x04\x95\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x94\x04\x52\x05\x86\x00\x87\x00\x8b\x00\x8c\x00\x8c\x04\x7b\x00\xfd\x04\x7c\x00\xfa\x04\xf4\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xf3\x04\x4d\x05\x86\x00\x87\x00\xda\x04\xe7\x04\xdd\x04\x7b\x00\x3a\x00\x7c\x00\x88\x00\xd0\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x7a\x02\x4a\x05\x86\x00\x87\x00\xca\x04\x89\x00\x3c\x02\x30\x00\x8a\x00\x32\x00\x88\x00\x7b\x02\x2e\x00\x2f\x00\x22\x05\x31\x00\x32\x00\x1f\x05\x19\x05\x64\xfd\x05\x05\x08\x05\x04\x05\x02\x05\x47\x05\x89\x00\x44\x05\x30\x00\x8a\x00\x32\x00\x41\x05\x50\x02\x8b\x00\x8c\x00\x7b\x00\x30\x05\x7c\x00\x2f\x05\x7c\x02\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x2d\x05\x48\x05\x86\x00\x87\x00\x57\x05\x8b\x00\x8c\x00\x7b\x00\xf2\x03\x7c\x00\x88\x00\x10\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x14\x04\x66\x05\x86\x00\x87\x00\x14\x04\x89\x00\x66\x04\x30\x00\x8a\x00\x32\x00\x5c\x05\x65\x05\x66\x04\x15\x00\x87\x01\x86\x01\x84\x01\x06\x01\xe6\x00\x88\x00\x44\x01\xba\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x4b\x02\x56\x02\x12\x02\x44\x02\x1e\x02\xcc\x00\x8b\x00\x8c\x00\x89\x00\xa8\x01\x30\x00\x8a\x00\x32\x00\x88\x00\xa1\x01\x9e\x01\x17\x03\x14\x03\x0e\x03\xe7\x02\xd5\x02\xe6\x02\xce\x02\x5c\x02\xc5\x02\xdf\x00\xc4\x02\xe0\x00\x89\x00\xc2\x02\x30\x00\x8a\x00\x32\x00\x88\x00\xc0\x02\x8b\x00\x8c\x00\x8c\x02\xe2\x00\x60\x01\xe4\x00\x86\x02\xaa\x03\x5a\x02\x84\x02\x60\x02\x89\x03\x5f\x02\x89\x00\x19\x03\x30\x00\x8a\x00\x32\x00\x7c\x03\x57\x03\x8b\x00\x8c\x00\x7b\x00\x4e\x03\x7c\x00\x2e\x03\x58\x03\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x24\x03\x20\x03\xe5\x00\x87\x00\x0e\x04\x8b\x00\x8c\x00\x7b\x00\x28\x04\x7c\x00\x88\x00\x06\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x01\x04\x05\x04\x2b\x02\x87\x00\xfc\x03\x89\x00\xf0\x03\x30\x00\x8a\x00\x32\x00\x88\x00\xf5\x03\xee\x03\xec\x03\xeb\x03\xe7\x03\xd2\x03\xd1\x03\x0d\x04\x76\x02\x77\x02\x78\x02\x79\x02\xc9\x03\xc6\x03\x89\x00\xc5\x03\x30\x00\x8a\x00\x32\x00\x85\x04\x68\x04\x8b\x00\x8c\x00\x7b\x00\x83\x04\x7c\x00\x88\x04\x5d\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x66\x04\x5b\x04\xe2\x02\x87\x00\x41\x04\x8b\x00\x8c\x00\x7b\x00\x54\x04\x7c\x00\x3d\x04\x3e\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x36\x04\x3a\x04\xdb\x02\x87\x00\x3c\x04\x2e\x04\x9d\x03\x7b\x00\x2c\x04\x7c\x00\xa5\x04\x35\x04\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xc4\x04\xa2\x04\x74\x02\x87\x00\xbf\x03\x76\x02\x77\x02\x78\x02\x79\x02\x17\x04\xe5\x04\xdb\x04\xce\x04\x17\x05\x3a\x05\x06\x05\x7b\x00\x2d\x05\x7c\x00\x88\x00\x41\x05\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x7a\x02\x53\x05\x73\x02\x87\x00\x4f\x05\x89\x00\x4b\x05\x30\x00\x8a\x00\x32\x00\x88\x00\x7b\x02\x2e\x00\x2f\x00\x63\x05\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x7c\x02\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x72\x02\x87\x00\x00\x00\x8b\x00\x8c\x00\x7b\x00\x00\x00\x7c\x00\x88\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x71\x02\x87\x00\x00\x00\x89\x00\x7a\x02\x30\x00\x8a\x00\x32\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x02\x2e\x00\x2f\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x88\x00\x00\x00\x8b\x00\x8c\x00\xdf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x88\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x6d\x02\x87\x00\x8b\x00\x8c\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x77\x03\x87\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x7b\x01\x00\x00\xa2\x03\x00\x00\xeb\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x88\x00\x00\x00\xd3\x00\xd4\x00\x7d\x01\x00\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x66\x03\x87\x00\x00\x00\x8b\x00\x8c\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x5a\x03\x87\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\xdf\x03\x00\x00\x88\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x00\x00\xe0\x03\x00\x00\x00\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x88\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x5a\x04\x87\x00\x8b\x00\x8c\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\xdf\x03\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x00\x00\xe0\x03\x8b\x00\x8c\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x69\x04\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x00\x00\x6a\x04\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\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x88\x00\x7b\x00\x00\x00\xc2\x00\x00\x00\x00\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x88\x00\x2d\x02\x8b\x00\x8c\x00\x00\x00\x00\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x8b\x00\x8c\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\xe1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x6b\x03\x00\x00\x88\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x88\x00\xca\x02\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x89\x00\xf7\x04\x30\x00\x8a\x00\x32\x00\x00\x00\x8b\x00\x8c\x00\x7b\x00\x00\x00\xa0\x04\x00\x00\x00\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x8b\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\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x7b\x00\x00\x00\x12\x05\x00\x00\x00\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x39\x05\x00\x00\x00\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x36\x05\x00\x00\x88\x00\xc3\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x62\x04\x76\x02\x77\x02\x78\x02\x79\x02\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x42\x04\x00\x00\x43\x04\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x00\x00\x44\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x8b\x00\x8c\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x45\x04\x46\x04\x00\x00\xe8\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\xe9\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x04\x00\x00\xb7\x04\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x4f\x01\x00\x00\x50\x01\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\xb8\x04\x46\x04\x7a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x7b\x02\x2e\x00\x2f\x00\x00\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x30\x00\x8a\x00\x32\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x47\x04\x00\x00\x4d\x01\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\xe1\x02\x00\x00\x7f\x01\xdf\x00\x89\x00\xe0\x00\x38\x05\x48\x04\x32\x00\x23\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x59\x04\x76\x02\x77\x02\x78\x02\x79\x02\x00\x00\x00\x00\xea\x00\x00\x00\x8b\x00\x8c\x00\xeb\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x8a\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x47\x04\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x89\x00\x00\x00\x00\x00\x48\x04\x32\x00\x8b\x00\x8c\x00\xec\x00\xed\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x89\x00\x00\x00\x00\x00\x8a\x00\x32\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x8c\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x50\x02\x00\x00\x7a\x02\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x7b\x02\x2e\x00\x2f\x00\x4b\x00\x31\x00\x32\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x7c\x02\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x01\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\xfb\x01\xfc\x01\xfd\x01\xfe\x01\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x17\x00\x00\x00\xff\x01\x00\x02\x01\x02\x02\x02\xa6\x00\x72\x00\x00\x00\x03\x02\x00\x00\x73\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x75\x00\x76\x00\x05\x02\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x0a\x02\x79\x00\x7a\x00\x7b\x00\x0b\x02\x0c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x02\x0e\x02\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x00\x00\x0f\x02\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xdf\x00\x47\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\xe2\x00\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x01\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\xfb\x01\xfc\x01\xfd\x01\xfe\x01\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x17\x00\x00\x00\xff\x01\x00\x02\x01\x02\x02\x02\xa6\x00\x72\x00\x00\x00\x03\x02\x00\x00\x73\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x75\x00\x76\x00\x05\x02\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x0a\x02\x79\x00\x7a\x00\x7b\x00\x0b\x02\x0c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x02\x0e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x02\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x01\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\xfb\x01\xfc\x01\xfd\x01\xfe\x01\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\xff\x01\x00\x02\x01\x02\x02\x02\xa6\x00\x72\x00\x00\x00\x03\x02\x00\x00\x73\x00\x00\x00\x00\x00\x04\x02\x00\x00\x00\x00\x75\x00\x76\x00\x05\x02\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x0a\x02\x79\x00\x7a\x00\x7b\x00\x0b\x02\x0c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x02\x0e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x02\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x4e\x05\x76\x02\x77\x02\x78\x02\x79\x02\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\xe2\x04\xe3\x04\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x7a\x02\x6f\x00\x00\x00\x00\x00\x00\x00\xff\x01\x00\x02\x01\x02\x00\x00\x00\x00\x72\x00\x7b\x02\x2e\x00\x2f\x00\x00\x00\x31\x00\x32\x00\xe4\x04\x00\x00\x00\x00\x75\x00\x76\x00\x05\x02\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x0e\x02\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\xe2\x04\xe3\x04\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\xff\x01\x00\x02\x01\x02\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x04\x00\x00\x00\x00\x75\x00\x76\x00\x05\x02\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x02\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x7a\x01\x6d\x00\x6e\x00\x7b\x01\x6f\x00\x7c\x01\x00\x00\xeb\x00\xff\x01\x00\x02\x01\x02\x00\x00\x00\x00\x72\x00\x00\x00\xd3\x00\xd4\x00\x7d\x01\x00\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\x75\x00\x76\x00\x05\x02\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x02\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x7a\x01\x6d\x00\x6e\x00\x7b\x01\x6f\x00\xe4\x01\x00\x00\xeb\x00\xff\x01\x00\x02\x01\x02\x00\x00\x00\x00\x72\x00\x00\x00\xd3\x00\xd4\x00\x7d\x01\x00\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\x75\x00\x76\x00\x05\x02\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x02\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\xef\x04\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x04\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x02\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\xef\x04\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x04\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x02\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x7a\x01\x6d\x00\x6e\x00\x7b\x01\x6f\x00\xa2\x03\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x00\x00\xd3\x00\xd4\x00\x7d\x01\x00\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x06\x02\x07\x02\x08\x02\x09\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x0e\x02\xda\x00\xdb\x00\xdc\x00\xdd\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\xde\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\xcf\x00\x94\x00\x00\x00\xdf\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x95\x00\x00\x00\xe2\x00\xe3\x00\xe4\x00\xc0\x03\x77\x02\x78\x02\x79\x02\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x60\x05\x76\x02\x77\x02\x78\x02\x79\x02\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\xef\x00\xdb\x00\x00\x00\xdd\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\x00\x94\x00\xf0\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x7a\x02\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x95\x00\xf2\x00\xf3\x00\x96\x00\xf4\x00\x7b\x02\x2e\x00\x2f\x00\x00\x00\x31\x00\x32\x00\x00\x00\x97\x00\x98\x00\x7a\x02\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x7b\x02\x2e\x00\x2f\x00\x00\x00\x31\x00\x32\x00\x00\x00\x7c\x02\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x02\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\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\xdb\x00\x75\x00\xdd\x00\x8e\x00\x77\x00\x78\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x74\x01\x91\x00\x00\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\xcf\x00\x94\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\xef\x00\xdb\x00\x00\x00\xdd\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\x00\x94\x00\xf0\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x95\x00\x00\x00\xf3\x00\x96\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x9a\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\xe1\x02\x00\x00\x7f\x01\xdf\x00\x00\x00\xe0\x00\xe2\x02\x67\xfe\x00\x00\x67\xfe\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x60\x01\xe4\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x8e\x00\x77\x00\x78\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x91\x00\xce\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\xcf\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\xc9\x00\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x44\x02\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\xfb\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x03\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x5d\x00\x93\x00\x9f\x00\xa0\x00\x94\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x02\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x8e\x00\x77\x00\x78\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\xce\x04\x91\x00\x00\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\xfc\x03\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x5d\x00\x93\x00\x9f\x00\xa0\x00\x94\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x05\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x05\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\x77\x00\x78\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x9f\x00\xa0\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x33\x05\x00\x00\x00\x00\x92\x00\x00\x00\x93\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x75\x00\x91\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x02\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xcd\x02\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\xde\x00\x75\x00\xce\x02\x8e\x00\x77\x00\x78\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x90\x00\xdf\x00\x91\x00\xe0\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x92\x00\xe1\x00\x93\x00\x00\x00\x00\x00\x94\x00\xe2\x00\x60\x01\xe4\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\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x75\x00\x91\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\x00\x00\x94\x00\x00\xff\x00\x00\x00\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\xf2\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\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\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x03\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x75\x00\x91\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\x00\x00\x94\x00\x00\xff\x00\x00\x00\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\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\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x90\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x9f\x00\xa0\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\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x75\x00\x91\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x04\x75\x00\x91\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x75\x00\x91\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x9a\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x7f\x01\xdf\x00\x00\x00\xe0\x00\x80\x01\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x60\x01\xe4\x00\x81\x01\x82\x01\x83\x01\x84\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\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\x9f\x00\xa0\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x74\x01\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\xcf\x00\x4a\x00\x5f\x01\xdf\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x4b\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x75\x01\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x69\x01\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\xcf\x00\x4a\x00\x5f\x01\xdf\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x4b\x00\x6a\x01\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\xce\x01\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\xc7\x01\x4a\x00\x5f\x01\xdf\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xc6\x01\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\xc7\x01\x4a\x00\x5f\x01\xdf\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x64\x01\x49\x00\x00\x00\x00\x00\x4a\x00\x5f\x01\xdf\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x5f\x01\xdf\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x4b\x00\xcd\x01\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\xc7\x01\x4a\x00\x5f\x01\xdf\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x5f\x01\xdf\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x60\x01\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x26\x02\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x02\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\xfa\x02\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x02\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\xfa\x02\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x02\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x2d\x03\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x02\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x9a\x02\x36\x00\x37\x00\x38\x00\x39\x00\x9b\x02\x3b\x00\x0e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\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\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x01\x9c\x02\x9d\x02\x9e\x02\x9f\x02\xa0\x02\xa1\x02\xa2\x02\xa3\x02\xa4\x02\xa5\x02\xa6\x02\xa7\x02\xa8\x02\xa9\x02\x1e\x01\x1f\x01\x20\x01\x21\x01\x22\x01\x23\x01\x24\x01\x25\x01\xaa\x02\xab\x02\x28\x01\xac\x02\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\xad\x02\x76\x00\x00\x00\x77\x00\x78\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\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\x4c\x00\x4d\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x54\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\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\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\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\xdf\x01\x00\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\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\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\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\x4c\x00\x4d\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\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\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x49\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\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x58\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x37\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\xdb\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x7e\x02\x99\x03\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x37\x00\x7f\x02\x00\x00\x3a\x00\x3b\x00\x00\x00\x4a\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\xb4\x03\x00\x00\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x03\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\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x37\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\x00\x00\x75\x00\x76\x00\xb8\x03\x77\x00\x78\x00\x7e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x37\x00\x7f\x02\x00\x00\x3a\x00\x3b\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x03\x00\x00\x00\x00\x00\x00\xb4\x03\x00\x00\x00\x00\x80\x02\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\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x79\x01\x21\x00\x22\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x23\x00\x35\x00\x00\x00\x37\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\x00\x00\x75\x00\x76\x00\xb8\x03\x77\x00\x78\x00\x7e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\xda\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\xb7\x02\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x60\x01\xe4\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x6d\x00\x6e\x00\x35\x00\x6f\x00\x37\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\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\x76\x00\x44\x01\x77\x00\x78\x00\x00\x00\x00\x00\x35\x00\x00\x00\x37\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\xb7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\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\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x6d\x00\x6e\x00\x35\x00\x6f\x00\x37\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\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\x76\x00\xb4\x03\x77\x00\x78\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\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\x98\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\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\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x35\x00\x6f\x00\x37\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\xb7\x01\x77\x00\x78\x00\x6d\x00\x6e\x00\x35\x00\x6f\x00\x37\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x4a\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x05\x00\x00\x00\x00\x75\x00\x76\x00\x2a\x05\x77\x00\x78\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\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\x98\x01\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x35\x00\x77\x00\x78\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x74\x03\x77\x00\x78\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x75\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xfd\x00\x00\x99\x01\x0f\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x01\x92\x04\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x93\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\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\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x35\x00\x00\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\xd9\x04\x00\x00\x6d\x00\x6e\x00\x3a\x00\x6f\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\x98\x01\x5a\x05\x00\x00\x75\x00\x76\x00\x35\x00\x77\x00\x78\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x6d\x00\x6e\x00\x35\x00\x6f\x00\x37\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\xb7\x01\x77\x00\x78\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x37\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x05\x00\x00\x00\x00\x75\x00\x76\x00\x2a\x05\x77\x00\x78\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\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\x98\x01\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x93\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x35\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x3a\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xb1\x02\x00\x00\x00\x00\x75\x00\x76\x00\x35\x00\x77\x00\x78\x00\x6d\x00\x6e\x00\x3a\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\x98\x01\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\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\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x35\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\xb7\x02\x77\x00\x78\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x3f\x01\x00\x00\x40\x01\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x41\x01\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x35\x00\x00\x00\x00\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\xb7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x76\x04\x77\x00\x78\x00\x6d\x00\x6e\x00\x35\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\x75\x00\x76\x00\x4e\x04\x77\x00\x78\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x35\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x76\x04\x77\x00\x78\x00\x6d\x00\x6e\x00\x35\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x4e\x04\x77\x00\x78\x00\x6d\x00\x6e\x00\x35\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\x75\x00\x76\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x76\x00\x35\x00\x77\x00\x78\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x4a\x02\x00\x00\x00\x00\x75\x00\x76\x00\x35\x00\x77\x00\x78\x00\x6d\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x4b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x02\x00\x00\x00\x00\x75\x00\x76\x00\x35\x00\x77\x00\x78\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\xbc\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\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\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\x6f\x00\x00\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x35\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x4a\x02\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x35\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xa2\x04\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x4a\x02\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\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\x77\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x59\x04\x00\x00\x00\x00\x4a\x02\x00\x00\x00\x00\x00\x00\x35\x00\x6f\x00\x00\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\xc5\xfe\x00\x00\x6f\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x35\x00\x00\x00\x6f\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x6f\x00\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\x6f\x00\xc5\xfe\xc5\xfe\xc5\xfe\xc5\xfe\x00\x00\xc5\xfe\xc5\xfe\xc5\xfe\xc5\xfe\xc5\xfe\xc5\xfe\xc5\xfe\xc5\xfe\xc5\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x77\x00\x78\x00\x00\x00\x00\x00\xc5\xfe\x5d\x00\x9b\x00\x9c\x00\x9d\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xfe\x0c\x01\x00\x00\xc5\xfe\xc5\xfe\x00\x00\x0d\x01\x6f\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\x75\x00\x00\x00\x00\x00\x77\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\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\xe9\x02\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x02\xf5\x02\xf6\x02\xf7\x02\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\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\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xe9\x02\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x02\xf5\x02\xf6\x02\xf7\x02\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\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\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xe9\x02\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x04\xf6\x02\xf7\x02\x00\x00\xf8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\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\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xe9\x02\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x04\xf7\x02\x00\x00\xf8\x02\x00\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\xec\x02\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x23\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x33\x00\x26\x02\x00\x00\x24\x02\x51\x01\x52\x01\xfc\x00\x21\x00\x22\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x23\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x23\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x33\x00\x23\x02\x00\x00\x24\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xe9\x02\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x02\xeb\x02\x00\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\xec\x02\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x23\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x33\x00\x85\x02\x00\x00\x24\x02\x00\x00\xfb\x00\xfc\x00\x21\x00\x22\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x23\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x23\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x33\x00\x93\x03\x00\x00\x24\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xe9\x02\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x03\xeb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\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\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xe9\x02\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x04\xeb\x02\x00\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\xec\x02\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x23\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xe9\x02\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x19\x04\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x02\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\xa6\x00\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x33\x00\x02\x01\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x49\x01\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x48\x01\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\xc1\x00\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xb9\x01\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x2b\x03\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1a\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x04\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xbe\x03\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x78\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x34\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x32\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x31\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x30\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xb3\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\xfa\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xca\x04\xa7\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x6b\x01\x00\x00\x00\x00\x6c\x01\x66\x01\x00\x00\x6d\x01\x00\x00\x6e\x01\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\x6f\x01\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x70\x01\x5b\x01\xd6\x00\x71\x01\x72\x01\x33\x00\x54\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x64\x01\x00\x00\x00\x00\x65\x01\x66\x01\x00\x00\x67\x01\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x01\x00\x00\x00\x00\x23\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x61\x01\x62\x01\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\xeb\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x5b\x01\x00\x00\x5c\x01\x5d\x01\x33\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\xeb\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x5b\x01\x00\x00\x5c\x01\x5d\x01\x33\x00\x54\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x01\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x01\x54\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x57\x01\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\xeb\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x5b\x01\x00\x00\x5c\x01\x5d\x01\x33\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\xeb\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x5b\x01\x00\x00\x5c\x01\x5d\x01\x33\x00\x54\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\xeb\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x5b\x01\x00\x00\x5c\x01\x5d\x01\x33\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\xeb\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x5b\x01\x00\x00\x5c\x01\x5d\x01\x33\x00\x54\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\xeb\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x5b\x01\x00\x00\x5c\x01\x5d\x01\x33\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\xeb\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x5b\x01\x00\x00\x5c\x01\x5d\x01\x33\x00\xfb\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x58\x01\x00\x00\x59\x01\x00\x00\x00\x00\x5a\x01\xeb\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\xd3\x00\xd4\x00\x00\x00\x5b\x01\x00\x00\x5c\x01\x5d\x01\x33\x00\xa3\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x30\x03\x31\x03\x00\x00\x00\x00\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x33\x04\x00\x00\x00\x00\x00\x00\x32\x03\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\xa3\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x4b\x01\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x05\x03\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x03\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x03\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x92\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x02\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x03\x00\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\xa3\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x03\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x05\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\xac\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\xaa\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\xfa\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\xee\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x89\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x82\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x03\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x27\x03\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x04\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x25\x04\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x04\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x47\x05\x19\x00\x1a\x00\x1b\x00\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x01\x1a\x00\x47\x01\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\xd5\x01\x1a\x00\x47\x01\x1c\x00\x00\x00\x33\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x04\x1a\x00\x47\x01\x1c\x00\x00\x00\x00\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\xb1\x01\x00\x00\x2b\x00\xb2\x01\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x23\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\xb2\x01\x00\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x21\x00\x22\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\xdd\x01\xfc\x00\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x02\x21\x00\x22\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x23\x00\x00\x00\x00\x00\x96\x02\x09\x01\x0a\x01\x33\x00\x97\x02\x98\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x02\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x96\x02\x09\x01\x0a\x01\x00\x00\x97\x02\xab\x03\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x01\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x01\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x02\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x01\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x01\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x03\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x03\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x02\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x03\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x03\x21\x00\x22\x00\x00\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x23\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x33\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x26\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\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\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (11, 787) [
-	(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),
-	(525 , happyReduce_525),
-	(526 , happyReduce_526),
-	(527 , happyReduce_527),
-	(528 , happyReduce_528),
-	(529 , happyReduce_529),
-	(530 , happyReduce_530),
-	(531 , happyReduce_531),
-	(532 , happyReduce_532),
-	(533 , happyReduce_533),
-	(534 , happyReduce_534),
-	(535 , happyReduce_535),
-	(536 , happyReduce_536),
-	(537 , happyReduce_537),
-	(538 , happyReduce_538),
-	(539 , happyReduce_539),
-	(540 , happyReduce_540),
-	(541 , happyReduce_541),
-	(542 , happyReduce_542),
-	(543 , happyReduce_543),
-	(544 , happyReduce_544),
-	(545 , happyReduce_545),
-	(546 , happyReduce_546),
-	(547 , happyReduce_547),
-	(548 , happyReduce_548),
-	(549 , happyReduce_549),
-	(550 , happyReduce_550),
-	(551 , happyReduce_551),
-	(552 , happyReduce_552),
-	(553 , happyReduce_553),
-	(554 , happyReduce_554),
-	(555 , happyReduce_555),
-	(556 , happyReduce_556),
-	(557 , happyReduce_557),
-	(558 , happyReduce_558),
-	(559 , happyReduce_559),
-	(560 , happyReduce_560),
-	(561 , happyReduce_561),
-	(562 , happyReduce_562),
-	(563 , happyReduce_563),
-	(564 , happyReduce_564),
-	(565 , happyReduce_565),
-	(566 , happyReduce_566),
-	(567 , happyReduce_567),
-	(568 , happyReduce_568),
-	(569 , happyReduce_569),
-	(570 , happyReduce_570),
-	(571 , happyReduce_571),
-	(572 , happyReduce_572),
-	(573 , happyReduce_573),
-	(574 , happyReduce_574),
-	(575 , happyReduce_575),
-	(576 , happyReduce_576),
-	(577 , happyReduce_577),
-	(578 , happyReduce_578),
-	(579 , happyReduce_579),
-	(580 , happyReduce_580),
-	(581 , happyReduce_581),
-	(582 , happyReduce_582),
-	(583 , happyReduce_583),
-	(584 , happyReduce_584),
-	(585 , happyReduce_585),
-	(586 , happyReduce_586),
-	(587 , happyReduce_587),
-	(588 , happyReduce_588),
-	(589 , happyReduce_589),
-	(590 , happyReduce_590),
-	(591 , happyReduce_591),
-	(592 , happyReduce_592),
-	(593 , happyReduce_593),
-	(594 , happyReduce_594),
-	(595 , happyReduce_595),
-	(596 , happyReduce_596),
-	(597 , happyReduce_597),
-	(598 , happyReduce_598),
-	(599 , happyReduce_599),
-	(600 , happyReduce_600),
-	(601 , happyReduce_601),
-	(602 , happyReduce_602),
-	(603 , happyReduce_603),
-	(604 , happyReduce_604),
-	(605 , happyReduce_605),
-	(606 , happyReduce_606),
-	(607 , happyReduce_607),
-	(608 , happyReduce_608),
-	(609 , happyReduce_609),
-	(610 , happyReduce_610),
-	(611 , happyReduce_611),
-	(612 , happyReduce_612),
-	(613 , happyReduce_613),
-	(614 , happyReduce_614),
-	(615 , happyReduce_615),
-	(616 , happyReduce_616),
-	(617 , happyReduce_617),
-	(618 , happyReduce_618),
-	(619 , happyReduce_619),
-	(620 , happyReduce_620),
-	(621 , happyReduce_621),
-	(622 , happyReduce_622),
-	(623 , happyReduce_623),
-	(624 , happyReduce_624),
-	(625 , happyReduce_625),
-	(626 , happyReduce_626),
-	(627 , happyReduce_627),
-	(628 , happyReduce_628),
-	(629 , happyReduce_629),
-	(630 , happyReduce_630),
-	(631 , happyReduce_631),
-	(632 , happyReduce_632),
-	(633 , happyReduce_633),
-	(634 , happyReduce_634),
-	(635 , happyReduce_635),
-	(636 , happyReduce_636),
-	(637 , happyReduce_637),
-	(638 , happyReduce_638),
-	(639 , happyReduce_639),
-	(640 , happyReduce_640),
-	(641 , happyReduce_641),
-	(642 , happyReduce_642),
-	(643 , happyReduce_643),
-	(644 , happyReduce_644),
-	(645 , happyReduce_645),
-	(646 , happyReduce_646),
-	(647 , happyReduce_647),
-	(648 , happyReduce_648),
-	(649 , happyReduce_649),
-	(650 , happyReduce_650),
-	(651 , happyReduce_651),
-	(652 , happyReduce_652),
-	(653 , happyReduce_653),
-	(654 , happyReduce_654),
-	(655 , happyReduce_655),
-	(656 , happyReduce_656),
-	(657 , happyReduce_657),
-	(658 , happyReduce_658),
-	(659 , happyReduce_659),
-	(660 , happyReduce_660),
-	(661 , happyReduce_661),
-	(662 , happyReduce_662),
-	(663 , happyReduce_663),
-	(664 , happyReduce_664),
-	(665 , happyReduce_665),
-	(666 , happyReduce_666),
-	(667 , happyReduce_667),
-	(668 , happyReduce_668),
-	(669 , happyReduce_669),
-	(670 , happyReduce_670),
-	(671 , happyReduce_671),
-	(672 , happyReduce_672),
-	(673 , happyReduce_673),
-	(674 , happyReduce_674),
-	(675 , happyReduce_675),
-	(676 , happyReduce_676),
-	(677 , happyReduce_677),
-	(678 , happyReduce_678),
-	(679 , happyReduce_679),
-	(680 , happyReduce_680),
-	(681 , happyReduce_681),
-	(682 , happyReduce_682),
-	(683 , happyReduce_683),
-	(684 , happyReduce_684),
-	(685 , happyReduce_685),
-	(686 , happyReduce_686),
-	(687 , happyReduce_687),
-	(688 , happyReduce_688),
-	(689 , happyReduce_689),
-	(690 , happyReduce_690),
-	(691 , happyReduce_691),
-	(692 , happyReduce_692),
-	(693 , happyReduce_693),
-	(694 , happyReduce_694),
-	(695 , happyReduce_695),
-	(696 , happyReduce_696),
-	(697 , happyReduce_697),
-	(698 , happyReduce_698),
-	(699 , happyReduce_699),
-	(700 , happyReduce_700),
-	(701 , happyReduce_701),
-	(702 , happyReduce_702),
-	(703 , happyReduce_703),
-	(704 , happyReduce_704),
-	(705 , happyReduce_705),
-	(706 , happyReduce_706),
-	(707 , happyReduce_707),
-	(708 , happyReduce_708),
-	(709 , happyReduce_709),
-	(710 , happyReduce_710),
-	(711 , happyReduce_711),
-	(712 , happyReduce_712),
-	(713 , happyReduce_713),
-	(714 , happyReduce_714),
-	(715 , happyReduce_715),
-	(716 , happyReduce_716),
-	(717 , happyReduce_717),
-	(718 , happyReduce_718),
-	(719 , happyReduce_719),
-	(720 , happyReduce_720),
-	(721 , happyReduce_721),
-	(722 , happyReduce_722),
-	(723 , happyReduce_723),
-	(724 , happyReduce_724),
-	(725 , happyReduce_725),
-	(726 , happyReduce_726),
-	(727 , happyReduce_727),
-	(728 , happyReduce_728),
-	(729 , happyReduce_729),
-	(730 , happyReduce_730),
-	(731 , happyReduce_731),
-	(732 , happyReduce_732),
-	(733 , happyReduce_733),
-	(734 , happyReduce_734),
-	(735 , happyReduce_735),
-	(736 , happyReduce_736),
-	(737 , happyReduce_737),
-	(738 , happyReduce_738),
-	(739 , happyReduce_739),
-	(740 , happyReduce_740),
-	(741 , happyReduce_741),
-	(742 , happyReduce_742),
-	(743 , happyReduce_743),
-	(744 , happyReduce_744),
-	(745 , happyReduce_745),
-	(746 , happyReduce_746),
-	(747 , happyReduce_747),
-	(748 , happyReduce_748),
-	(749 , happyReduce_749),
-	(750 , happyReduce_750),
-	(751 , happyReduce_751),
-	(752 , happyReduce_752),
-	(753 , happyReduce_753),
-	(754 , happyReduce_754),
-	(755 , happyReduce_755),
-	(756 , happyReduce_756),
-	(757 , happyReduce_757),
-	(758 , happyReduce_758),
-	(759 , happyReduce_759),
-	(760 , happyReduce_760),
-	(761 , happyReduce_761),
-	(762 , happyReduce_762),
-	(763 , happyReduce_763),
-	(764 , happyReduce_764),
-	(765 , happyReduce_765),
-	(766 , happyReduce_766),
-	(767 , happyReduce_767),
-	(768 , happyReduce_768),
-	(769 , happyReduce_769),
-	(770 , happyReduce_770),
-	(771 , happyReduce_771),
-	(772 , happyReduce_772),
-	(773 , happyReduce_773),
-	(774 , happyReduce_774),
-	(775 , happyReduce_775),
-	(776 , happyReduce_776),
-	(777 , happyReduce_777),
-	(778 , happyReduce_778),
-	(779 , happyReduce_779),
-	(780 , happyReduce_780),
-	(781 , happyReduce_781),
-	(782 , happyReduce_782),
-	(783 , happyReduce_783),
-	(784 , happyReduce_784),
-	(785 , happyReduce_785),
-	(786 , happyReduce_786),
-	(787 , happyReduce_787)
-	]
-
-happy_n_terms = 157 :: Int
-happy_n_nonterms = 280 :: Int
-
-happyReduce_11 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_11 = happySpecReduce_2  0# happyReduction_11
-happyReduction_11 happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOut15 happy_x_2 of { happy_var_2 -> 
-	happyIn14
-		 (let (os,ss,l) = happy_var_1 in map (\x -> x os ss l) happy_var_2
-	)}}
-
-happyReduce_12 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_12 = happySpecReduce_2  1# happyReduction_12
-happyReduction_12 happy_x_2
-	happy_x_1
-	 =  case happyOut22 happy_x_1 of { happy_var_1 -> 
-	case happyOut15 happy_x_2 of { happy_var_2 -> 
-	happyIn15
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_13 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_13 = happySpecReduce_1  1# happyReduction_13
-happyReduction_13 happy_x_1
-	 =  case happyOut22 happy_x_1 of { happy_var_1 -> 
-	happyIn15
-		 ([happy_var_1]
-	)}
-
-happyReduce_14 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_14 = happyMonadReduce 2# 2# happyReduction_14
-happyReduction_14 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOut17 happy_x_2 of { happy_var_2 -> 
-	( checkPageModule happy_var_2 happy_var_1)}})
-	) (\r -> happyReturn (happyIn16 r))
-
-happyReduce_15 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_15 = happyMonadReduce 5# 2# happyReduction_15
-happyReduction_15 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 XCodeTagOpen) -> 
-	case happyOut22 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 XCodeTagClose) -> 
-	case happyOut17 happy_x_5 of { happy_var_5 -> 
-	( let (os,ss,l) = happy_var_1 in checkHybridModule happy_var_5 (happy_var_3 os ss l) happy_var_2 happy_var_4)}}}}})
-	) (\r -> happyReturn (happyIn16 r))
-
-happyReduce_16 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_16 = happySpecReduce_2  2# happyReduction_16
-happyReduction_16 happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOut22 happy_x_2 of { happy_var_2 -> 
-	happyIn16
-		 (let (os,ss,l) = happy_var_1 in happy_var_2 os ss l
-	)}}
-
-happyReduce_17 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_17 = happyMonadReduce 9# 3# happyReduction_17
-happyReduction_17 (happy_x_9 `HappyStk`
-	happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> 
-	case happyOut202 happy_x_2 of { happy_var_2 -> 
-	case happyOut205 happy_x_3 of { happy_var_3 -> 
-	case happyOut207 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> 
-	case happyOut200 happy_x_6 of { happy_var_6 -> 
-	case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> 
-	case happyOut202 happy_x_8 of { happy_var_8 -> 
-	case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> 
-	( do { n <- checkEqNames happy_var_2 happy_var_8;
-                                                                       let { cn = reverse happy_var_6;
-                                                                             as = reverse happy_var_3; };
-                                                                       return $ XTag (happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,happy_var_9]) n as happy_var_4 cn })}}}}}}}}})
-	) (\r -> happyReturn (happyIn17 r))
-
-happyReduce_18 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_18 = happyReduce 5# 3# happyReduction_18
-happyReduction_18 (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 { (Loc happy_var_1 XStdTagOpen) -> 
-	case happyOut202 happy_x_2 of { happy_var_2 -> 
-	case happyOut205 happy_x_3 of { happy_var_3 -> 
-	case happyOut207 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> 
-	happyIn17
-		 (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_19 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_19 = happySpecReduce_3  4# happyReduction_19
-happyReduction_19 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut272 happy_x_1 of { happy_var_1 -> 
-	case happyOut19 happy_x_2 of { happy_var_2 -> 
-	case happyOut273 happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (let (os,ss,ml) = happy_var_2 in (os,happy_var_1:ss++[happy_var_3],happy_var_1 <^^> happy_var_3)
-	)}}}
-
-happyReduce_20 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_20 = happySpecReduce_3  5# happyReduction_20
-happyReduction_20 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut20 happy_x_1 of { happy_var_1 -> 
-	case happyOut28 happy_x_2 of { happy_var_2 -> 
-	case happyOut19 happy_x_3 of { happy_var_3 -> 
-	happyIn19
-		 (let (os,ss,ml) = happy_var_3;
-                                                             ss' = reverse happy_var_2 ++ ss;
-                                                             l'  = case happy_var_2 of
-                                                                    [] -> ann happy_var_1
-                                                                    _  -> ann happy_var_1 <++> nIS (last happy_var_2);
-                                                         in (happy_var_1 : os, ss', Just $ l'  <+?> ml)
-	)}}}
-
-happyReduce_21 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_21 = happySpecReduce_0  5# happyReduction_21
-happyReduction_21  =  happyIn19
-		 (([],[],Nothing)
-	)
-
-happyReduce_22 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_22 = happyReduce 4# 6# happyReduction_22
-happyReduction_22 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LANGUAGE) -> 
-	case happyOut21 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> 
-	happyIn20
-		 (LanguagePragma (happy_var_1 <^^> happy_var_4 <** (happy_var_1:snd happy_var_2 ++ reverse happy_var_3 ++ [happy_var_4])) (fst happy_var_2)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_23 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_23 = happySpecReduce_3  6# happyReduction_23
-happyReduction_23 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut28 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn20
-		 (let Loc l (OPTIONS (mc, s)) = happy_var_1
-                                                      in OptionsPragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) (readTool mc) s
-	)}}}
-
-happyReduce_24 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_24 = happySpecReduce_3  6# happyReduction_24
-happyReduction_24 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 ANN) -> 
-	case happyOut103 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn20
-		 (AnnModulePragma (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_25 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_25 = happySpecReduce_3  7# happyReduction_25
-happyReduction_25 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut263 happy_x_3 of { happy_var_3 -> 
-	happyIn21
-		 ((fst happy_var_1 ++ [happy_var_3], snd happy_var_1 ++ [happy_var_2])
-	)}}}
-
-happyReduce_26 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_26 = happySpecReduce_2  7# happyReduction_26
-happyReduction_26 happy_x_2
-	happy_x_1
-	 =  case happyOut263 happy_x_2 of { happy_var_2 -> 
-	happyIn21
-		 (([happy_var_2],[])
-	)}
-
-happyReduce_27 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_27 = happySpecReduce_2  8# happyReduction_27
-happyReduction_27 happy_x_2
-	happy_x_1
-	 =  case happyOut23 happy_x_1 of { happy_var_1 -> 
-	case happyOut25 happy_x_2 of { happy_var_2 -> 
-	happyIn22
-		 (let (is,ds,ss1,inf) = happy_var_2
-                 in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) happy_var_1 os is ds
-	)}}
-
-happyReduce_28 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_28 = happyReduce 5# 9# happyReduction_28
-happyReduction_28 (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 { (Loc happy_var_1 KW_Module) -> 
-	case happyOut283 happy_x_2 of { happy_var_2 -> 
-	case happyOut24 happy_x_3 of { happy_var_3 -> 
-	case happyOut29 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Where) -> 
-	happyIn23
-		 (Just $ ModuleHead (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 happy_var_3 happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_29 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_29 = happySpecReduce_0  9# happyReduction_29
-happyReduction_29  =  happyIn23
-		 (Nothing
-	)
-
-happyReduce_30 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_30 = happySpecReduce_3  10# happyReduction_30
-happyReduction_30 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn24
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ DeprText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s
-	)}}}
-
-happyReduce_31 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_31 = happySpecReduce_3  10# happyReduction_31
-happyReduction_31 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn24
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ WarnText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s
-	)}}}
-
-happyReduce_32 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_32 = happySpecReduce_0  10# happyReduction_32
-happyReduction_32  =  happyIn24
-		 (Nothing
-	)
-
-happyReduce_33 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_33 = happySpecReduce_3  11# happyReduction_33
-happyReduction_33 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut26 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn25
-		 (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3)
-	)}}}
-
-happyReduce_34 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_34 = happyReduce 4# 11# happyReduction_34
-happyReduction_34 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut272 happy_x_1 of { happy_var_1 -> 
-	case happyOut26 happy_x_2 of { happy_var_2 -> 
-	case happyOut273 happy_x_3 of { happy_var_3 -> 
-	happyIn25
-		 (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3)
-	) `HappyStk` happyRest}}}
-
-happyReduce_35 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_35 = happyReduce 4# 12# happyReduction_35
-happyReduction_35 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut28 happy_x_1 of { happy_var_1 -> 
-	case happyOut37 happy_x_2 of { happy_var_2 -> 
-	case happyOut27 happy_x_3 of { happy_var_3 -> 
-	case happyOut58 happy_x_4 of { happy_var_4 -> 
-	happyIn26
-		 ((reverse (fst happy_var_2), fst happy_var_4, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3 ++ snd happy_var_4)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_36 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_36 = happySpecReduce_2  12# happyReduction_36
-happyReduction_36 happy_x_2
-	happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	case happyOut58 happy_x_2 of { happy_var_2 -> 
-	happyIn26
-		 (([], fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2)
-	)}}
-
-happyReduce_37 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_37 = happySpecReduce_3  12# happyReduction_37
-happyReduction_37 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	case happyOut37 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn26
-		 ((reverse (fst happy_var_2), [], reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3)
-	)}}}
-
-happyReduce_38 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_38 = happySpecReduce_1  12# happyReduction_38
-happyReduction_38 happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	happyIn26
-		 (([], [], reverse happy_var_1)
-	)}
-
-happyReduce_39 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_39 = happySpecReduce_2  13# happyReduction_39
-happyReduction_39 happy_x_2
-	happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> 
-	happyIn27
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_40 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_40 = happySpecReduce_1  14# happyReduction_40
-happyReduction_40 happy_x_1
-	 =  case happyOut27 happy_x_1 of { happy_var_1 -> 
-	happyIn28
-		 (happy_var_1
-	)}
-
-happyReduce_41 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_41 = happySpecReduce_0  14# happyReduction_41
-happyReduction_41  =  happyIn28
-		 ([]
-	)
-
-happyReduce_42 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_42 = happySpecReduce_1  15# happyReduction_42
-happyReduction_42 happy_x_1
-	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
-	happyIn29
-		 (Just happy_var_1
-	)}
-
-happyReduce_43 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_43 = happySpecReduce_0  15# happyReduction_43
-happyReduction_43  =  happyIn29
-		 (Nothing
-	)
-
-happyReduce_44 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_44 = happyReduce 4# 16# happyReduction_44
-happyReduction_44 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut32 happy_x_2 of { happy_var_2 -> 
-	case happyOut31 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn30
-		 (ExportSpecList (happy_var_1 <^^> happy_var_4 <** (happy_var_1:reverse (snd happy_var_2) ++ happy_var_3 ++ [happy_var_4])) (reverse (fst happy_var_2))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_45 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_45 = happySpecReduce_3  16# happyReduction_45
-happyReduction_45 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut31 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn30
-		 (ExportSpecList (happy_var_1 <^^> happy_var_3 <** (happy_var_1:happy_var_2++[happy_var_3])) []
-	)}}}
-
-happyReduce_46 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_46 = happySpecReduce_1  17# happyReduction_46
-happyReduction_46 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> 
-	happyIn31
-		 ([happy_var_1]
-	)}
-
-happyReduce_47 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_47 = happySpecReduce_0  17# happyReduction_47
-happyReduction_47  =  happyIn31
-		 ([  ]
-	)
-
-happyReduce_48 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_48 = happySpecReduce_3  18# happyReduction_48
-happyReduction_48 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut33 happy_x_3 of { happy_var_3 -> 
-	happyIn32
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_49 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_49 = happySpecReduce_1  18# happyReduction_49
-happyReduction_49 happy_x_1
-	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
-	happyIn32
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_50 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_50 = happySpecReduce_1  19# happyReduction_50
-happyReduction_50 happy_x_1
-	 =  case happyOut243 happy_x_1 of { happy_var_1 -> 
-	happyIn33
-		 (EVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_51 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_51 = happyMonadReduce 2# 19# happyReduction_51
-happyReduction_51 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOut36 happy_x_2 of { happy_var_2 -> 
-	( do { checkEnabled ExplicitNamespaces;
-                                                      return (EAbs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1, srcInfoSpan (ann happy_var_2)]) (TypeNamespace (nIS happy_var_1 <** [happy_var_1])) happy_var_2) })}})
-	) (\r -> happyReturn (happyIn33 r))
-
-happyReduce_52 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_52 = happySpecReduce_1  19# happyReduction_52
-happyReduction_52 happy_x_1
-	 =  case happyOut285 happy_x_1 of { happy_var_1 -> 
-	happyIn33
-		 (EAbs (ann happy_var_1) (NoNamespace (ann happy_var_1)) happy_var_1
-	)}
-
-happyReduce_53 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_53 = happySpecReduce_3  19# happyReduction_53
-happyReduction_53 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut285 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn33
-		 (EThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3])    (NoWildcard noSrcSpan) happy_var_1 []
-	)}}}
-
-happyReduce_54 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_54 = happyMonadReduce 4# 19# happyReduction_54
-happyReduction_54 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut285 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut34 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	( mkEThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse $ fst happy_var_3))}}}})
-	) (\r -> happyReturn (happyIn33 r))
-
-happyReduce_55 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_55 = happySpecReduce_2  19# happyReduction_55
-happyReduction_55 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> 
-	case happyOut283 happy_x_2 of { happy_var_2 -> 
-	happyIn33
-		 (EModuleContents (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_56 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_56 = happyMonadReduce 2# 19# happyReduction_56
-happyReduction_56 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Pattern) -> 
-	case happyOut247 happy_x_2 of { happy_var_2 -> 
-	(  do { checkEnabled PatternSynonyms;
-                                                      return $ EAbs (nIS happy_var_1 <++> (ann happy_var_2) <** [happy_var_1])
-                                                                 (PatternNamespace (nIS happy_var_1)) happy_var_2 })}})
-	) (\r -> happyReturn (happyIn33 r))
-
-happyReduce_57 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_57 = happySpecReduce_3  20# happyReduction_57
-happyReduction_57 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut34 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn34
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_58 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_58 = happySpecReduce_1  20# happyReduction_58
-happyReduction_58 happy_x_1
-	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
-	happyIn34
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_59 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_59 = happySpecReduce_1  21# happyReduction_59
-happyReduction_59 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DotDot) -> 
-	happyIn35
-		 (Left happy_var_1
-	)}
-
-happyReduce_60 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_60 = happySpecReduce_1  21# happyReduction_60
-happyReduction_60 happy_x_1
-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
-	happyIn35
-		 (Right happy_var_1
-	)}
-
-happyReduce_61 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_61 = happySpecReduce_1  22# happyReduction_61
-happyReduction_61 happy_x_1
-	 =  case happyOut243 happy_x_1 of { happy_var_1 -> 
-	happyIn36
-		 (happy_var_1
-	)}
-
-happyReduce_62 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_62 = happySpecReduce_1  22# happyReduction_62
-happyReduction_62 happy_x_1
-	 =  case happyOut247 happy_x_1 of { happy_var_1 -> 
-	happyIn36
-		 (happy_var_1
-	)}
-
-happyReduce_63 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_63 = happySpecReduce_3  23# happyReduction_63
-happyReduction_63 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	case happyOut27 happy_x_2 of { happy_var_2 -> 
-	case happyOut38 happy_x_3 of { happy_var_3 -> 
-	happyIn37
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_64 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_64 = happySpecReduce_1  23# happyReduction_64
-happyReduction_64 happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	happyIn37
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_65 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_65 = happyReduce 8# 24# happyReduction_65
-happyReduction_65 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> 
-	case happyOut39 happy_x_2 of { happy_var_2 -> 
-	case happyOut40 happy_x_3 of { happy_var_3 -> 
-	case happyOut41 happy_x_4 of { happy_var_4 -> 
-	case happyOut42 happy_x_5 of { happy_var_5 -> 
-	case happyOut283 happy_x_6 of { happy_var_6 -> 
-	case happyOut43 happy_x_7 of { happy_var_7 -> 
-	case happyOut44 happy_x_8 of { happy_var_8 -> 
-	happyIn38
-		 (let { (mmn,ss,ml) = happy_var_7 ;
-                                      l = nIS happy_var_1 <++> ann happy_var_6 <+?> ml <+?> (fmap ann) happy_var_8 <** (happy_var_1:snd happy_var_2 ++ snd happy_var_3 ++ snd happy_var_4 ++ snd happy_var_5 ++ ss)}
-                                 in ImportDecl l happy_var_6 (fst happy_var_4) (fst happy_var_2) (fst happy_var_3) (fst happy_var_5) mmn happy_var_8
-	) `HappyStk` happyRest}}}}}}}}
-
-happyReduce_66 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_66 = happySpecReduce_2  25# happyReduction_66
-happyReduction_66 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 SOURCE) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> 
-	happyIn39
-		 ((True,[happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_67 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_67 = happySpecReduce_0  25# happyReduction_67
-happyReduction_67  =  happyIn39
-		 ((False,[])
-	)
-
-happyReduce_68 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_68 = happyMonadReduce 1# 26# happyReduction_68
-happyReduction_68 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> 
-	( do { checkEnabledOneOf [Safe, SafeImports, Trustworthy] ;
-                                                 return (True, [happy_var_1]) })})
-	) (\r -> happyReturn (happyIn40 r))
-
-happyReduce_69 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_69 = happySpecReduce_0  26# happyReduction_69
-happyReduction_69  =  happyIn40
-		 ((False, [])
-	)
-
-happyReduce_70 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_70 = happySpecReduce_1  27# happyReduction_70
-happyReduction_70 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> 
-	happyIn41
-		 ((True,[happy_var_1])
-	)}
-
-happyReduce_71 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_71 = happySpecReduce_0  27# happyReduction_71
-happyReduction_71  =  happyIn41
-		 ((False, [])
-	)
-
-happyReduce_72 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_72 = happyMonadReduce 1# 28# happyReduction_72
-happyReduction_72 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { happy_var_1 -> 
-	( do { checkEnabled PackageImports ;
-                                                      let { Loc l (StringTok (s,_)) = happy_var_1 } ;
-                                                      return $ (Just s,[l]) })})
-	) (\r -> happyReturn (happyIn42 r))
-
-happyReduce_73 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_73 = happySpecReduce_0  28# happyReduction_73
-happyReduction_73  =  happyIn42
-		 ((Nothing,[])
-	)
-
-happyReduce_74 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_74 = happySpecReduce_2  29# happyReduction_74
-happyReduction_74 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> 
-	case happyOut283 happy_x_2 of { happy_var_2 -> 
-	happyIn43
-		 ((Just happy_var_2,[happy_var_1],Just (nIS happy_var_1 <++> ann happy_var_2))
-	)}}
-
-happyReduce_75 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_75 = happySpecReduce_0  29# happyReduction_75
-happyReduction_75  =  happyIn43
-		 ((Nothing,[],Nothing)
-	)
-
-happyReduce_76 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_76 = happySpecReduce_1  30# happyReduction_76
-happyReduction_76 happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	happyIn44
-		 (Just happy_var_1
-	)}
-
-happyReduce_77 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_77 = happySpecReduce_0  30# happyReduction_77
-happyReduction_77  =  happyIn44
-		 (Nothing
-	)
-
-happyReduce_78 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_78 = happyReduce 5# 31# happyReduction_78
-happyReduction_78 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut46 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut47 happy_x_3 of { happy_var_3 -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn45
-		 (let {(b,ml,s) = happy_var_1 ;
-                                                      l = (ml <?+> (happy_var_2 <^^> happy_var_5)) <** (s ++ happy_var_2:reverse (snd happy_var_3) ++ happy_var_4 ++ [happy_var_5])}
-                                                 in ImportSpecList l b (reverse (fst happy_var_3))
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_79 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_79 = happyReduce 4# 31# happyReduction_79
-happyReduction_79 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut46 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut31 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn45
-		 (let {(b,ml,s) = happy_var_1 ; l = (ml <?+> (happy_var_2 <^^> happy_var_4)) <** (s ++ happy_var_2:happy_var_3 ++ [happy_var_4])}
-                                                 in ImportSpecList l b []
-	) `HappyStk` happyRest}}}}
-
-happyReduce_80 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_80 = happySpecReduce_1  32# happyReduction_80
-happyReduction_80 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> 
-	happyIn46
-		 ((True,Just (nIS happy_var_1),[happy_var_1])
-	)}
-
-happyReduce_81 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_81 = happySpecReduce_0  32# happyReduction_81
-happyReduction_81  =  happyIn46
-		 ((False,Nothing,[])
-	)
-
-happyReduce_82 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_82 = happySpecReduce_3  33# happyReduction_82
-happyReduction_82 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut48 happy_x_3 of { happy_var_3 -> 
-	happyIn47
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_83 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_83 = happySpecReduce_1  33# happyReduction_83
-happyReduction_83 happy_x_1
-	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
-	happyIn47
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_84 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_84 = happySpecReduce_1  34# happyReduction_84
-happyReduction_84 happy_x_1
-	 =  case happyOut241 happy_x_1 of { happy_var_1 -> 
-	happyIn48
-		 (IVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_85 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_85 = happyMonadReduce 2# 34# happyReduction_85
-happyReduction_85 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOut241 happy_x_2 of { happy_var_2 -> 
-	( do { checkEnabled ExplicitNamespaces;
-                                                      return (IAbs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1, srcInfoSpan (ann happy_var_2)]) (TypeNamespace (nIS happy_var_1 <** [happy_var_1])) happy_var_2) })}})
-	) (\r -> happyReturn (happyIn48 r))
-
-happyReduce_86 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_86 = happyMonadReduce 2# 34# happyReduction_86
-happyReduction_86 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Pattern) -> 
-	case happyOut245 happy_x_2 of { happy_var_2 -> 
-	( do { checkEnabled PatternSynonyms;
-                                                      return (IAbs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1, srcInfoSpan (ann happy_var_2)]) (PatternNamespace (nIS happy_var_1 <** [happy_var_1])) happy_var_2) })}})
-	) (\r -> happyReturn (happyIn48 r))
-
-happyReduce_87 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_87 = happySpecReduce_1  34# happyReduction_87
-happyReduction_87 happy_x_1
-	 =  case happyOut284 happy_x_1 of { happy_var_1 -> 
-	happyIn48
-		 (IAbs (ann happy_var_1) (NoNamespace (ann happy_var_1)) happy_var_1
-	)}
-
-happyReduce_88 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_88 = happyReduce 4# 34# happyReduction_88
-happyReduction_88 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut284 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn48
-		 (IThingAll  (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1
-	) `HappyStk` happyRest}}}}
-
-happyReduce_89 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_89 = happySpecReduce_3  34# happyReduction_89
-happyReduction_89 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut284 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn48
-		 (IThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3])    happy_var_1 []
-	)}}}
-
-happyReduce_90 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_90 = happyReduce 4# 34# happyReduction_90
-happyReduction_90 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut284 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut49 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn48
-		 (IThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_91 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_91 = happySpecReduce_3  35# happyReduction_91
-happyReduction_91 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut50 happy_x_3 of { happy_var_3 -> 
-	happyIn49
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_92 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_92 = happySpecReduce_1  35# happyReduction_92
-happyReduction_92 happy_x_1
-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
-	happyIn49
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_93 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_93 = happySpecReduce_1  36# happyReduction_93
-happyReduction_93 happy_x_1
-	 =  case happyOut241 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (VarName (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_94 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_94 = happySpecReduce_1  36# happyReduction_94
-happyReduction_94 happy_x_1
-	 =  case happyOut245 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (ConName (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_95 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_95 = happySpecReduce_3  37# happyReduction_95
-happyReduction_95 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
-	case happyOut52 happy_x_2 of { happy_var_2 -> 
-	case happyOut54 happy_x_3 of { happy_var_3 -> 
-	happyIn51
-		 (let (ops,ss,l) = happy_var_3
-                                                 in InfixDecl (ann happy_var_1 <++> l <** (snd happy_var_2 ++ reverse ss)) happy_var_1 (fst happy_var_2) (reverse ops)
-	)}}}
-
-happyReduce_96 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_96 = happySpecReduce_0  38# happyReduction_96
-happyReduction_96  =  happyIn52
-		 ((Nothing, [])
-	)
-
-happyReduce_97 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_97 = happyMonadReduce 1# 38# happyReduction_97
-happyReduction_97 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { happy_var_1 -> 
-	( let Loc l (IntTok (i,_)) = happy_var_1 in checkPrec i >>= \i -> return (Just i, [l]))})
-	) (\r -> happyReturn (happyIn52 r))
-
-happyReduce_98 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_98 = happySpecReduce_1  39# happyReduction_98
-happyReduction_98 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> 
-	happyIn53
-		 (AssocNone  $ nIS happy_var_1
-	)}
-
-happyReduce_99 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_99 = happySpecReduce_1  39# happyReduction_99
-happyReduction_99 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> 
-	happyIn53
-		 (AssocLeft  $ nIS happy_var_1
-	)}
-
-happyReduce_100 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_100 = happySpecReduce_1  39# happyReduction_100
-happyReduction_100 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> 
-	happyIn53
-		 (AssocRight $ nIS happy_var_1
-	)}
-
-happyReduce_101 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_101 = happySpecReduce_3  40# happyReduction_101
-happyReduction_101 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut253 happy_x_3 of { happy_var_3 -> 
-	happyIn54
-		 (let (ops,ss,l) = happy_var_1 in (happy_var_3 : ops, happy_var_2 : ss, l <++> ann happy_var_3)
-	)}}}
-
-happyReduce_102 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_102 = happySpecReduce_1  40# happyReduction_102
-happyReduction_102 happy_x_1
-	 =  case happyOut253 happy_x_1 of { happy_var_1 -> 
-	happyIn54
-		 (([happy_var_1],[],ann happy_var_1)
-	)}
-
-happyReduce_103 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_103 = happySpecReduce_0  41# happyReduction_103
-happyReduction_103  =  happyIn55
-		 (Nothing
-	)
-
-happyReduce_104 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_104 = happySpecReduce_1  41# happyReduction_104
-happyReduction_104 happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	happyIn55
-		 (Just happy_var_1
-	)}
-
-happyReduce_105 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_105 = happyReduce 4# 42# happyReduction_105
-happyReduction_105 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> 
-	case happyOut287 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> 
-	case happyOut57 happy_x_4 of { happy_var_4 -> 
-	happyIn56
-		 (InjectivityInfo (nIS happy_var_1 <++> ann (last happy_var_4) <** [happy_var_1,happy_var_3]) happy_var_2 (reverse happy_var_4)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_106 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_106 = happySpecReduce_2  43# happyReduction_106
-happyReduction_106 happy_x_2
-	happy_x_1
-	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
-	case happyOut287 happy_x_2 of { happy_var_2 -> 
-	happyIn57
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_107 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_107 = happySpecReduce_1  43# happyReduction_107
-happyReduction_107 happy_x_1
-	 =  case happyOut287 happy_x_1 of { happy_var_1 -> 
-	happyIn57
-		 ([happy_var_1]
-	)}
-
-happyReduce_108 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_108 = happyMonadReduce 2# 44# happyReduction_108
-happyReduction_108 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut59 happy_x_1 of { happy_var_1 -> 
-	case happyOut28 happy_x_2 of { happy_var_2 -> 
-	( checkRevDecls (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1 ++ reverse happy_var_2))}})
-	) (\r -> happyReturn (happyIn58 r))
-
-happyReduce_109 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_109 = happySpecReduce_3  45# happyReduction_109
-happyReduction_109 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut59 happy_x_1 of { happy_var_1 -> 
-	case happyOut27 happy_x_2 of { happy_var_2 -> 
-	case happyOut60 happy_x_3 of { happy_var_3 -> 
-	happyIn59
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_110 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_110 = happySpecReduce_1  45# happyReduction_110
-happyReduction_110 happy_x_1
-	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
-	happyIn59
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_111 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_111 = happyMonadReduce 1# 46# happyReduction_111
-happyReduction_111 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut65 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled RoleAnnotations >> return happy_var_1)})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_112 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_112 = happyMonadReduce 4# 46# happyReduction_112
-happyReduction_112 (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 { (Loc happy_var_1 KW_Type) -> 
-	case happyOut105 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> 
-	case happyOut119 happy_x_4 of { happy_var_4 -> 
-	( do { dh <- checkSimpleType happy_var_2;
-                       let {l = nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]};
-                       return (TypeDecl l dh happy_var_4) })}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_113 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_113 = happyMonadReduce 6# 46# happyReduction_113
-happyReduction_113 (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 { (Loc happy_var_1 KW_Type) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> 
-	case happyOut107 happy_x_3 of { happy_var_3 -> 
-	case happyOut62 happy_x_4 of { happy_var_4 -> 
-	case happyOut55 happy_x_5 of { happy_var_5 -> 
-	case happyOut69 happy_x_6 of { happy_var_6 -> 
-	( do { dh <- checkSimpleType happy_var_3;
-                       let {l = nIS happy_var_1 <++> ann happy_var_3 <** [happy_var_1,happy_var_2]};
-                       case happy_var_6 of {
-                         Nothing    -> return (TypeFamDecl l dh happy_var_4 happy_var_5);
-                         Just (x,a) -> return (ClosedTypeFamDecl (l <** [a]) dh happy_var_4 happy_var_5 x); }})}}}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_114 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_114 = happyMonadReduce 5# 46# happyReduction_114
-happyReduction_114 (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 { (Loc happy_var_1 KW_Type) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut104 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 Equals) -> 
-	case happyOut119 happy_x_5 of { happy_var_5 -> 
-	( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns
-                       checkEnabled TypeFamilies ;
-                       let {l = nIS happy_var_1 <++> ann happy_var_5 <** [happy_var_1,happy_var_2,happy_var_4]};
-                       return (TypeInsDecl l happy_var_3 happy_var_5) })}}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_115 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_115 = happyMonadReduce 4# 46# happyReduction_115
-happyReduction_115 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut73 happy_x_1 of { happy_var_1 -> 
-	case happyOut120 happy_x_2 of { happy_var_2 -> 
-	case happyOut136 happy_x_3 of { happy_var_3 -> 
-	case happyOut144 happy_x_4 of { happy_var_4 -> 
-	( do { (cs,dh) <- checkDataHeader happy_var_2;
-                       let { (qds,ss,minf) = happy_var_3;
-                             l = happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann (listToMaybe happy_var_4) <** ss};
-                       checkDataOrNew happy_var_1 qds;
-                       return (DataDecl l happy_var_1 cs dh (reverse qds) (reverse happy_var_4)) })}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_116 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_116 = happyMonadReduce 5# 46# happyReduction_116
-happyReduction_116 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut73 happy_x_1 of { happy_var_1 -> 
-	case happyOut120 happy_x_2 of { happy_var_2 -> 
-	case happyOut155 happy_x_3 of { happy_var_3 -> 
-	case happyOut132 happy_x_4 of { happy_var_4 -> 
-	case happyOut144 happy_x_5 of { happy_var_5 -> 
-	( do { (cs,dh) <- checkDataHeader happy_var_2;
-                       let { (gs,ss,minf) = happy_var_4;
-                             derivs' = reverse happy_var_5;
-                             l = ann happy_var_1 <+?> minf <+?> fmap ann (listToMaybe happy_var_5) <** (snd happy_var_3 ++ ss)};
-                       checkDataOrNewG happy_var_1 gs;
-                       case (gs, fst happy_var_3) of
-                        ([], Nothing) -> return (DataDecl l happy_var_1 cs dh [] derivs')
-                        _ -> checkEnabled GADTs >> return (GDataDecl l happy_var_1 cs dh (fst happy_var_3) (reverse gs) derivs') })}}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_117 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_117 = happyMonadReduce 4# 46# happyReduction_117
-happyReduction_117 (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 { (Loc happy_var_1 KW_Data) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> 
-	case happyOut120 happy_x_3 of { happy_var_3 -> 
-	case happyOut61 happy_x_4 of { happy_var_4 -> 
-	( do { (cs,dh) <- checkDataHeader happy_var_3;
-                       let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) happy_var_4 <** [happy_var_1,happy_var_2]};
-                       return (DataFamDecl l cs dh happy_var_4) })}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_118 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_118 = happyMonadReduce 5# 46# happyReduction_118
-happyReduction_118 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut73 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut119 happy_x_3 of { happy_var_3 -> 
-	case happyOut136 happy_x_4 of { happy_var_4 -> 
-	case happyOut144 happy_x_5 of { happy_var_5 -> 
-	( do { -- (cs,c,t) <- checkDataHeader happy_var_4;
-                       checkEnabled TypeFamilies ;
-                       let { (qds,ss,minf) = happy_var_4 ;
-                             l = happy_var_1 <> happy_var_3 <+?> minf <+?> fmap ann (listToMaybe happy_var_5) <** happy_var_2:ss };
-                       checkDataOrNew happy_var_1 qds;
-                       return (DataInsDecl l happy_var_1 happy_var_3 (reverse qds) (reverse happy_var_5)) })}}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_119 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_119 = happyMonadReduce 6# 46# happyReduction_119
-happyReduction_119 (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 happyOut73 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut119 happy_x_3 of { happy_var_3 -> 
-	case happyOut155 happy_x_4 of { happy_var_4 -> 
-	case happyOut132 happy_x_5 of { happy_var_5 -> 
-	case happyOut144 happy_x_6 of { happy_var_6 -> 
-	( do { -- (cs,c,t) <- checkDataHeader happy_var_4;
-                       checkEnabled TypeFamilies ;
-                       let {(gs,ss,minf) = happy_var_5;
-                            derivs' = reverse happy_var_6;
-                            l = ann happy_var_1 <+?> minf <+?> fmap ann (listToMaybe derivs') <** (happy_var_2:snd happy_var_4 ++ ss)};
-                       checkDataOrNewG happy_var_1 gs;
-                       return (GDataInsDecl l happy_var_1 happy_var_3 (fst happy_var_4) (reverse gs) derivs') })}}}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_120 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_120 = happyMonadReduce 4# 46# happyReduction_120
-happyReduction_120 (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 { (Loc happy_var_1 KW_Class) -> 
-	case happyOut120 happy_x_2 of { happy_var_2 -> 
-	case happyOut129 happy_x_3 of { happy_var_3 -> 
-	case happyOut157 happy_x_4 of { happy_var_4 -> 
-	( do { (cs,dh) <- checkClassHeader happy_var_2;
-                       let {(fds,ss1,minf1) = happy_var_3;(mcs,ss2,minf2) = happy_var_4} ;
-                       let { l = nIS happy_var_1 <++> ann happy_var_2 <+?> minf1 <+?> minf2 <** (happy_var_1:ss1 ++ ss2)} ;
-                       return (ClassDecl l cs dh fds mcs) })}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_121 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_121 = happyMonadReduce 4# 46# happyReduction_121
-happyReduction_121 (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 { (Loc happy_var_1 KW_Instance) -> 
-	case happyOut68 happy_x_2 of { happy_var_2 -> 
-	case happyOut120 happy_x_3 of { happy_var_3 -> 
-	case happyOut163 happy_x_4 of { happy_var_4 -> 
-	( do { ih <- checkInstHeader happy_var_3;
-                       let {(mis,ss,minf) = happy_var_4};
-                       return (InstDecl (nIS happy_var_1 <++> ann happy_var_3 <+?> minf <** (happy_var_1:ss)) happy_var_2 ih mis) })}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_122 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_122 = happyMonadReduce 5# 46# happyReduction_122
-happyReduction_122 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> 
-	case happyOut282 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Instance) -> 
-	case happyOut68 happy_x_4 of { happy_var_4 -> 
-	case happyOut120 happy_x_5 of { happy_var_5 -> 
-	( do { checkEnabled StandaloneDeriving ;
-                       ih <- checkInstHeader happy_var_5;
-                       let {l = nIS happy_var_1 <++> ann happy_var_5 <** [happy_var_1,happy_var_3]};
-                       return (DerivDecl l happy_var_2 happy_var_4 ih) })}}}}})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_123 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_123 = happyReduce 4# 46# happyReduction_123
-happyReduction_123 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOut74 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn60
-		 (DefaultDecl (happy_var_1 <^^> happy_var_4 <** (happy_var_1:happy_var_2 : snd happy_var_3 ++ [happy_var_4])) (fst happy_var_3)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_124 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_124 = happyMonadReduce 1# 46# happyReduction_124
-happyReduction_124 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut176 happy_x_1 of { happy_var_1 -> 
-	( do
-              checkToplevel happy_var_1
-              checkExpr happy_var_1 >>= \e -> return (SpliceDecl (ann e) e))})
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_125 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_125 = happyReduce 5# 46# happyReduction_125
-happyReduction_125 (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 { (Loc happy_var_1 KW_Foreign) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Import) -> 
-	case happyOut90 happy_x_3 of { happy_var_3 -> 
-	case happyOut91 happy_x_4 of { happy_var_4 -> 
-	case happyOut92 happy_x_5 of { happy_var_5 -> 
-	happyIn60
-		 (let (s,n,t,ss) = happy_var_5 in ForImp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 happy_var_4 s n t
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_126 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_126 = happyReduce 4# 46# happyReduction_126
-happyReduction_126 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Export) -> 
-	case happyOut90 happy_x_3 of { happy_var_3 -> 
-	case happyOut92 happy_x_4 of { happy_var_4 -> 
-	happyIn60
-		 (let (s,n,t,ss) = happy_var_4 in ForExp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3    s n t
-	) `HappyStk` happyRest}}}}
-
-happyReduce_127 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_127 = happySpecReduce_3  46# happyReduction_127
-happyReduction_127 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 RULES) -> 
-	case happyOut93 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn60
-		 (RulePragmaDecl (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ reverse happy_var_2
-	)}}}
-
-happyReduce_128 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_128 = happySpecReduce_3  46# happyReduction_128
-happyReduction_128 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> 
-	case happyOut99 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn60
-		 (DeprPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2)
-	)}}}
-
-happyReduce_129 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_129 = happySpecReduce_3  46# happyReduction_129
-happyReduction_129 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> 
-	case happyOut99 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn60
-		 (WarnPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2)
-	)}}}
-
-happyReduce_130 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_130 = happySpecReduce_3  46# happyReduction_130
-happyReduction_130 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 ANN) -> 
-	case happyOut103 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn60
-		 (AnnPragma      (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_131 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_131 = happyReduce 4# 46# happyReduction_131
-happyReduction_131 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 COMPLETE) -> 
-	case happyOut246 happy_x_2 of { happy_var_2 -> 
-	case happyOut156 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> 
-	happyIn60
-		 (let com = maybe [] ((:[]) . fst) happy_var_3; ts = fmap snd happy_var_3 in
-(CompletePragma (happy_var_1 <^^> happy_var_4 <** ([happy_var_1] ++ fst happy_var_2 ++ com ++ [happy_var_4])) (snd happy_var_2) ts)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_132 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_132 = happySpecReduce_1  46# happyReduction_132
-happyReduction_132 happy_x_1
-	 =  case happyOut77 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 (happy_var_1
-	)}
-
-happyReduce_133 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_133 = happySpecReduce_0  47# happyReduction_133
-happyReduction_133  =  happyIn61
-		 (Nothing
-	)
-
-happyReduce_134 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_134 = happySpecReduce_2  47# happyReduction_134
-happyReduction_134 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> 
-	case happyOut149 happy_x_2 of { happy_var_2 -> 
-	happyIn61
-		 ((Just $ KindSig (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2)
-	)}}
-
-happyReduce_135 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_135 = happySpecReduce_0  48# happyReduction_135
-happyReduction_135  =  happyIn62
-		 (Nothing
-	)
-
-happyReduce_136 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_136 = happySpecReduce_2  48# happyReduction_136
-happyReduction_136 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> 
-	case happyOut149 happy_x_2 of { happy_var_2 -> 
-	happyIn62
-		 ((Just $ KindSig  (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2)
-	)}}
-
-happyReduce_137 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_137 = happySpecReduce_2  48# happyReduction_137
-happyReduction_137 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> 
-	case happyOut126 happy_x_2 of { happy_var_2 -> 
-	happyIn62
-		 ((Just $ TyVarSig (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2)
-	)}}
-
-happyReduce_138 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_138 = happySpecReduce_0  49# happyReduction_138
-happyReduction_138  =  happyIn63
-		 ((Nothing, Nothing)
-	)
-
-happyReduce_139 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_139 = happySpecReduce_2  49# happyReduction_139
-happyReduction_139 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> 
-	case happyOut149 happy_x_2 of { happy_var_2 -> 
-	happyIn63
-		 ((Just (KindSig (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2), Nothing)
-	)}}
-
-happyReduce_140 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_140 = happySpecReduce_3  49# happyReduction_140
-happyReduction_140 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> 
-	case happyOut126 happy_x_2 of { happy_var_2 -> 
-	case happyOut56 happy_x_3 of { happy_var_3 -> 
-	happyIn63
-		 ((Just (TyVarSig (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2), Just happy_var_3)
-	)}}}
-
-happyReduce_141 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_141 = happySpecReduce_0  50# happyReduction_141
-happyReduction_141  =  happyIn64
-		 ((Nothing, Nothing, Nothing)
-	)
-
-happyReduce_142 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_142 = happySpecReduce_2  50# happyReduction_142
-happyReduction_142 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> 
-	case happyOut149 happy_x_2 of { happy_var_2 -> 
-	happyIn64
-		 ((Just (KindSig (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2), Nothing, Nothing)
-	)}}
-
-happyReduce_143 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_143 = happySpecReduce_3  50# happyReduction_143
-happyReduction_143 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> 
-	case happyOut119 happy_x_2 of { happy_var_2 -> 
-	case happyOut55 happy_x_3 of { happy_var_3 -> 
-	happyIn64
-		 ((Nothing, Just (happy_var_1, happy_var_2), happy_var_3)
-	)}}}
-
-happyReduce_144 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_144 = happyMonadReduce 4# 51# happyReduction_144
-happyReduction_144 (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 { (Loc happy_var_1 KW_Type) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Role) -> 
-	case happyOut117 happy_x_3 of { happy_var_3 -> 
-	case happyOut66 happy_x_4 of { happy_var_4 -> 
-	( mkRoleAnnotDecl happy_var_1 happy_var_2 happy_var_3 (reverse happy_var_4))}}}})
-	) (\r -> happyReturn (happyIn65 r))
-
-happyReduce_145 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_145 = happySpecReduce_0  52# happyReduction_145
-happyReduction_145  =  happyIn66
-		 ([]
-	)
-
-happyReduce_146 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_146 = happySpecReduce_2  52# happyReduction_146
-happyReduction_146 happy_x_2
-	happy_x_1
-	 =  case happyOut66 happy_x_1 of { happy_var_1 -> 
-	case happyOut67 happy_x_2 of { happy_var_2 -> 
-	happyIn66
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_147 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_147 = happySpecReduce_1  53# happyReduction_147
-happyReduction_147 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn67
-		 (let (VarId v) = unLoc happy_var_1 in (Just v, nIS $ loc happy_var_1)
-	)}
-
-happyReduce_148 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_148 = happySpecReduce_1  53# happyReduction_148
-happyReduction_148 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Underscore) -> 
-	happyIn67
-		 ((Nothing, nIS happy_var_1)
-	)}
-
-happyReduce_149 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_149 = happySpecReduce_2  54# happyReduction_149
-happyReduction_149 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 OVERLAP) -> 
-	happyIn68
-		 (Just (Overlap (nIS happy_var_1))
-	)}
-
-happyReduce_150 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_150 = happySpecReduce_2  54# happyReduction_150
-happyReduction_150 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 OVERLAPS) -> 
-	happyIn68
-		 (Just (Overlaps (nIS happy_var_1))
-	)}
-
-happyReduce_151 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_151 = happySpecReduce_2  54# happyReduction_151
-happyReduction_151 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 OVERLAPPING) -> 
-	happyIn68
-		 (Just (Overlapping (nIS happy_var_1))
-	)}
-
-happyReduce_152 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_152 = happySpecReduce_2  54# happyReduction_152
-happyReduction_152 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 OVERLAPPABLE) -> 
-	happyIn68
-		 (Just (Overlappable (nIS happy_var_1))
-	)}
-
-happyReduce_153 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_153 = happySpecReduce_2  54# happyReduction_153
-happyReduction_153 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 INCOHERENT) -> 
-	happyIn68
-		 (Just (Incoherent (nIS happy_var_1))
-	)}
-
-happyReduce_154 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_154 = happySpecReduce_2  54# happyReduction_154
-happyReduction_154 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 NO_OVERLAP) -> 
-	happyIn68
-		 (Just (NoOverlap (nIS happy_var_1))
-	)}
-
-happyReduce_155 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_155 = happySpecReduce_0  54# happyReduction_155
-happyReduction_155  =  happyIn68
-		 (Nothing
-	)
-
-happyReduce_156 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_156 = happySpecReduce_0  55# happyReduction_156
-happyReduction_156  =  happyIn69
-		 (Nothing
-	)
-
-happyReduce_157 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_157 = happySpecReduce_2  55# happyReduction_157
-happyReduction_157 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	case happyOut70 happy_x_2 of { happy_var_2 -> 
-	happyIn69
-		 (Just (happy_var_2, happy_var_1)
-	)}}
-
-happyReduce_158 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_158 = happySpecReduce_3  56# happyReduction_158
-happyReduction_158 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut71 happy_x_2 of { happy_var_2 -> 
-	happyIn70
-		 (happy_var_2
-	)}
-
-happyReduce_159 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_159 = happySpecReduce_3  56# happyReduction_159
-happyReduction_159 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut71 happy_x_2 of { happy_var_2 -> 
-	happyIn70
-		 (happy_var_2
-	)}
-
-happyReduce_160 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_160 = happySpecReduce_3  57# happyReduction_160
-happyReduction_160 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
-	case happyOut72 happy_x_3 of { happy_var_3 -> 
-	happyIn71
-		 (happy_var_1 ++ [happy_var_3]
-	)}}
-
-happyReduce_161 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_161 = happySpecReduce_2  57# happyReduction_161
-happyReduction_161 happy_x_2
-	happy_x_1
-	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
-	happyIn71
-		 (happy_var_1
-	)}
-
-happyReduce_162 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_162 = happySpecReduce_1  57# happyReduction_162
-happyReduction_162 happy_x_1
-	 =  case happyOut72 happy_x_1 of { happy_var_1 -> 
-	happyIn71
-		 ([happy_var_1]
-	)}
-
-happyReduce_163 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_163 = happyMonadReduce 3# 58# happyReduction_163
-happyReduction_163 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut119 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> 
-	case happyOut119 happy_x_3 of { happy_var_3 -> 
-	( do { checkEnabled TypeFamilies ;
-                        return (TypeEqn (ann happy_var_1 <++> ann happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3) })}}})
-	) (\r -> happyReturn (happyIn72 r))
-
-happyReduce_164 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_164 = happySpecReduce_1  59# happyReduction_164
-happyReduction_164 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> 
-	happyIn73
-		 (DataType $ nIS happy_var_1
-	)}
-
-happyReduce_165 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_165 = happySpecReduce_1  59# happyReduction_165
-happyReduction_165 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> 
-	happyIn73
-		 (NewType  $ nIS happy_var_1
-	)}
-
-happyReduce_166 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_166 = happyMonadReduce 1# 60# happyReduction_166
-happyReduction_166 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut122 happy_x_1 of { happy_var_1 -> 
-	( do { ts <- mapM checkType (fst happy_var_1);
-                                              return $ (reverse ts, reverse (snd happy_var_1)) })})
-	) (\r -> happyReturn (happyIn74 r))
-
-happyReduce_167 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_167 = happySpecReduce_1  60# happyReduction_167
-happyReduction_167 happy_x_1
-	 =  case happyOut106 happy_x_1 of { happy_var_1 -> 
-	happyIn74
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_168 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_168 = happySpecReduce_0  60# happyReduction_168
-happyReduction_168  =  happyIn74
-		 (([],[])
-	)
-
-happyReduce_169 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_169 = happyMonadReduce 3# 61# happyReduction_169
-happyReduction_169 (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 happyOut76 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	( checkRevDecls (fst happy_var_2) >>= \ds -> return (ds, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}})
-	) (\r -> happyReturn (happyIn75 r))
-
-happyReduce_170 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_170 = happySpecReduce_1  61# happyReduction_170
-happyReduction_170 happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	happyIn75
-		 (([],reverse happy_var_1)
-	)}
-
-happyReduce_171 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_171 = happySpecReduce_3  62# happyReduction_171
-happyReduction_171 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut76 happy_x_1 of { happy_var_1 -> 
-	case happyOut27 happy_x_2 of { happy_var_2 -> 
-	case happyOut77 happy_x_3 of { happy_var_3 -> 
-	happyIn76
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_172 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_172 = happySpecReduce_1  62# happyReduction_172
-happyReduction_172 happy_x_1
-	 =  case happyOut77 happy_x_1 of { happy_var_1 -> 
-	happyIn76
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_173 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_173 = happySpecReduce_1  63# happyReduction_173
-happyReduction_173 happy_x_1
-	 =  case happyOut79 happy_x_1 of { happy_var_1 -> 
-	happyIn77
-		 (happy_var_1
-	)}
-
-happyReduce_174 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_174 = happySpecReduce_1  63# happyReduction_174
-happyReduction_174 happy_x_1
-	 =  case happyOut51 happy_x_1 of { happy_var_1 -> 
-	happyIn77
-		 (happy_var_1
-	)}
-
-happyReduce_175 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_175 = happySpecReduce_1  63# happyReduction_175
-happyReduction_175 happy_x_1
-	 =  case happyOut168 happy_x_1 of { happy_var_1 -> 
-	happyIn77
-		 (happy_var_1
-	)}
-
-happyReduce_176 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_176 = happySpecReduce_1  63# happyReduction_176
-happyReduction_176 happy_x_1
-	 =  case happyOut274 happy_x_1 of { happy_var_1 -> 
-	happyIn77
-		 (happy_var_1
-	)}
-
-happyReduce_177 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_177 = happySpecReduce_1  63# happyReduction_177
-happyReduction_177 happy_x_1
-	 =  case happyOut280 happy_x_1 of { happy_var_1 -> 
-	happyIn77
-		 (happy_var_1
-	)}
-
-happyReduce_178 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_178 = happySpecReduce_3  64# happyReduction_178
-happyReduction_178 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut75 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn78
-		 (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2)
-	)}}}
-
-happyReduce_179 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_179 = happySpecReduce_3  64# happyReduction_179
-happyReduction_179 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut272 happy_x_1 of { happy_var_1 -> 
-	case happyOut75 happy_x_2 of { happy_var_2 -> 
-	case happyOut273 happy_x_3 of { happy_var_3 -> 
-	happyIn78
-		 (let l' = if null (fst happy_var_2) then nIS happy_var_3 else (ann . last $ fst happy_var_2)
-                                         in BDecls (nIS happy_var_1 <++> l' <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2)
-	)}}}
-
-happyReduce_180 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_180 = happySpecReduce_1  65# happyReduction_180
-happyReduction_180 happy_x_1
-	 =  case happyOut80 happy_x_1 of { happy_var_1 -> 
-	happyIn79
-		 (happy_var_1
-	)}
-
-happyReduce_181 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_181 = happySpecReduce_1  65# happyReduction_181
-happyReduction_181 happy_x_1
-	 =  case happyOut81 happy_x_1 of { happy_var_1 -> 
-	happyIn79
-		 (happy_var_1
-	)}
-
-happyReduce_182 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_182 = happyMonadReduce 3# 66# happyReduction_182
-happyReduction_182 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut119 happy_x_3 of { happy_var_3 -> 
-	( do { v <- checkSigVar happy_var_1;
-                                                               return $ TypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) [v] happy_var_3 })}}})
-	) (\r -> happyReturn (happyIn80 r))
-
-happyReduce_183 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_183 = happyMonadReduce 5# 66# happyReduction_183
-happyReduction_183 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut89 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> 
-	case happyOut119 happy_x_5 of { happy_var_5 -> 
-	( do { v <- checkSigVar happy_var_1;
-                                                               let {(vs,ss,_) = happy_var_3 ; l = happy_var_1 <> happy_var_5 <** (happy_var_2 : reverse ss ++ [happy_var_4]) } ;
-                                                               return $ TypeSig l (v : reverse vs) happy_var_5 })}}}}})
-	) (\r -> happyReturn (happyIn80 r))
-
-happyReduce_184 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_184 = happyReduce 4# 67# happyReduction_184
-happyReduction_184 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut95 happy_x_2 of { happy_var_2 -> 
-	case happyOut243 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> 
-	happyIn81
-		 (let Loc l (INLINE s) = happy_var_1 in InlineSig (l <^^> happy_var_4 <** [l,happy_var_4]) s happy_var_2 happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_185 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_185 = happyReduce 4# 67# happyReduction_185
-happyReduction_185 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 INLINE_CONLIKE) -> 
-	case happyOut95 happy_x_2 of { happy_var_2 -> 
-	case happyOut243 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> 
-	happyIn81
-		 (InlineConlikeSig (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_4]) happy_var_2 happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_186 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_186 = happyReduce 6# 67# happyReduction_186
-happyReduction_186 (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 { (Loc happy_var_1 SPECIALISE) -> 
-	case happyOut95 happy_x_2 of { happy_var_2 -> 
-	case happyOut243 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> 
-	case happyOut82 happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (Loc happy_var_6 PragmaEnd) -> 
-	happyIn81
-		 (SpecSig (happy_var_1 <^^> happy_var_6 <** (happy_var_1: happy_var_4 : snd happy_var_5 ++ [happy_var_6])) happy_var_2 happy_var_3 (fst happy_var_5)
-	) `HappyStk` happyRest}}}}}}
-
-happyReduce_187 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_187 = happyReduce 6# 67# happyReduction_187
-happyReduction_187 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut95 happy_x_2 of { happy_var_2 -> 
-	case happyOut243 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> 
-	case happyOut82 happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (Loc happy_var_6 PragmaEnd) -> 
-	happyIn81
-		 (let Loc l (SPECIALISE_INLINE s) = happy_var_1
-               in SpecInlineSig (l <^^> happy_var_6 <** (l:happy_var_4:snd happy_var_5++[happy_var_6])) s happy_var_2 happy_var_3 (fst happy_var_5)
-	) `HappyStk` happyRest}}}}}}
-
-happyReduce_188 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_188 = happyMonadReduce 4# 67# happyReduction_188
-happyReduction_188 (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 { (Loc happy_var_1 SPECIALISE) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut120 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> 
-	( do { ih <- checkInstHeader happy_var_3;
-                                                               let {l = happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,happy_var_4]};
-                                                               return $ InstSig l ih })}}}})
-	) (\r -> happyReturn (happyIn81 r))
-
-happyReduce_189 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_189 = happySpecReduce_3  67# happyReduction_189
-happyReduction_189 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 MINIMAL) -> 
-	case happyOut84 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	happyIn81
-		 (MinimalPragma (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_190 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_190 = happySpecReduce_1  68# happyReduction_190
-happyReduction_190 happy_x_1
-	 =  case happyOut83 happy_x_1 of { happy_var_1 -> 
-	happyIn82
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_191 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_191 = happySpecReduce_3  68# happyReduction_191
-happyReduction_191 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut83 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut82 happy_x_3 of { happy_var_3 -> 
-	happyIn82
-		 ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3)
-	)}}}
-
-happyReduce_192 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_192 = happyMonadReduce 1# 69# happyReduction_192
-happyReduction_192 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut120 happy_x_1 of { happy_var_1 -> 
-	( checkType $ mkTyForall (ann happy_var_1) Nothing Nothing happy_var_1)})
-	) (\r -> happyReturn (happyIn83 r))
-
-happyReduce_193 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_193 = happySpecReduce_1  70# happyReduction_193
-happyReduction_193 happy_x_1
-	 =  case happyOut85 happy_x_1 of { happy_var_1 -> 
-	happyIn84
-		 (Just happy_var_1
-	)}
-
-happyReduce_194 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_194 = happySpecReduce_0  70# happyReduction_194
-happyReduction_194  =  happyIn84
-		 (Nothing
-	)
-
-happyReduce_195 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_195 = happySpecReduce_1  71# happyReduction_195
-happyReduction_195 happy_x_1
-	 =  case happyOut86 happy_x_1 of { happy_var_1 -> 
-	happyIn85
-		 (happy_var_1
-	)}
-
-happyReduce_196 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_196 = happySpecReduce_3  71# happyReduction_196
-happyReduction_196 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut86 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut85 happy_x_3 of { happy_var_3 -> 
-	happyIn85
-		 (OrFormula (ann happy_var_1 <++>  ann happy_var_3 <** [happy_var_2]) [happy_var_1,happy_var_3]
-	)}}}
-
-happyReduce_197 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_197 = happySpecReduce_1  72# happyReduction_197
-happyReduction_197 happy_x_1
-	 =  case happyOut87 happy_x_1 of { happy_var_1 -> 
-	happyIn86
-		 (happy_var_1
-	)}
-
-happyReduce_198 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_198 = happySpecReduce_3  72# happyReduction_198
-happyReduction_198 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut87 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut86 happy_x_3 of { happy_var_3 -> 
-	happyIn86
-		 (AndFormula (ann happy_var_1 <++> ann happy_var_3 <** [happy_var_2]) [happy_var_1,happy_var_3]
-	)}}}
-
-happyReduce_199 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_199 = happySpecReduce_3  73# happyReduction_199
-happyReduction_199 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut85 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn87
-		 (ParenFormula (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_200 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_200 = happySpecReduce_1  73# happyReduction_200
-happyReduction_200 happy_x_1
-	 =  case happyOut241 happy_x_1 of { happy_var_1 -> 
-	happyIn87
-		 (VarFormula (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_201 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_201 = happySpecReduce_1  74# happyReduction_201
-happyReduction_201 happy_x_1
-	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
-	happyIn88
-		 (happy_var_1
-	)}
-
-happyReduce_202 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_202 = happySpecReduce_3  74# happyReduction_202
-happyReduction_202 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut234 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn88
-		 (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2)
-	)}}}
-
-happyReduce_203 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_203 = happySpecReduce_3  74# happyReduction_203
-happyReduction_203 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut272 happy_x_1 of { happy_var_1 -> 
-	case happyOut234 happy_x_2 of { happy_var_2 -> 
-	happyIn88
-		 (let l' =  ann . last $ fst happy_var_2
-                                         in IPBinds (nIS happy_var_1 <++> l' <** snd happy_var_2) (fst happy_var_2)
-	)}}
-
-happyReduce_204 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_204 = happySpecReduce_3  75# happyReduction_204
-happyReduction_204 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut89 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut241 happy_x_3 of { happy_var_3 -> 
-	happyIn89
-		 (let (ns,ss,l) = happy_var_1 in (happy_var_3 : ns, happy_var_2 : ss, l <++> ann happy_var_3)
-	)}}}
-
-happyReduce_205 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_205 = happyMonadReduce 1# 75# happyReduction_205
-happyReduction_205 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut243 happy_x_1 of { happy_var_1 -> 
-	( do { n <- checkUnQual happy_var_1;
-                                              return ([n],[],ann n) })})
-	) (\r -> happyReturn (happyIn89 r))
-
-happyReduce_206 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_206 = happySpecReduce_1  76# happyReduction_206
-happyReduction_206 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> 
-	happyIn90
-		 (StdCall    (nIS happy_var_1)
-	)}
-
-happyReduce_207 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_207 = happySpecReduce_1  76# happyReduction_207
-happyReduction_207 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> 
-	happyIn90
-		 (CCall      (nIS happy_var_1)
-	)}
-
-happyReduce_208 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_208 = happySpecReduce_1  76# happyReduction_208
-happyReduction_208 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CPlusPlus) -> 
-	happyIn90
-		 (CPlusPlus  (nIS happy_var_1)
-	)}
-
-happyReduce_209 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_209 = happySpecReduce_1  76# happyReduction_209
-happyReduction_209 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_DotNet) -> 
-	happyIn90
-		 (DotNet     (nIS happy_var_1)
-	)}
-
-happyReduce_210 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_210 = happySpecReduce_1  76# happyReduction_210
-happyReduction_210 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Jvm) -> 
-	happyIn90
-		 (Jvm        (nIS happy_var_1)
-	)}
-
-happyReduce_211 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_211 = happySpecReduce_1  76# happyReduction_211
-happyReduction_211 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Js) -> 
-	happyIn90
-		 (Js         (nIS happy_var_1)
-	)}
-
-happyReduce_212 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_212 = happySpecReduce_1  76# happyReduction_212
-happyReduction_212 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_JavaScript) -> 
-	happyIn90
-		 (JavaScript (nIS happy_var_1)
-	)}
-
-happyReduce_213 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_213 = happySpecReduce_1  76# happyReduction_213
-happyReduction_213 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CApi) -> 
-	happyIn90
-		 (CApi       (nIS happy_var_1)
-	)}
-
-happyReduce_214 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_214 = happySpecReduce_1  77# happyReduction_214
-happyReduction_214 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> 
-	happyIn91
-		 (Just $ PlaySafe  (nIS happy_var_1) False
-	)}
-
-happyReduce_215 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_215 = happySpecReduce_1  77# happyReduction_215
-happyReduction_215 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> 
-	happyIn91
-		 (Just $ PlayRisky (nIS happy_var_1)
-	)}
-
-happyReduce_216 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_216 = happySpecReduce_1  77# happyReduction_216
-happyReduction_216 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> 
-	happyIn91
-		 (Just $ PlaySafe  (nIS happy_var_1) True
-	)}
-
-happyReduce_217 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_217 = happySpecReduce_1  77# happyReduction_217
-happyReduction_217 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Interruptible) -> 
-	happyIn91
-		 (Just $ PlayInterruptible (nIS happy_var_1)
-	)}
-
-happyReduce_218 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_218 = happySpecReduce_0  77# happyReduction_218
-happyReduction_218  =  happyIn91
-		 (Nothing
-	)
-
-happyReduce_219 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_219 = happyReduce 4# 78# happyReduction_219
-happyReduction_219 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut242 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut104 happy_x_4 of { happy_var_4 -> 
-	happyIn92
-		 (let Loc l (StringTok (s,_)) = happy_var_1 in (Just s, happy_var_2, happy_var_4, [l,happy_var_3])
-	) `HappyStk` happyRest}}}}
-
-happyReduce_220 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_220 = happySpecReduce_3  78# happyReduction_220
-happyReduction_220 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut242 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut104 happy_x_3 of { happy_var_3 -> 
-	happyIn92
-		 ((Nothing, happy_var_1, happy_var_3, [happy_var_2])
-	)}}}
-
-happyReduce_221 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_221 = happySpecReduce_3  79# happyReduction_221
-happyReduction_221 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut93 happy_x_1 of { happy_var_1 -> 
-	case happyOut94 happy_x_3 of { happy_var_3 -> 
-	happyIn93
-		 (happy_var_3 : happy_var_1
-	)}}
-
-happyReduce_222 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_222 = happySpecReduce_2  79# happyReduction_222
-happyReduction_222 happy_x_2
-	happy_x_1
-	 =  case happyOut93 happy_x_1 of { happy_var_1 -> 
-	happyIn93
-		 (happy_var_1
-	)}
-
-happyReduce_223 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_223 = happySpecReduce_1  79# happyReduction_223
-happyReduction_223 happy_x_1
-	 =  case happyOut94 happy_x_1 of { happy_var_1 -> 
-	happyIn93
-		 ([happy_var_1]
-	)}
-
-happyReduce_224 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_224 = happySpecReduce_0  79# happyReduction_224
-happyReduction_224  =  happyIn93
-		 ([]
-	)
-
-happyReduce_225 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_225 = happyMonadReduce 6# 80# happyReduction_225
-happyReduction_225 (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 { happy_var_1 -> 
-	case happyOut95 happy_x_2 of { happy_var_2 -> 
-	case happyOut96 happy_x_3 of { happy_var_3 -> 
-	case happyOut176 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 Equals) -> 
-	case happyOut174 happy_x_6 of { happy_var_6 -> 
-	( do { let {Loc l (StringTok (s,_)) = happy_var_1};
-                                                                  e <- checkRuleExpr happy_var_4;
-                                                                  return $ Rule (nIS l <++> ann happy_var_6 <** l:snd happy_var_3 ++ [happy_var_5]) s happy_var_2 (fst happy_var_3) e happy_var_6 })}}}}}})
-	) (\r -> happyReturn (happyIn94 r))
-
-happyReduce_226 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_226 = happySpecReduce_0  81# happyReduction_226
-happyReduction_226  =  happyIn95
-		 (Nothing
-	)
-
-happyReduce_227 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_227 = happySpecReduce_3  81# happyReduction_227
-happyReduction_227 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> 
-	happyIn95
-		 (let Loc l (IntTok (i,_)) = happy_var_2 in Just $ ActiveFrom  (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3])    (fromInteger i)
-	)}}}
-
-happyReduce_228 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_228 = happyReduce 4# 81# happyReduction_228
-happyReduction_228 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightSquare) -> 
-	happyIn95
-		 (let Loc l (IntTok (i,_)) = happy_var_3 in Just $ ActiveUntil (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,l,happy_var_4]) (fromInteger i)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_229 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_229 = happySpecReduce_0  82# happyReduction_229
-happyReduction_229  =  happyIn96
-		 ((Nothing,[])
-	)
-
-happyReduce_230 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_230 = happySpecReduce_3  82# happyReduction_230
-happyReduction_230 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	case happyOut97 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> 
-	happyIn96
-		 ((Just happy_var_2,[happy_var_1,happy_var_3])
-	)}}}
-
-happyReduce_231 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_231 = happySpecReduce_1  83# happyReduction_231
-happyReduction_231 happy_x_1
-	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
-	happyIn97
-		 ([happy_var_1]
-	)}
-
-happyReduce_232 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_232 = happySpecReduce_2  83# happyReduction_232
-happyReduction_232 happy_x_2
-	happy_x_1
-	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
-	case happyOut97 happy_x_2 of { happy_var_2 -> 
-	happyIn97
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_233 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_233 = happySpecReduce_1  84# happyReduction_233
-happyReduction_233 happy_x_1
-	 =  case happyOut260 happy_x_1 of { happy_var_1 -> 
-	happyIn98
-		 (RuleVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_234 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_234 = happyReduce 5# 84# happyReduction_234
-happyReduction_234 (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 { (Loc happy_var_1 LeftParen) -> 
-	case happyOut260 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut119 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn98
-		 (TypedRuleVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_235 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_235 = happySpecReduce_3  85# happyReduction_235
-happyReduction_235 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> 
-	case happyOut100 happy_x_3 of { happy_var_3 -> 
-	happyIn99
-		 ((fst happy_var_3 : fst happy_var_1, snd happy_var_1 ++ (happy_var_2:snd happy_var_3))
-	)}}}
-
-happyReduce_236 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_236 = happySpecReduce_2  85# happyReduction_236
-happyReduction_236 happy_x_2
-	happy_x_1
-	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> 
-	happyIn99
-		 ((fst happy_var_1, snd happy_var_1 ++ [happy_var_2])
-	)}}
-
-happyReduce_237 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_237 = happySpecReduce_1  85# happyReduction_237
-happyReduction_237 happy_x_1
-	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
-	happyIn99
-		 (([fst happy_var_1],snd happy_var_1)
-	)}
-
-happyReduce_238 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_238 = happySpecReduce_0  85# happyReduction_238
-happyReduction_238  =  happyIn99
-		 (([],[])
-	)
-
-happyReduce_239 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_239 = happySpecReduce_2  86# happyReduction_239
-happyReduction_239 happy_x_2
-	happy_x_1
-	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	happyIn100
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in ((fst happy_var_1,s),snd happy_var_1 ++ [l])
-	)}}
-
-happyReduce_240 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_240 = happySpecReduce_1  87# happyReduction_240
-happyReduction_240 happy_x_1
-	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
-	happyIn101
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_241 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_241 = happySpecReduce_3  87# happyReduction_241
-happyReduction_241 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut101 happy_x_3 of { happy_var_3 -> 
-	happyIn101
-		 ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3)
-	)}}}
-
-happyReduce_242 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_242 = happySpecReduce_1  88# happyReduction_242
-happyReduction_242 happy_x_1
-	 =  case happyOut245 happy_x_1 of { happy_var_1 -> 
-	happyIn102
-		 (happy_var_1
-	)}
-
-happyReduce_243 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_243 = happySpecReduce_1  88# happyReduction_243
-happyReduction_243 happy_x_1
-	 =  case happyOut241 happy_x_1 of { happy_var_1 -> 
-	happyIn102
-		 (happy_var_1
-	)}
-
-happyReduce_244 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_244 = happyMonadReduce 3# 89# happyReduction_244
-happyReduction_244 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOut263 happy_x_2 of { happy_var_2 -> 
-	case happyOut187 happy_x_3 of { happy_var_3 -> 
-	( checkExpr happy_var_3 >>= \e -> return (TypeAnn   (nIS happy_var_1 <++> ann e <** [happy_var_1]) happy_var_2 e))}}})
-	) (\r -> happyReturn (happyIn103 r))
-
-happyReduce_245 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_245 = happyMonadReduce 2# 89# happyReduction_245
-happyReduction_245 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> 
-	case happyOut187 happy_x_2 of { happy_var_2 -> 
-	( checkExpr happy_var_2 >>= \e -> return (ModuleAnn (nIS happy_var_1 <++> ann e <** [happy_var_1])    e))}})
-	) (\r -> happyReturn (happyIn103 r))
-
-happyReduce_246 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_246 = happyMonadReduce 2# 89# happyReduction_246
-happyReduction_246 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut102 happy_x_1 of { happy_var_1 -> 
-	case happyOut187 happy_x_2 of { happy_var_2 -> 
-	( checkExpr happy_var_2 >>= \e -> return (Ann (happy_var_1 <> e) happy_var_1 e))}})
-	) (\r -> happyReturn (happyIn103 r))
-
-happyReduce_247 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_247 = happyMonadReduce 1# 90# happyReduction_247
-happyReduction_247 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut105 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1)})
-	) (\r -> happyReturn (happyIn104 r))
-
-happyReduce_248 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_248 = happySpecReduce_1  91# happyReduction_248
-happyReduction_248 happy_x_1
-	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
-	happyIn105
-		 (splitTilde happy_var_1
-	)}
-
-happyReduce_249 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_249 = happySpecReduce_3  91# happyReduction_249
-happyReduction_249 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
-	case happyOut118 happy_x_2 of { happy_var_2 -> 
-	case happyOut105 happy_x_3 of { happy_var_3 -> 
-	happyIn105
-		 (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_250 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_250 = happySpecReduce_3  91# happyReduction_250
-happyReduction_250 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
-	case happyOut288 happy_x_2 of { happy_var_2 -> 
-	case happyOut105 happy_x_3 of { happy_var_3 -> 
-	happyIn105
-		 (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 (UnpromotedName (ann happy_var_2) happy_var_2) happy_var_3
-	)}}}
-
-happyReduce_251 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_251 = happySpecReduce_3  91# happyReduction_251
-happyReduction_251 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOut120 happy_x_3 of { happy_var_3 -> 
-	happyIn105
-		 (TyFun (happy_var_1 <> happy_var_3 <** [happy_var_2]) (splitTilde happy_var_1) happy_var_3
-	)}}}
-
-happyReduce_252 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_252 = happyMonadReduce 1# 92# happyReduction_252
-happyReduction_252 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut107 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1)})
-	) (\r -> happyReturn (happyIn106 r))
-
-happyReduce_253 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_253 = happySpecReduce_3  93# happyReduction_253
-happyReduction_253 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut244 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut105 happy_x_3 of { happy_var_3 -> 
-	happyIn107
-		 (let l = (happy_var_1 <> happy_var_3 <** [happy_var_2]) in TyPred l $ IParam l happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_254 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_254 = happySpecReduce_1  93# happyReduction_254
-happyReduction_254 happy_x_1
-	 =  case happyOut105 happy_x_1 of { happy_var_1 -> 
-	happyIn107
-		 (happy_var_1
-	)}
-
-happyReduce_255 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_255 = happyMonadReduce 1# 94# happyReduction_255
-happyReduction_255 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut110 happy_x_1 of { happy_var_1 -> 
-	( checkType (splitTilde happy_var_1))})
-	) (\r -> happyReturn (happyIn108 r))
-
-happyReduce_256 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_256 = happyMonadReduce 1# 95# happyReduction_256
-happyReduction_256 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut111 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1)})
-	) (\r -> happyReturn (happyIn109 r))
-
-happyReduce_257 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_257 = happySpecReduce_2  96# happyReduction_257
-happyReduction_257 happy_x_2
-	happy_x_1
-	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
-	case happyOut111 happy_x_2 of { happy_var_2 -> 
-	happyIn110
-		 (TyApp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2
-	)}}
-
-happyReduce_258 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_258 = happySpecReduce_1  96# happyReduction_258
-happyReduction_258 happy_x_1
-	 =  case happyOut111 happy_x_1 of { happy_var_1 -> 
-	happyIn110
-		 (happy_var_1
-	)}
-
-happyReduce_259 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_259 = happySpecReduce_1  97# happyReduction_259
-happyReduction_259 happy_x_1
-	 =  case happyOut116 happy_x_1 of { happy_var_1 -> 
-	happyIn111
-		 (TyCon   (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_260 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_260 = happyMonadReduce 1# 97# happyReduction_260
-happyReduction_260 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut286 happy_x_1 of { happy_var_1 -> 
-	( checkTyVar happy_var_1)})
-	) (\r -> happyReturn (happyIn111 r))
-
-happyReduce_261 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_261 = happySpecReduce_2  97# happyReduction_261
-happyReduction_261 happy_x_2
-	happy_x_1
-	 =  case happyOut113 happy_x_1 of { happy_var_1 -> 
-	case happyOut111 happy_x_2 of { happy_var_2 -> 
-	happyIn111
-		 (let (mstrict, mupack) = happy_var_1
-                                        in bangType mstrict mupack happy_var_2
-	)}}
-
-happyReduce_262 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_262 = happySpecReduce_3  97# happyReduction_262
-happyReduction_262 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut122 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn111
-		 (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Boxed   (reverse (fst happy_var_2))
-	)}}}
-
-happyReduce_263 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_263 = happySpecReduce_3  97# happyReduction_263
-happyReduction_263 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOut124 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> 
-	happyIn111
-		 (TyUnboxedSum (happy_var_1 <^^> happy_var_3 <** (happy_var_1: reverse (happy_var_3: snd happy_var_2))) (reverse (fst happy_var_2))
-	)}}}
-
-happyReduce_264 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_264 = happySpecReduce_3  97# happyReduction_264
-happyReduction_264 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOut123 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> 
-	happyIn111
-		 (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Unboxed (reverse (fst happy_var_2))
-	)}}}
-
-happyReduce_265 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_265 = happySpecReduce_3  97# happyReduction_265
-happyReduction_265 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOut107 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> 
-	happyIn111
-		 (TyList  (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_266 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_266 = happySpecReduce_3  97# happyReduction_266
-happyReduction_266 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 ParArrayLeftSquare) -> 
-	case happyOut107 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 ParArrayRightSquare) -> 
-	happyIn111
-		 (TyParArray  (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_267 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_267 = happySpecReduce_3  97# happyReduction_267
-happyReduction_267 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut120 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn111
-		 (TyParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_268 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_268 = happyReduce 5# 97# happyReduction_268
-happyReduction_268 (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 { (Loc happy_var_1 LeftParen) -> 
-	case happyOut120 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut149 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn111
-		 (TyKind  (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_269 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_269 = happySpecReduce_3  97# happyReduction_269
-happyReduction_269 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THParenEscape) -> 
-	case happyOut174 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn111
-		 (let l = (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) in TySplice l $ ParenSplice l happy_var_2
-	)}}}
-
-happyReduce_270 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_270 = happySpecReduce_1  97# happyReduction_270
-happyReduction_270 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn111
-		 (let Loc l (THIdEscape s) = happy_var_1 in TySplice (nIS l) $ IdSplice (nIS l) s
-	)}
-
-happyReduce_271 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_271 = happySpecReduce_1  97# happyReduction_271
-happyReduction_271 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Underscore) -> 
-	happyIn111
-		 (TyWildCard (nIS happy_var_1) Nothing
-	)}
-
-happyReduce_272 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_272 = happySpecReduce_1  97# happyReduction_272
-happyReduction_272 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn111
-		 (let Loc l (THQuasiQuote (n,q)) = happy_var_1 in TyQuasiQuote (nIS l) n q
-	)}
-
-happyReduce_273 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_273 = happyMonadReduce 1# 97# happyReduction_273
-happyReduction_273 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut112 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled DataKinds >> return (TyPromoted (ann happy_var_1) happy_var_1))})
-	) (\r -> happyReturn (happyIn111 r))
-
-happyReduce_274 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_274 = happyMonadReduce 2# 98# happyReduction_274
-happyReduction_274 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> 
-	case happyOut238 happy_x_2 of { happy_var_2 -> 
-	( fmap (PromotedCon (nIS happy_var_1 <++> ann happy_var_2  <** [happy_var_1]) True) (pexprToQName happy_var_2))}})
-	) (\r -> happyReturn (happyIn112 r))
-
-happyReduce_275 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_275 = happyMonadReduce 4# 98# happyReduction_275
-happyReduction_275 (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 { (Loc happy_var_1 THVarQuote) -> 
-	case happyOut123 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightSquare) -> 
-	( PromotedList  (happy_var_1 <^^> happy_var_4 <** (happy_var_1:reverse(happy_var_4:snd happy_var_3))) True . reverse <$> mapM checkType (fst happy_var_3))}}})
-	) (\r -> happyReturn (happyIn112 r))
-
-happyReduce_276 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_276 = happyMonadReduce 3# 98# happyReduction_276
-happyReduction_276 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOut122 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> 
-	( PromotedList  (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse(happy_var_3:snd happy_var_2))) False . reverse <$> mapM checkType (fst happy_var_2))}}})
-	) (\r -> happyReturn (happyIn112 r))
-
-happyReduce_277 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_277 = happySpecReduce_3  98# happyReduction_277
-happyReduction_277 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> 
-	happyIn112
-		 (PromotedList  (happy_var_1 <^^> happy_var_3 <** [happy_var_1, happy_var_3]) True []
-	)}}
-
-happyReduce_278 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_278 = happyMonadReduce 4# 98# happyReduction_278
-happyReduction_278 (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 { (Loc happy_var_1 THVarQuote) -> 
-	case happyOut123 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	( PromotedTuple (happy_var_1 <^^> happy_var_4 <** (happy_var_1:reverse(happy_var_4:snd happy_var_3))) . reverse <$> mapM checkType (fst happy_var_3))}}})
-	) (\r -> happyReturn (happyIn112 r))
-
-happyReduce_279 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_279 = happySpecReduce_1  98# happyReduction_279
-happyReduction_279 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn112
-		 (let Loc l (IntTok  (i,raw)) = happy_var_1 in PromotedInteger (nIS l) i raw
-	)}
-
-happyReduce_280 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_280 = happySpecReduce_1  98# happyReduction_280
-happyReduction_280 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn112
-		 (let Loc l (StringTok (s,raw)) = happy_var_1 in PromotedString (nIS l) s raw
-	)}
-
-happyReduce_281 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_281 = happySpecReduce_1  99# happyReduction_281
-happyReduction_281 happy_x_1
-	 =  case happyOut114 happy_x_1 of { happy_var_1 -> 
-	happyIn113
-		 ((Just happy_var_1, Nothing)
-	)}
-
-happyReduce_282 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_282 = happySpecReduce_1  99# happyReduction_282
-happyReduction_282 happy_x_1
-	 =  case happyOut115 happy_x_1 of { happy_var_1 -> 
-	happyIn113
-		 ((Nothing, Just happy_var_1)
-	)}
-
-happyReduce_283 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_283 = happySpecReduce_2  99# happyReduction_283
-happyReduction_283 happy_x_2
-	happy_x_1
-	 =  case happyOut115 happy_x_1 of { happy_var_1 -> 
-	case happyOut114 happy_x_2 of { happy_var_2 -> 
-	happyIn113
-		 ((Just happy_var_2, Just happy_var_1)
-	)}}
-
-happyReduce_284 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_284 = happySpecReduce_1  100# happyReduction_284
-happyReduction_284 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	happyIn114
-		 ((BangedTy, happy_var_1)
-	)}
-
-happyReduce_285 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_285 = happySpecReduce_1  100# happyReduction_285
-happyReduction_285 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Tilde) -> 
-	happyIn114
-		 ((LazyTy, happy_var_1)
-	)}
-
-happyReduce_286 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_286 = happySpecReduce_2  101# happyReduction_286
-happyReduction_286 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> 
-	happyIn115
-		 ((Unpack ((nIS happy_var_1 <++> nIS happy_var_2) <** [happy_var_1,happy_var_2]))
-	)}}
-
-happyReduce_287 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_287 = happySpecReduce_2  101# happyReduction_287
-happyReduction_287 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 NOUNPACK) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> 
-	happyIn115
-		 ((NoUnpack ((nIS happy_var_1 <++> nIS happy_var_2) <** [happy_var_1,happy_var_2]))
-	)}}
-
-happyReduce_288 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_288 = happySpecReduce_1  102# happyReduction_288
-happyReduction_288 happy_x_1
-	 =  case happyOut117 happy_x_1 of { happy_var_1 -> 
-	happyIn116
-		 (happy_var_1
-	)}
-
-happyReduce_289 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_289 = happySpecReduce_2  102# happyReduction_289
-happyReduction_289 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> 
-	happyIn116
-		 (unit_tycon_name              (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_290 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_290 = happySpecReduce_3  102# happyReduction_290
-happyReduction_290 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn116
-		 (fun_tycon_name               (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3])
-	)}}}
-
-happyReduce_291 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_291 = happySpecReduce_2  102# happyReduction_291
-happyReduction_291 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> 
-	happyIn116
-		 (list_tycon_name              (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_292 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_292 = happySpecReduce_3  102# happyReduction_292
-happyReduction_292 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut193 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn116
-		 (tuple_tycon_name             (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Boxed (length happy_var_2)
-	)}}}
-
-happyReduce_293 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_293 = happySpecReduce_2  102# happyReduction_293
-happyReduction_293 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> 
-	happyIn116
-		 (unboxed_singleton_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_294 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_294 = happySpecReduce_3  102# happyReduction_294
-happyReduction_294 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOut193 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> 
-	happyIn116
-		 (tuple_tycon_name             (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Unboxed (length happy_var_2)
-	)}}}
-
-happyReduce_295 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_295 = happySpecReduce_1  103# happyReduction_295
-happyReduction_295 happy_x_1
-	 =  case happyOut262 happy_x_1 of { happy_var_1 -> 
-	happyIn117
-		 (happy_var_1
-	)}
-
-happyReduce_296 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_296 = happySpecReduce_3  103# happyReduction_296
-happyReduction_296 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut256 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn117
-		 (updateQNameLoc (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_297 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_297 = happySpecReduce_3  103# happyReduction_297
-happyReduction_297 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut266 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn117
-		 (updateQNameLoc (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_298 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_298 = happySpecReduce_1  104# happyReduction_298
-happyReduction_298 happy_x_1
-	 =  case happyOut252 happy_x_1 of { happy_var_1 -> 
-	happyIn118
-		 (UnpromotedName (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_299 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_299 = happySpecReduce_2  104# happyReduction_299
-happyReduction_299 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> 
-	case happyOut256 happy_x_2 of { happy_var_2 -> 
-	happyIn118
-		 (PromotedName (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_300 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_300 = happyMonadReduce 1# 105# happyReduction_300
-happyReduction_300 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut120 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1)})
-	) (\r -> happyReturn (happyIn119 r))
-
-happyReduce_301 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_301 = happyReduce 4# 106# happyReduction_301
-happyReduction_301 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	case happyOut125 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> 
-	case happyOut120 happy_x_4 of { happy_var_4 -> 
-	happyIn120
-		 (mkTyForall (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (Just (reverse (fst happy_var_2))) Nothing happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_302 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_302 = happySpecReduce_2  106# happyReduction_302
-happyReduction_302 happy_x_2
-	happy_x_1
-	 =  case happyOut121 happy_x_1 of { happy_var_1 -> 
-	case happyOut120 happy_x_2 of { happy_var_2 -> 
-	happyIn120
-		 (mkTyForall (happy_var_1 <> happy_var_2) Nothing (Just happy_var_1) happy_var_2
-	)}}
-
-happyReduce_303 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_303 = happySpecReduce_1  106# happyReduction_303
-happyReduction_303 happy_x_1
-	 =  case happyOut107 happy_x_1 of { happy_var_1 -> 
-	happyIn120
-		 (happy_var_1
-	)}
-
-happyReduce_304 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_304 = happyMonadReduce 2# 107# happyReduction_304
-happyReduction_304 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut110 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleArrow) -> 
-	( checkPContext $ (amap (\l -> l <++> nIS happy_var_2 <** (srcInfoPoints l ++ [happy_var_2]))) (splitTilde happy_var_1))}})
-	) (\r -> happyReturn (happyIn121 r))
-
-happyReduce_305 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_305 = happySpecReduce_3  108# happyReduction_305
-happyReduction_305 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut123 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut120 happy_x_3 of { happy_var_3 -> 
-	happyIn122
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_306 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_306 = happySpecReduce_1  109# happyReduction_306
-happyReduction_306 happy_x_1
-	 =  case happyOut120 happy_x_1 of { happy_var_1 -> 
-	happyIn123
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_307 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_307 = happySpecReduce_3  109# happyReduction_307
-happyReduction_307 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut123 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut120 happy_x_3 of { happy_var_3 -> 
-	happyIn123
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_308 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_308 = happySpecReduce_3  110# happyReduction_308
-happyReduction_308 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut120 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut120 happy_x_3 of { happy_var_3 -> 
-	happyIn124
-		 (([happy_var_3, happy_var_1], [happy_var_2])
-	)}}}
-
-happyReduce_309 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_309 = happySpecReduce_3  110# happyReduction_309
-happyReduction_309 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut124 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut120 happy_x_3 of { happy_var_3 -> 
-	happyIn124
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_310 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_310 = happySpecReduce_2  111# happyReduction_310
-happyReduction_310 happy_x_2
-	happy_x_1
-	 =  case happyOut125 happy_x_1 of { happy_var_1 -> 
-	case happyOut126 happy_x_2 of { happy_var_2 -> 
-	happyIn125
-		 ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2))
-	)}}
-
-happyReduce_311 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_311 = happySpecReduce_0  111# happyReduction_311
-happyReduction_311  =  happyIn125
-		 (([],Nothing)
-	)
-
-happyReduce_312 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_312 = happySpecReduce_1  112# happyReduction_312
-happyReduction_312 happy_x_1
-	 =  case happyOut286 happy_x_1 of { happy_var_1 -> 
-	happyIn126
-		 (UnkindedVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_313 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_313 = happyReduce 5# 112# happyReduction_313
-happyReduction_313 (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 { (Loc happy_var_1 LeftParen) -> 
-	case happyOut286 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut149 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn126
-		 (KindedVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_314 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_314 = happySpecReduce_2  113# happyReduction_314
-happyReduction_314 happy_x_2
-	happy_x_1
-	 =  case happyOut127 happy_x_1 of { happy_var_1 -> 
-	case happyOut286 happy_x_2 of { happy_var_2 -> 
-	happyIn127
-		 ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2))
-	)}}
-
-happyReduce_315 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_315 = happySpecReduce_0  113# happyReduction_315
-happyReduction_315  =  happyIn127
-		 (([], Nothing)
-	)
-
-happyReduce_316 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_316 = happySpecReduce_2  114# happyReduction_316
-happyReduction_316 happy_x_2
-	happy_x_1
-	 =  case happyOut127 happy_x_1 of { happy_var_1 -> 
-	case happyOut286 happy_x_2 of { happy_var_2 -> 
-	happyIn128
-		 ((happy_var_2 : fst happy_var_1, snd happy_var_1 <?+> ann happy_var_2)
-	)}}
-
-happyReduce_317 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_317 = happySpecReduce_0  115# happyReduction_317
-happyReduction_317  =  happyIn129
-		 (([],[], Nothing)
-	)
-
-happyReduce_318 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_318 = happyMonadReduce 2# 115# happyReduction_318
-happyReduction_318 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> 
-	case happyOut130 happy_x_2 of { happy_var_2 -> 
-	( do { checkEnabled FunctionalDependencies ;
-                                              let {(fds,ss,l) = happy_var_2} ;
-                                              return (reverse fds, happy_var_1 : reverse ss, Just (nIS happy_var_1 <++> l)) })}})
-	) (\r -> happyReturn (happyIn129 r))
-
-happyReduce_319 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_319 = happySpecReduce_3  116# happyReduction_319
-happyReduction_319 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut130 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut131 happy_x_3 of { happy_var_3 -> 
-	happyIn130
-		 (let (fds,ss,l) = happy_var_1 in (happy_var_3 : fds, happy_var_2 : ss, l <++> ann happy_var_3)
-	)}}}
-
-happyReduce_320 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_320 = happySpecReduce_1  116# happyReduction_320
-happyReduction_320 happy_x_1
-	 =  case happyOut131 happy_x_1 of { happy_var_1 -> 
-	happyIn130
-		 (([happy_var_1],[],ann happy_var_1)
-	)}
-
-happyReduce_321 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_321 = happySpecReduce_3  117# happyReduction_321
-happyReduction_321 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut127 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOut128 happy_x_3 of { happy_var_3 -> 
-	happyIn131
-		 (FunDep (snd happy_var_1 <?+> nIS happy_var_2 <++> snd happy_var_3 <** [happy_var_2]) (reverse (fst happy_var_1)) (reverse (fst happy_var_3))
-	)}}}
-
-happyReduce_322 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_322 = happyMonadReduce 4# 118# happyReduction_322
-happyReduction_322 (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 { (Loc happy_var_1 KW_Where) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut133 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}})
-	) (\r -> happyReturn (happyIn132 r))
-
-happyReduce_323 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_323 = happyMonadReduce 4# 118# happyReduction_323
-happyReduction_323 (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 { (Loc happy_var_1 KW_Where) -> 
-	case happyOut272 happy_x_2 of { happy_var_2 -> 
-	case happyOut133 happy_x_3 of { happy_var_3 -> 
-	case happyOut273 happy_x_4 of { happy_var_4 -> 
-	( return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}})
-	) (\r -> happyReturn (happyIn132 r))
-
-happyReduce_324 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_324 = happyMonadReduce 0# 118# happyReduction_324
-happyReduction_324 (happyRest) tk
-	 = happyThen ((( checkEnabled EmptyDataDecls >> return ([],[],Nothing)))
-	) (\r -> happyReturn (happyIn132 r))
-
-happyReduce_325 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_325 = happySpecReduce_3  119# happyReduction_325
-happyReduction_325 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	case happyOut134 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn133
-		 ((fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3)
-	)}}}
-
-happyReduce_326 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_326 = happySpecReduce_3  120# happyReduction_326
-happyReduction_326 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut134 happy_x_1 of { happy_var_1 -> 
-	case happyOut27 happy_x_2 of { happy_var_2 -> 
-	case happyOut135 happy_x_3 of { happy_var_3 -> 
-	happyIn134
-		 ((happy_var_3 ++ fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_327 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_327 = happySpecReduce_1  120# happyReduction_327
-happyReduction_327 happy_x_1
-	 =  case happyOut135 happy_x_1 of { happy_var_1 -> 
-	happyIn134
-		 ((happy_var_1,[])
-	)}
-
-happyReduce_328 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_328 = happyMonadReduce 3# 121# happyReduction_328
-happyReduction_328 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut247 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut119 happy_x_3 of { happy_var_3 -> 
-	( do { c <- checkUnQual happy_var_1;
-                                               return [GadtDecl (happy_var_1 <> happy_var_3 <** [happy_var_2]) c Nothing happy_var_3] })}}})
-	) (\r -> happyReturn (happyIn135 r))
-
-happyReduce_329 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_329 = happyMonadReduce 7# 121# happyReduction_329
-happyReduction_329 (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 happyOut247 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 LeftCurly) -> 
-	case happyOut142 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightCurly) -> 
-	case happyOutTok happy_x_6 of { (Loc happy_var_6 RightArrow) -> 
-	case happyOut119 happy_x_7 of { happy_var_7 -> 
-	( do { c <- checkUnQual happy_var_1;
-                                              return [GadtDecl (happy_var_1 <> happy_var_7 <** [happy_var_2,happy_var_3,happy_var_5,happy_var_6] ++ snd happy_var_4) c (Just (reverse $ fst happy_var_4)) happy_var_7] })}}}}}}})
-	) (\r -> happyReturn (happyIn135 r))
-
-happyReduce_330 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_330 = happySpecReduce_2  122# happyReduction_330
-happyReduction_330 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> 
-	case happyOut137 happy_x_2 of { happy_var_2 -> 
-	happyIn136
-		 (let (ds,ss,l) = happy_var_2 in (ds, happy_var_1 : reverse ss, Just $ nIS happy_var_1 <++> l)
-	)}}
-
-happyReduce_331 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_331 = happySpecReduce_3  123# happyReduction_331
-happyReduction_331 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut137 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut138 happy_x_3 of { happy_var_3 -> 
-	happyIn137
-		 (let (ds,ss,l) = happy_var_1 in (happy_var_3 : ds, happy_var_2 : ss, l <++> ann happy_var_3)
-	)}}}
-
-happyReduce_332 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_332 = happySpecReduce_1  123# happyReduction_332
-happyReduction_332 happy_x_1
-	 =  case happyOut138 happy_x_1 of { happy_var_1 -> 
-	happyIn137
-		 (([happy_var_1],[],ann happy_var_1)
-	)}
-
-happyReduce_333 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_333 = happyMonadReduce 3# 124# happyReduction_333
-happyReduction_333 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut139 happy_x_1 of { happy_var_1 -> 
-	case happyOut121 happy_x_2 of { happy_var_2 -> 
-	case happyOut140 happy_x_3 of { happy_var_3 -> 
-	( do { checkEnabled ExistentialQuantification ;
-                                               ctxt <- checkContext (Just happy_var_2) ;
-                                               let {(mtvs,ss,ml) = happy_var_1} ;
-                                               return $ QualConDecl (ml <?+> ann happy_var_3 <** ss) mtvs ctxt happy_var_3 })}}})
-	) (\r -> happyReturn (happyIn138 r))
-
-happyReduce_334 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_334 = happySpecReduce_2  124# happyReduction_334
-happyReduction_334 happy_x_2
-	happy_x_1
-	 =  case happyOut139 happy_x_1 of { happy_var_1 -> 
-	case happyOut140 happy_x_2 of { happy_var_2 -> 
-	happyIn138
-		 (let (mtvs, ss, ml) = happy_var_1 in QualConDecl (ml <?+> ann happy_var_2 <** ss) mtvs Nothing happy_var_2
-	)}}
-
-happyReduce_335 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_335 = happyMonadReduce 3# 125# happyReduction_335
-happyReduction_335 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	case happyOut125 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> 
-	( checkEnabled ExistentialQuantification >> return (Just (fst happy_var_2), [happy_var_1,happy_var_3], Just $ happy_var_1 <^^> happy_var_3))}}})
-	) (\r -> happyReturn (happyIn139 r))
-
-happyReduce_336 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_336 = happySpecReduce_0  125# happyReduction_336
-happyReduction_336  =  happyIn139
-		 ((Nothing, [], Nothing)
-	)
-
-happyReduce_337 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_337 = happySpecReduce_1  126# happyReduction_337
-happyReduction_337 happy_x_1
-	 =  case happyOut141 happy_x_1 of { happy_var_1 -> 
-	happyIn140
-		 (let (n,ts,l) = happy_var_1 in ConDecl l n ts
-	)}
-
-happyReduce_338 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_338 = happySpecReduce_3  126# happyReduction_338
-happyReduction_338 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut108 happy_x_1 of { happy_var_1 -> 
-	case happyOut251 happy_x_2 of { happy_var_2 -> 
-	case happyOut108 happy_x_3 of { happy_var_3 -> 
-	happyIn140
-		 (InfixConDecl (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_339 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_339 = happyMonadReduce 3# 126# happyReduction_339
-happyReduction_339 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut247 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	( do { c <- checkUnQual happy_var_1; return $ RecDecl (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) c [] })}}})
-	) (\r -> happyReturn (happyIn140 r))
-
-happyReduce_340 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_340 = happyMonadReduce 4# 126# happyReduction_340
-happyReduction_340 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut247 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut142 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( do { c <- checkUnQual happy_var_1;
-                                              return $ RecDecl (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) c (reverse (fst happy_var_3)) })}}}})
-	) (\r -> happyReturn (happyIn140 r))
-
-happyReduce_341 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_341 = happyMonadReduce 1# 127# happyReduction_341
-happyReduction_341 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut110 happy_x_1 of { happy_var_1 -> 
-	( do { (c,ts) <- splitTyConApp happy_var_1;
-                                              return (c, ts, ann happy_var_1) })})
-	) (\r -> happyReturn (happyIn141 r))
-
-happyReduce_342 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_342 = happySpecReduce_3  128# happyReduction_342
-happyReduction_342 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut142 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut143 happy_x_3 of { happy_var_3 -> 
-	happyIn142
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_343 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_343 = happySpecReduce_1  128# happyReduction_343
-happyReduction_343 happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	happyIn142
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_344 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_344 = happySpecReduce_3  129# happyReduction_344
-happyReduction_344 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut89 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut119 happy_x_3 of { happy_var_3 -> 
-	happyIn143
-		 (let (ns,ss,l) = happy_var_1 in FieldDecl (l <++> ann happy_var_3 <** (reverse ss ++ [happy_var_2])) (reverse ns) happy_var_3
-	)}}}
-
-happyReduce_345 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_345 = happySpecReduce_0  130# happyReduction_345
-happyReduction_345  =  happyIn144
-		 ([]
-	)
-
-happyReduce_346 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_346 = happySpecReduce_1  130# happyReduction_346
-happyReduction_346 happy_x_1
-	 =  case happyOut145 happy_x_1 of { happy_var_1 -> 
-	happyIn144
-		 (happy_var_1
-	)}
-
-happyReduce_347 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_347 = happySpecReduce_2  131# happyReduction_347
-happyReduction_347 happy_x_2
-	happy_x_1
-	 =  case happyOut145 happy_x_1 of { happy_var_1 -> 
-	case happyOut146 happy_x_2 of { happy_var_2 -> 
-	happyIn145
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_348 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_348 = happySpecReduce_1  131# happyReduction_348
-happyReduction_348 happy_x_1
-	 =  case happyOut146 happy_x_1 of { happy_var_1 -> 
-	happyIn145
-		 ([happy_var_1]
-	)}
-
-happyReduce_349 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_349 = happySpecReduce_3  132# happyReduction_349
-happyReduction_349 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> 
-	case happyOut282 happy_x_2 of { happy_var_2 -> 
-	case happyOut148 happy_x_3 of { happy_var_3 -> 
-	happyIn146
-		 (let l = nIS happy_var_1 <++> ann happy_var_3 <** [happy_var_1] in Deriving l happy_var_2 [IRule (ann happy_var_3) Nothing Nothing happy_var_3]
-	)}}}
-
-happyReduce_350 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_350 = happyReduce 4# 132# happyReduction_350
-happyReduction_350 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> 
-	case happyOut282 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 LeftParen) -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> 
-	happyIn146
-		 (Deriving (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_3,happy_var_4]) happy_var_2 []
-	) `HappyStk` happyRest}}}}
-
-happyReduce_351 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_351 = happyReduce 5# 132# happyReduction_351
-happyReduction_351 (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 { (Loc happy_var_1 KW_Deriving) -> 
-	case happyOut282 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 LeftParen) -> 
-	case happyOut147 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn146
-		 (-- Distinguish deriving (Show) from deriving Show (#189)
-                                        case fst happy_var_4 of
-                                          [ts] -> Deriving (happy_var_1 <^^> happy_var_5 <** [happy_var_1]) happy_var_2 [IParen (happy_var_3 <^^> happy_var_5 <** [happy_var_3,happy_var_5]) ts]
-                                          tss  -> Deriving (happy_var_1 <^^> happy_var_5 <** happy_var_1:happy_var_3: reverse (snd happy_var_4) ++ [happy_var_5]) happy_var_2 (reverse tss)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_352 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_352 = happyMonadReduce 1# 133# happyReduction_352
-happyReduction_352 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut123 happy_x_1 of { happy_var_1 -> 
-	( checkDeriving (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1))})
-	) (\r -> happyReturn (happyIn147 r))
-
-happyReduce_353 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_353 = happySpecReduce_1  134# happyReduction_353
-happyReduction_353 happy_x_1
-	 =  case happyOut262 happy_x_1 of { happy_var_1 -> 
-	happyIn148
-		 (IHCon (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_354 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_354 = happyMonadReduce 1# 135# happyReduction_354
-happyReduction_354 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut150 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled KindSignatures >> return happy_var_1)})
-	) (\r -> happyReturn (happyIn149 r))
-
-happyReduce_355 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_355 = happySpecReduce_1  136# happyReduction_355
-happyReduction_355 happy_x_1
-	 =  case happyOut151 happy_x_1 of { happy_var_1 -> 
-	happyIn150
-		 (happy_var_1
-	)}
-
-happyReduce_356 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_356 = happySpecReduce_3  136# happyReduction_356
-happyReduction_356 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut151 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOut150 happy_x_3 of { happy_var_3 -> 
-	happyIn150
-		 (KindFn (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_357 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_357 = happySpecReduce_1  137# happyReduction_357
-happyReduction_357 happy_x_1
-	 =  case happyOut152 happy_x_1 of { happy_var_1 -> 
-	happyIn151
-		 (happy_var_1
-	)}
-
-happyReduce_358 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_358 = happySpecReduce_2  137# happyReduction_358
-happyReduction_358 happy_x_2
-	happy_x_1
-	 =  case happyOut151 happy_x_1 of { happy_var_1 -> 
-	case happyOut152 happy_x_2 of { happy_var_2 -> 
-	happyIn151
-		 (KindApp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2
-	)}}
-
-happyReduce_359 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_359 = happySpecReduce_1  138# happyReduction_359
-happyReduction_359 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> 
-	happyIn152
-		 (KindStar  (nIS happy_var_1)
-	)}
-
-happyReduce_360 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_360 = happySpecReduce_3  138# happyReduction_360
-happyReduction_360 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut150 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn152
-		 (KindParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_361 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_361 = happyMonadReduce 1# 138# happyReduction_361
-happyReduction_361 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut153 happy_x_1 of { happy_var_1 -> 
-	( checkKind happy_var_1 >> return happy_var_1)})
-	) (\r -> happyReturn (happyIn152 r))
-
-happyReduce_362 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_362 = happyMonadReduce 1# 138# happyReduction_362
-happyReduction_362 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut258 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled PolyKinds >> return (KindVar (ann happy_var_1) happy_var_1))})
-	) (\r -> happyReturn (happyIn152 r))
-
-happyReduce_363 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_363 = happySpecReduce_1  139# happyReduction_363
-happyReduction_363 happy_x_1
-	 =  case happyOut285 happy_x_1 of { happy_var_1 -> 
-	happyIn153
-		 (KindVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_364 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_364 = happySpecReduce_2  139# happyReduction_364
-happyReduction_364 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> 
-	happyIn153
-		 (let l = happy_var_1 <^^> happy_var_2 in KindVar l (unit_tycon_name l)
-	)}}
-
-happyReduce_365 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_365 = happyReduce 5# 139# happyReduction_365
-happyReduction_365 (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 { (Loc happy_var_1 LeftParen) -> 
-	case happyOut149 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Comma) -> 
-	case happyOut154 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> 
-	happyIn153
-		 (KindTuple (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3:reverse (happy_var_5:snd happy_var_4))) (happy_var_2:reverse (fst happy_var_4))
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_366 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_366 = happySpecReduce_3  139# happyReduction_366
-happyReduction_366 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOut149 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> 
-	happyIn153
-		 (KindList  ((happy_var_1 <^^> happy_var_3) <** [happy_var_1, happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_367 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_367 = happySpecReduce_1  140# happyReduction_367
-happyReduction_367 happy_x_1
-	 =  case happyOut150 happy_x_1 of { happy_var_1 -> 
-	happyIn154
-		 (([happy_var_1], [])
-	)}
-
-happyReduce_368 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_368 = happySpecReduce_3  140# happyReduction_368
-happyReduction_368 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut150 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut154 happy_x_3 of { happy_var_3 -> 
-	happyIn154
-		 ((happy_var_1 : (fst happy_var_3), happy_var_2 : (snd happy_var_3))
-	)}}}
-
-happyReduce_369 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_369 = happySpecReduce_0  141# happyReduction_369
-happyReduction_369  =  happyIn155
-		 ((Nothing,[])
-	)
-
-happyReduce_370 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_370 = happySpecReduce_2  141# happyReduction_370
-happyReduction_370 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> 
-	case happyOut149 happy_x_2 of { happy_var_2 -> 
-	happyIn155
-		 ((Just happy_var_2,[happy_var_1])
-	)}}
-
-happyReduce_371 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_371 = happySpecReduce_0  142# happyReduction_371
-happyReduction_371  =  happyIn156
-		 (Nothing
-	)
-
-happyReduce_372 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_372 = happySpecReduce_2  142# happyReduction_372
-happyReduction_372 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> 
-	case happyOut116 happy_x_2 of { happy_var_2 -> 
-	happyIn156
-		 (Just (happy_var_1, happy_var_2)
-	)}}
-
-happyReduce_373 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_373 = happyMonadReduce 4# 143# happyReduction_373
-happyReduction_373 (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 { (Loc happy_var_1 KW_Where) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut158 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}})
-	) (\r -> happyReturn (happyIn157 r))
-
-happyReduce_374 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_374 = happyMonadReduce 4# 143# happyReduction_374
-happyReduction_374 (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 { (Loc happy_var_1 KW_Where) -> 
-	case happyOut272 happy_x_2 of { happy_var_2 -> 
-	case happyOut158 happy_x_3 of { happy_var_3 -> 
-	case happyOut273 happy_x_4 of { happy_var_4 -> 
-	( do { vs <- checkClassBody (fst happy_var_3);
-                                              let { l' = if null (fst happy_var_3) then nIS happy_var_4 else (ann . last $ fst happy_var_3) };
-                                              return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (nIS happy_var_1 <++> l')) })}}}})
-	) (\r -> happyReturn (happyIn157 r))
-
-happyReduce_375 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_375 = happySpecReduce_0  143# happyReduction_375
-happyReduction_375  =  happyIn157
-		 ((Nothing,[],Nothing)
-	)
-
-happyReduce_376 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_376 = happyMonadReduce 3# 144# happyReduction_376
-happyReduction_376 (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 happyOut159 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	( checkRevClsDecls (fst happy_var_2) >>= \cs -> return (cs, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}})
-	) (\r -> happyReturn (happyIn158 r))
-
-happyReduce_377 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_377 = happySpecReduce_1  144# happyReduction_377
-happyReduction_377 happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	happyIn158
-		 (([],reverse happy_var_1)
-	)}
-
-happyReduce_378 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_378 = happySpecReduce_3  145# happyReduction_378
-happyReduction_378 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut159 happy_x_1 of { happy_var_1 -> 
-	case happyOut27 happy_x_2 of { happy_var_2 -> 
-	case happyOut160 happy_x_3 of { happy_var_3 -> 
-	happyIn159
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_379 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_379 = happySpecReduce_1  145# happyReduction_379
-happyReduction_379 happy_x_1
-	 =  case happyOut160 happy_x_1 of { happy_var_1 -> 
-	happyIn159
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_380 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_380 = happySpecReduce_1  146# happyReduction_380
-happyReduction_380 happy_x_1
-	 =  case happyOut77 happy_x_1 of { happy_var_1 -> 
-	happyIn160
-		 (ClsDecl (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_381 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_381 = happyMonadReduce 1# 146# happyReduction_381
-happyReduction_381 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut162 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled TypeFamilies >> return happy_var_1)})
-	) (\r -> happyReturn (happyIn160 r))
-
-happyReduce_382 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_382 = happyMonadReduce 2# 146# happyReduction_382
-happyReduction_382 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> 
-	case happyOut79 happy_x_2 of { happy_var_2 -> 
-	( checkEnabled DefaultSignatures >> checkDefSigDef happy_var_2 >>= \(n,t,l) -> return (ClsDefSig (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1,l]) n t))}})
-	) (\r -> happyReturn (happyIn160 r))
-
-happyReduce_383 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_383 = happySpecReduce_0  147# happyReduction_383
-happyReduction_383  =  happyIn161
-		 ([]
-	)
-
-happyReduce_384 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_384 = happySpecReduce_1  147# happyReduction_384
-happyReduction_384 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Family) -> 
-	happyIn161
-		 ([happy_var_1]
-	)}
-
-happyReduce_385 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_385 = happyMonadReduce 4# 148# happyReduction_385
-happyReduction_385 (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 { (Loc happy_var_1 KW_Data) -> 
-	case happyOut107 happy_x_3 of { happy_var_3 -> 
-	case happyOut61 happy_x_4 of { happy_var_4 -> 
-	( do { (cs,dh) <- checkDataHeader happy_var_3;
-                    return (ClsDataFam (nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) happy_var_4 <** [happy_var_1]) cs dh happy_var_4) })}}})
-	) (\r -> happyReturn (happyIn162 r))
-
-happyReduce_386 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_386 = happyMonadReduce 3# 148# happyReduction_386
-happyReduction_386 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOut107 happy_x_2 of { happy_var_2 -> 
-	case happyOut64 happy_x_3 of { happy_var_3 -> 
-	( mkAssocType happy_var_1 happy_var_2 happy_var_3)}}})
-	) (\r -> happyReturn (happyIn162 r))
-
-happyReduce_387 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_387 = happyMonadReduce 4# 148# happyReduction_387
-happyReduction_387 (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 { (Loc happy_var_1 KW_Type) -> 
-	case happyOut107 happy_x_3 of { happy_var_3 -> 
-	case happyOut63 happy_x_4 of { happy_var_4 -> 
-	( do { dh <- checkSimpleType happy_var_3;
-                    return (ClsTyFam  (nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4)
-                                                          <+?> (fmap ann) (snd happy_var_4)
-                                                          <** [happy_var_1]) dh (fst happy_var_4) (snd happy_var_4)) })}}})
-	) (\r -> happyReturn (happyIn162 r))
-
-happyReduce_388 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_388 = happySpecReduce_3  148# happyReduction_388
-happyReduction_388 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> 
-	case happyOut72 happy_x_3 of { happy_var_3 -> 
-	happyIn162
-		 (ClsTyDef (nIS happy_var_1 <++> ann happy_var_3 <** [happy_var_1,happy_var_2]) happy_var_3
-	)}}}
-
-happyReduce_389 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_389 = happyMonadReduce 4# 149# happyReduction_389
-happyReduction_389 (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 { (Loc happy_var_1 KW_Where) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut164 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}})
-	) (\r -> happyReturn (happyIn163 r))
-
-happyReduce_390 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_390 = happyMonadReduce 4# 149# happyReduction_390
-happyReduction_390 (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 { (Loc happy_var_1 KW_Where) -> 
-	case happyOut272 happy_x_2 of { happy_var_2 -> 
-	case happyOut164 happy_x_3 of { happy_var_3 -> 
-	case happyOut273 happy_x_4 of { happy_var_4 -> 
-	( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}})
-	) (\r -> happyReturn (happyIn163 r))
-
-happyReduce_391 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_391 = happySpecReduce_0  149# happyReduction_391
-happyReduction_391  =  happyIn163
-		 ((Nothing, [], Nothing)
-	)
-
-happyReduce_392 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_392 = happyMonadReduce 3# 150# happyReduction_392
-happyReduction_392 (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 happyOut165 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	( checkRevInstDecls (fst happy_var_2) >>= \is -> return (is, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}})
-	) (\r -> happyReturn (happyIn164 r))
-
-happyReduce_393 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_393 = happySpecReduce_1  150# happyReduction_393
-happyReduction_393 happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	happyIn164
-		 (([],reverse happy_var_1)
-	)}
-
-happyReduce_394 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_394 = happySpecReduce_3  151# happyReduction_394
-happyReduction_394 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut165 happy_x_1 of { happy_var_1 -> 
-	case happyOut27 happy_x_2 of { happy_var_2 -> 
-	case happyOut166 happy_x_3 of { happy_var_3 -> 
-	happyIn165
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_395 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_395 = happySpecReduce_1  151# happyReduction_395
-happyReduction_395 happy_x_1
-	 =  case happyOut166 happy_x_1 of { happy_var_1 -> 
-	happyIn165
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_396 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_396 = happySpecReduce_1  152# happyReduction_396
-happyReduction_396 happy_x_1
-	 =  case happyOut168 happy_x_1 of { happy_var_1 -> 
-	happyIn166
-		 (InsDecl (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_397 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_397 = happyMonadReduce 1# 152# happyReduction_397
-happyReduction_397 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut167 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled TypeFamilies >> return happy_var_1)})
-	) (\r -> happyReturn (happyIn166 r))
-
-happyReduce_398 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_398 = happySpecReduce_1  152# happyReduction_398
-happyReduction_398 happy_x_1
-	 =  case happyOut81 happy_x_1 of { happy_var_1 -> 
-	happyIn166
-		 (InsDecl (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_399 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_399 = happyMonadReduce 1# 152# happyReduction_399
-happyReduction_399 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut80 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled InstanceSigs >> return (InsDecl (ann happy_var_1) happy_var_1))})
-	) (\r -> happyReturn (happyIn166 r))
-
-happyReduce_400 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_400 = happyMonadReduce 4# 153# happyReduction_400
-happyReduction_400 (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 { (Loc happy_var_1 KW_Type) -> 
-	case happyOut104 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> 
-	case happyOut119 happy_x_4 of { happy_var_4 -> 
-	( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns
-                       return (InsType (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4) })}}}})
-	) (\r -> happyReturn (happyIn167 r))
-
-happyReduce_401 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_401 = happyMonadReduce 4# 153# happyReduction_401
-happyReduction_401 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut73 happy_x_1 of { happy_var_1 -> 
-	case happyOut119 happy_x_2 of { happy_var_2 -> 
-	case happyOut136 happy_x_3 of { happy_var_3 -> 
-	case happyOut144 happy_x_4 of { happy_var_4 -> 
-	( do { -- (cs,c,t) <- checkDataHeader happy_var_4;
-                       let {(ds,ss,minf) = happy_var_3};
-                       checkDataOrNew happy_var_1 ds;
-                       return (InsData (happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann (listToMaybe happy_var_4) <** ss ) happy_var_1 happy_var_2 (reverse ds) (reverse happy_var_4)) })}}}})
-	) (\r -> happyReturn (happyIn167 r))
-
-happyReduce_402 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_402 = happyMonadReduce 5# 153# happyReduction_402
-happyReduction_402 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut73 happy_x_1 of { happy_var_1 -> 
-	case happyOut119 happy_x_2 of { happy_var_2 -> 
-	case happyOut155 happy_x_3 of { happy_var_3 -> 
-	case happyOut132 happy_x_4 of { happy_var_4 -> 
-	case happyOut144 happy_x_5 of { happy_var_5 -> 
-	( do { -- (cs,c,t) <- checkDataHeader happy_var_4;
-                       let { (gs,ss,minf) = happy_var_4 } ;
-                       checkDataOrNewG happy_var_1 gs;
-                       return $ InsGData (ann happy_var_1 <+?> minf <+?> fmap ann (listToMaybe happy_var_5) <** (snd happy_var_3 ++ ss)) happy_var_1 happy_var_2 (fst happy_var_3) (reverse gs) (reverse happy_var_5) })}}}}})
-	) (\r -> happyReturn (happyIn167 r))
-
-happyReduce_403 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_403 = happyMonadReduce 4# 154# happyReduction_403
-happyReduction_403 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOut170 happy_x_2 of { happy_var_2 -> 
-	case happyOut171 happy_x_3 of { happy_var_3 -> 
-	case happyOut169 happy_x_4 of { happy_var_4 -> 
-	( checkValDef ((happy_var_1 <> happy_var_3 <+?> (fmap ann) (fst happy_var_4)) <** (snd happy_var_4)) happy_var_1 happy_var_2 happy_var_3 (fst happy_var_4))}}}})
-	) (\r -> happyReturn (happyIn168 r))
-
-happyReduce_404 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_404 = happyMonadReduce 4# 154# happyReduction_404
-happyReduction_404 (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 { (Loc happy_var_1 Exclamation) -> 
-	case happyOut187 happy_x_2 of { happy_var_2 -> 
-	case happyOut171 happy_x_3 of { happy_var_3 -> 
-	case happyOut169 happy_x_4 of { happy_var_4 -> 
-	( do { checkEnabled BangPatterns ;
-                                              let { l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] };
-                                              p <- checkPattern (BangPat l happy_var_2);
-                                              return $ PatBind (p <> happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** snd happy_var_4)
-                                                          p happy_var_3 (fst happy_var_4) })}}}})
-	) (\r -> happyReturn (happyIn168 r))
-
-happyReduce_405 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_405 = happySpecReduce_2  155# happyReduction_405
-happyReduction_405 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	case happyOut88 happy_x_2 of { happy_var_2 -> 
-	happyIn169
-		 ((Just happy_var_2, [happy_var_1])
-	)}}
-
-happyReduce_406 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_406 = happySpecReduce_0  155# happyReduction_406
-happyReduction_406  =  happyIn169
-		 ((Nothing, [])
-	)
-
-happyReduce_407 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_407 = happyMonadReduce 2# 156# happyReduction_407
-happyReduction_407 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> 
-	case happyOut119 happy_x_2 of { happy_var_2 -> 
-	( checkEnabled ScopedTypeVariables >> return (Just (happy_var_2, happy_var_1)))}})
-	) (\r -> happyReturn (happyIn170 r))
-
-happyReduce_408 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_408 = happySpecReduce_0  156# happyReduction_408
-happyReduction_408  =  happyIn170
-		 (Nothing
-	)
-
-happyReduce_409 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_409 = happySpecReduce_2  157# happyReduction_409
-happyReduction_409 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> 
-	case happyOut174 happy_x_2 of { happy_var_2 -> 
-	happyIn171
-		 (UnGuardedRhs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_410 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_410 = happySpecReduce_1  157# happyReduction_410
-happyReduction_410 happy_x_1
-	 =  case happyOut172 happy_x_1 of { happy_var_1 -> 
-	happyIn171
-		 (GuardedRhss (snd happy_var_1) (reverse $ fst happy_var_1)
-	)}
-
-happyReduce_411 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_411 = happySpecReduce_2  158# happyReduction_411
-happyReduction_411 happy_x_2
-	happy_x_1
-	 =  case happyOut172 happy_x_1 of { happy_var_1 -> 
-	case happyOut173 happy_x_2 of { happy_var_2 -> 
-	happyIn172
-		 ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2)
-	)}}
-
-happyReduce_412 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_412 = happySpecReduce_1  158# happyReduction_412
-happyReduction_412 happy_x_1
-	 =  case happyOut173 happy_x_1 of { happy_var_1 -> 
-	happyIn172
-		 (([happy_var_1],ann happy_var_1)
-	)}
-
-happyReduce_413 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_413 = happyMonadReduce 4# 159# happyReduction_413
-happyReduction_413 (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 { (Loc happy_var_1 Bar) -> 
-	case happyOut214 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> 
-	case happyOut174 happy_x_4 of { happy_var_4 -> 
-	( do { checkPatternGuards (fst happy_var_2);
-                                       return $ GuardedRhs (nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])) (reverse (fst happy_var_2)) happy_var_4 })}}}})
-	) (\r -> happyReturn (happyIn173 r))
-
-happyReduce_414 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_414 = happyMonadReduce 1# 160# happyReduction_414
-happyReduction_414 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut175 happy_x_1 of { happy_var_1 -> 
-	( checkExpr happy_var_1)})
-	) (\r -> happyReturn (happyIn174 r))
-
-happyReduce_415 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_415 = happySpecReduce_3  161# happyReduction_415
-happyReduction_415 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> 
-	case happyOut119 happy_x_3 of { happy_var_3 -> 
-	happyIn175
-		 (ExpTypeSig      (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_416 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_416 = happySpecReduce_1  161# happyReduction_416
-happyReduction_416 happy_x_1
-	 =  case happyOut176 happy_x_1 of { happy_var_1 -> 
-	happyIn175
-		 (happy_var_1
-	)}
-
-happyReduce_417 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_417 = happySpecReduce_2  161# happyReduction_417
-happyReduction_417 happy_x_2
-	happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOut254 happy_x_2 of { happy_var_2 -> 
-	happyIn175
-		 (PostOp          (happy_var_1 <> happy_var_2)          happy_var_1 happy_var_2
-	)}}
-
-happyReduce_418 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_418 = happySpecReduce_3  161# happyReduction_418
-happyReduction_418 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrowTail) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	happyIn175
-		 (LeftArrApp      (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_419 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_419 = happySpecReduce_3  161# happyReduction_419
-happyReduction_419 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrowTail) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	happyIn175
-		 (RightArrApp     (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_420 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_420 = happySpecReduce_3  161# happyReduction_420
-happyReduction_420 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftDblArrowTail) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	happyIn175
-		 (LeftArrHighApp  (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_421 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_421 = happySpecReduce_3  161# happyReduction_421
-happyReduction_421 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightDblArrowTail) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	happyIn175
-		 (RightArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_422 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_422 = happySpecReduce_1  162# happyReduction_422
-happyReduction_422 happy_x_1
-	 =  case happyOut177 happy_x_1 of { happy_var_1 -> 
-	happyIn176
-		 (happy_var_1
-	)}
-
-happyReduce_423 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_423 = happySpecReduce_1  162# happyReduction_423
-happyReduction_423 happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	happyIn176
-		 (happy_var_1
-	)}
-
-happyReduce_424 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_424 = happySpecReduce_3  163# happyReduction_424
-happyReduction_424 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOut254 happy_x_2 of { happy_var_2 -> 
-	case happyOut179 happy_x_3 of { happy_var_3 -> 
-	happyIn177
-		 (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_425 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_425 = happySpecReduce_1  163# happyReduction_425
-happyReduction_425 happy_x_1
-	 =  case happyOut179 happy_x_1 of { happy_var_1 -> 
-	happyIn177
-		 (happy_var_1
-	)}
-
-happyReduce_426 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_426 = happySpecReduce_3  164# happyReduction_426
-happyReduction_426 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut178 happy_x_1 of { happy_var_1 -> 
-	case happyOut254 happy_x_2 of { happy_var_2 -> 
-	case happyOut182 happy_x_3 of { happy_var_3 -> 
-	happyIn178
-		 (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_427 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_427 = happySpecReduce_1  164# happyReduction_427
-happyReduction_427 happy_x_1
-	 =  case happyOut182 happy_x_1 of { happy_var_1 -> 
-	happyIn178
-		 (happy_var_1
-	)}
-
-happyReduce_428 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_428 = happyReduce 4# 165# 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_1 of { (Loc happy_var_1 Backslash) -> 
-	case happyOut185 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> 
-	case happyOut175 happy_x_4 of { happy_var_4 -> 
-	happyIn179
-		 (Lambda (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (reverse happy_var_2) happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_429 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_429 = happyReduce 4# 165# happyReduction_429
-happyReduction_429 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> 
-	case happyOut88 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_In) -> 
-	case happyOut175 happy_x_4 of { happy_var_4 -> 
-	happyIn179
-		 (Let    (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3])    happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_430 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_430 = happyReduce 8# 165# happyReduction_430
-happyReduction_430 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> 
-	case happyOut175 happy_x_2 of { happy_var_2 -> 
-	case happyOut180 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 KW_Then) -> 
-	case happyOut175 happy_x_5 of { happy_var_5 -> 
-	case happyOut180 happy_x_6 of { happy_var_6 -> 
-	case happyOutTok happy_x_7 of { (Loc happy_var_7 KW_Else) -> 
-	case happyOut175 happy_x_8 of { happy_var_8 -> 
-	happyIn179
-		 (If     (nIS happy_var_1 <++> ann happy_var_8 <** (happy_var_1:happy_var_3 ++ happy_var_4:happy_var_6 ++ [happy_var_7])) happy_var_2 happy_var_5 happy_var_8
-	) `HappyStk` happyRest}}}}}}}}
-
-happyReduce_431 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_431 = happyMonadReduce 2# 165# happyReduction_431
-happyReduction_431 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> 
-	case happyOut225 happy_x_2 of { happy_var_2 -> 
-	( checkEnabled MultiWayIf >>
-                                           let (alts, inf, ss) = happy_var_2
-                                           in return (MultiIf (nIS happy_var_1 <++> inf <** (happy_var_1:ss)) alts))}})
-	) (\r -> happyReturn (happyIn179 r))
-
-happyReduce_432 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_432 = happyReduce 4# 165# happyReduction_432
-happyReduction_432 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> 
-	case happyOut186 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> 
-	case happyOut175 happy_x_4 of { happy_var_4 -> 
-	happyIn179
-		 (Proc   (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3])    happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_433 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_433 = happySpecReduce_1  165# happyReduction_433
-happyReduction_433 happy_x_1
-	 =  case happyOut183 happy_x_1 of { happy_var_1 -> 
-	happyIn179
-		 (happy_var_1
-	)}
-
-happyReduce_434 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_434 = happyMonadReduce 1# 166# happyReduction_434
-happyReduction_434 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> 
-	( checkEnabled DoAndIfThenElse >> return [happy_var_1])})
-	) (\r -> happyReturn (happyIn180 r))
-
-happyReduce_435 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_435 = happySpecReduce_0  166# happyReduction_435
-happyReduction_435  =  happyIn180
-		 ([]
-	)
-
-happyReduce_436 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_436 = happySpecReduce_1  167# happyReduction_436
-happyReduction_436 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> 
-	happyIn181
-		 ([happy_var_1]
-	)}
-
-happyReduce_437 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_437 = happySpecReduce_0  167# happyReduction_437
-happyReduction_437  =  happyIn181
-		 ([]
-	)
-
-happyReduce_438 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_438 = happyReduce 4# 168# happyReduction_438
-happyReduction_438 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> 
-	case happyOut175 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Of) -> 
-	case happyOut217 happy_x_4 of { happy_var_4 -> 
-	happyIn182
-		 (let (als, inf, ss) = happy_var_4 in Case (nIS happy_var_1 <++> inf <** (happy_var_1:happy_var_3:ss)) happy_var_2 als
-	) `HappyStk` happyRest}}}}
-
-happyReduce_439 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_439 = happyMonadReduce 3# 168# happyReduction_439
-happyReduction_439 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 Backslash) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Case) -> 
-	case happyOut217 happy_x_3 of { happy_var_3 -> 
-	( do { checkEnabled LambdaCase ;
-                                              let { (als, inf, ss) = happy_var_3 } ;
-                                              return (LCase (nIS happy_var_1 <++> inf <** (happy_var_1:happy_var_2:ss)) als) })}}})
-	) (\r -> happyReturn (happyIn182 r))
-
-happyReduce_440 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_440 = happySpecReduce_2  168# happyReduction_440
-happyReduction_440 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> 
-	case happyOut184 happy_x_2 of { happy_var_2 -> 
-	happyIn182
-		 (NegApp (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_441 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_441 = happySpecReduce_2  168# happyReduction_441
-happyReduction_441 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> 
-	case happyOut228 happy_x_2 of { happy_var_2 -> 
-	happyIn182
-		 (let (sts, inf, ss) = happy_var_2 in Do   (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts
-	)}}
-
-happyReduce_442 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_442 = happySpecReduce_2  168# happyReduction_442
-happyReduction_442 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> 
-	case happyOut228 happy_x_2 of { happy_var_2 -> 
-	happyIn182
-		 (let (sts, inf, ss) = happy_var_2 in MDo  (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts
-	)}}
-
-happyReduce_443 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_443 = happySpecReduce_1  168# happyReduction_443
-happyReduction_443 happy_x_1
-	 =  case happyOut184 happy_x_1 of { happy_var_1 -> 
-	happyIn182
-		 (happy_var_1
-	)}
-
-happyReduce_444 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_444 = happyReduce 4# 169# happyReduction_444
-happyReduction_444 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 CORE) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	case happyOut175 happy_x_4 of { happy_var_4 -> 
-	happyIn183
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in CorePragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_445 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_445 = happyReduce 4# 169# happyReduction_445
-happyReduction_445 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 SCC) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> 
-	case happyOut175 happy_x_4 of { happy_var_4 -> 
-	happyIn183
-		 (let Loc l (StringTok (s,_)) = happy_var_2 in SCCPragma  (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_446 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_446 = happyReduce 11# 169# happyReduction_446
-happyReduction_446 (happy_x_11 `HappyStk`
-	happy_x_10 `HappyStk`
-	happy_x_9 `HappyStk`
-	happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 GENERATED) -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 Colon) -> 
-	case happyOutTok happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (Loc happy_var_6 Minus) -> 
-	case happyOutTok happy_x_7 of { happy_var_7 -> 
-	case happyOutTok happy_x_8 of { (Loc happy_var_8 Colon) -> 
-	case happyOutTok happy_x_9 of { happy_var_9 -> 
-	case happyOutTok happy_x_10 of { (Loc happy_var_10 PragmaEnd) -> 
-	case happyOut175 happy_x_11 of { happy_var_11 -> 
-	happyIn183
-		 (let { Loc l0 (StringTok (s,_)) = happy_var_2;
-                                                  Loc l1 (IntTok (i1,_))   = happy_var_3;
-                                                  Loc l2 (IntTok (i2,_))   = happy_var_5;
-                                                  Loc l3 (IntTok (i3,_))   = happy_var_7;
-                                                  Loc l4 (IntTok (i4,_))   = happy_var_9}
-                                             in GenPragma (nIS happy_var_1 <++> ann happy_var_11 <** [happy_var_1,l0,l1,happy_var_4,l2,happy_var_6,l3,happy_var_8,l4,happy_var_10])
-                                                      s (fromInteger i1, fromInteger i2)
-                                                        (fromInteger i3, fromInteger i4) happy_var_11
-	) `HappyStk` happyRest}}}}}}}}}}}
-
-happyReduce_447 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_447 = happySpecReduce_2  170# happyReduction_447
-happyReduction_447 happy_x_2
-	happy_x_1
-	 =  case happyOut184 happy_x_1 of { happy_var_1 -> 
-	case happyOut187 happy_x_2 of { happy_var_2 -> 
-	happyIn184
-		 (App (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2
-	)}}
-
-happyReduce_448 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_448 = happySpecReduce_1  170# happyReduction_448
-happyReduction_448 happy_x_1
-	 =  case happyOut187 happy_x_1 of { happy_var_1 -> 
-	happyIn184
-		 (happy_var_1
-	)}
-
-happyReduce_449 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_449 = happySpecReduce_2  171# happyReduction_449
-happyReduction_449 happy_x_2
-	happy_x_1
-	 =  case happyOut185 happy_x_1 of { happy_var_1 -> 
-	case happyOut186 happy_x_2 of { happy_var_2 -> 
-	happyIn185
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_450 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_450 = happySpecReduce_1  171# happyReduction_450
-happyReduction_450 happy_x_1
-	 =  case happyOut186 happy_x_1 of { happy_var_1 -> 
-	happyIn185
-		 ([happy_var_1]
-	)}
-
-happyReduce_451 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_451 = happyMonadReduce 1# 172# happyReduction_451
-happyReduction_451 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut187 happy_x_1 of { happy_var_1 -> 
-	( checkPattern happy_var_1)})
-	) (\r -> happyReturn (happyIn186 r))
-
-happyReduce_452 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_452 = happyMonadReduce 2# 172# happyReduction_452
-happyReduction_452 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	case happyOut187 happy_x_2 of { happy_var_2 -> 
-	( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}})
-	) (\r -> happyReturn (happyIn186 r))
-
-happyReduce_453 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_453 = happyMonadReduce 3# 173# happyReduction_453
-happyReduction_453 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut243 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 At) -> 
-	case happyOut187 happy_x_3 of { happy_var_3 -> 
-	( do { n <- checkUnQual happy_var_1;
-                                              return (AsPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}})
-	) (\r -> happyReturn (happyIn187 r))
-
-happyReduce_454 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_454 = happyMonadReduce 3# 173# happyReduction_454
-happyReduction_454 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut243 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RPCAt) -> 
-	case happyOut187 happy_x_3 of { happy_var_3 -> 
-	( do { n <- checkUnQual happy_var_1;
-                                              return (CAsRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}})
-	) (\r -> happyReturn (happyIn187 r))
-
-happyReduce_455 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_455 = happySpecReduce_2  173# happyReduction_455
-happyReduction_455 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Tilde) -> 
-	case happyOut187 happy_x_2 of { happy_var_2 -> 
-	happyIn187
-		 (IrrPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_456 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_456 = happySpecReduce_2  173# happyReduction_456
-happyReduction_456 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 TApp) -> 
-	case happyOut109 happy_x_2 of { happy_var_2 -> 
-	happyIn187
-		 (TypeApp (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_457 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_457 = happySpecReduce_1  173# happyReduction_457
-happyReduction_457 happy_x_1
-	 =  case happyOut188 happy_x_1 of { happy_var_1 -> 
-	happyIn187
-		 (happy_var_1
-	)}
-
-happyReduce_458 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_458 = happyMonadReduce 3# 174# happyReduction_458
-happyReduction_458 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut188 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]))) $ mkRecConstrOrUpdate happy_var_1 [])}}})
-	) (\r -> happyReturn (happyIn188 r))
-
-happyReduce_459 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_459 = happyMonadReduce 4# 174# happyReduction_459
-happyReduction_459 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut188 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut232 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:snd happy_var_3 ++ [happy_var_4]))))
-                                              $ mkRecConstrOrUpdate happy_var_1 (fst happy_var_3))}}}})
-	) (\r -> happyReturn (happyIn188 r))
-
-happyReduce_460 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_460 = happySpecReduce_1  174# happyReduction_460
-happyReduction_460 happy_x_1
-	 =  case happyOut189 happy_x_1 of { happy_var_1 -> 
-	happyIn188
-		 (happy_var_1
-	)}
-
-happyReduce_461 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_461 = happySpecReduce_1  175# happyReduction_461
-happyReduction_461 happy_x_1
-	 =  case happyOut244 happy_x_1 of { happy_var_1 -> 
-	happyIn189
-		 (IPVar (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_462 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_462 = happySpecReduce_1  175# happyReduction_462
-happyReduction_462 happy_x_1
-	 =  case happyOut257 happy_x_1 of { happy_var_1 -> 
-	happyIn189
-		 (happy_var_1
-	)}
-
-happyReduce_463 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_463 = happySpecReduce_1  175# happyReduction_463
-happyReduction_463 happy_x_1
-	 =  case happyOut243 happy_x_1 of { happy_var_1 -> 
-	happyIn189
-		 (Var (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_464 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_464 = happySpecReduce_1  175# happyReduction_464
-happyReduction_464 happy_x_1
-	 =  case happyOut237 happy_x_1 of { happy_var_1 -> 
-	happyIn189
-		 (happy_var_1
-	)}
-
-happyReduce_465 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_465 = happySpecReduce_1  175# happyReduction_465
-happyReduction_465 happy_x_1
-	 =  case happyOut271 happy_x_1 of { happy_var_1 -> 
-	happyIn189
-		 (Lit (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_466 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_466 = happySpecReduce_3  175# happyReduction_466
-happyReduction_466 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut196 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn189
-		 (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_467 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_467 = happyMonadReduce 3# 175# happyReduction_467
-happyReduction_467 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut190 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	( do { e <- mkSumOrTuple Boxed (happy_var_1 <^^> happy_var_3) (snd happy_var_2)
-                                            ; return $ amap (\l -> l <** [happy_var_1] ++ fst happy_var_2 ++ [happy_var_3]) e })}}})
-	) (\r -> happyReturn (happyIn189 r))
-
-happyReduce_468 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_468 = happySpecReduce_3  175# happyReduction_468
-happyReduction_468 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOut196 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> 
-	happyIn189
-		 (TupleSection (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) Unboxed [Just happy_var_2]
-	)}}}
-
-happyReduce_469 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_469 = happyMonadReduce 3# 175# happyReduction_469
-happyReduction_469 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOut190 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> 
-	( do { e <- mkSumOrTuple Unboxed (happy_var_1 <^^> happy_var_3) (snd happy_var_2)
-                                          ; return $ amap (\l -> l <** [happy_var_1] ++ fst happy_var_2 ++ [happy_var_3]) e })}}})
-	) (\r -> happyReturn (happyIn189 r))
-
-happyReduce_470 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_470 = happySpecReduce_3  175# happyReduction_470
-happyReduction_470 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOut208 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> 
-	happyIn189
-		 (amap (\l -> l <** [happy_var_3]) $ happy_var_2 (happy_var_1 <^^> happy_var_3 <** [happy_var_1])
-	)}}}
-
-happyReduce_471 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_471 = happySpecReduce_3  175# happyReduction_471
-happyReduction_471 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 ParArrayLeftSquare) -> 
-	case happyOut216 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 ParArrayRightSquare) -> 
-	happyIn189
-		 (amap (\l -> l <** [happy_var_3]) $ happy_var_2 (happy_var_1 <^^> happy_var_3 <** [happy_var_1])
-	)}}}
-
-happyReduce_472 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_472 = happyMonadReduce 3# 175# happyReduction_472
-happyReduction_472 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut198 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	( checkEnabled RegularPatterns >> return (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2))}}})
-	) (\r -> happyReturn (happyIn189 r))
-
-happyReduce_473 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_473 = happySpecReduce_3  175# happyReduction_473
-happyReduction_473 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> 
-	case happyOut197 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RPGuardClose) -> 
-	happyIn189
-		 (SeqRP (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (snd happy_var_2) ++ [happy_var_3])) $ reverse (fst happy_var_2)
-	)}}}
-
-happyReduce_474 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_474 = happyReduce 5# 175# happyReduction_474
-happyReduction_474 (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 { (Loc happy_var_1 RPGuardOpen) -> 
-	case happyOut175 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Bar) -> 
-	case happyOut214 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RPGuardClose) -> 
-	happyIn189
-		 (GuardRP (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 $ (reverse $ fst happy_var_4)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_475 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_475 = happySpecReduce_1  175# happyReduction_475
-happyReduction_475 happy_x_1
-	 =  case happyOut199 happy_x_1 of { happy_var_1 -> 
-	happyIn189
-		 (happy_var_1
-	)}
-
-happyReduce_476 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_476 = happySpecReduce_1  175# happyReduction_476
-happyReduction_476 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn189
-		 (let Loc l (THIdEscape s) = happy_var_1 in SpliceExp (nIS l) $ IdSplice (nIS l) s
-	)}
-
-happyReduce_477 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_477 = happySpecReduce_3  175# happyReduction_477
-happyReduction_477 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THParenEscape) -> 
-	case happyOut174 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn189
-		 (let l = (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) in SpliceExp l $ ParenSplice l happy_var_2
-	)}}}
-
-happyReduce_478 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_478 = happySpecReduce_3  175# happyReduction_478
-happyReduction_478 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THExpQuote) -> 
-	case happyOut174 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> 
-	happyIn189
-		 (let l = (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) in BracketExp l $ ExpBracket l happy_var_2
-	)}}}
-
-happyReduce_479 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_479 = happyMonadReduce 3# 175# happyReduction_479
-happyReduction_479 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 THPatQuote) -> 
-	case happyOut176 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> 
-	( do { p <- checkPattern happy_var_2;
-                                              let {l = (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) };
-                                              return $ BracketExp l $ PatBracket l p })}}})
-	) (\r -> happyReturn (happyIn189 r))
-
-happyReduce_480 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_480 = happySpecReduce_3  175# happyReduction_480
-happyReduction_480 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THTypQuote) -> 
-	case happyOut119 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> 
-	happyIn189
-		 (let l = happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3] in BracketExp l $ TypeBracket l happy_var_2
-	)}}}
-
-happyReduce_481 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_481 = happyReduce 5# 175# happyReduction_481
-happyReduction_481 (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 { (Loc happy_var_1 THDecQuote) -> 
-	case happyOut272 happy_x_2 of { happy_var_2 -> 
-	case happyOut58 happy_x_3 of { happy_var_3 -> 
-	case happyOut273 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 THCloseQuote) -> 
-	happyIn189
-		 (let l = happy_var_1 <^^> happy_var_5 <** (happy_var_1:snd happy_var_3 ++ [happy_var_5])
-                                            in BracketExp l $ DeclBracket (happy_var_1 <^^> happy_var_5 <** (happy_var_2:snd happy_var_3 ++ [happy_var_4,happy_var_5])) (fst happy_var_3)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_482 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_482 = happySpecReduce_3  175# happyReduction_482
-happyReduction_482 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn189
-		 (let {l1 = happy_var_1 <^^> happy_var_3 <** [happy_var_1];
-                                             l2 = happy_var_2 <^^> happy_var_3 <** [happy_var_2,happy_var_3];}
-                                         in VarQuote l1 (unit_con_name l2)
-	)}}}
-
-happyReduce_483 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_483 = happySpecReduce_2  175# happyReduction_483
-happyReduction_483 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> 
-	case happyOut243 happy_x_2 of { happy_var_2 -> 
-	happyIn189
-		 (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_484 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_484 = happySpecReduce_2  175# happyReduction_484
-happyReduction_484 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> 
-	case happyOut247 happy_x_2 of { happy_var_2 -> 
-	happyIn189
-		 (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_485 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_485 = happySpecReduce_2  175# happyReduction_485
-happyReduction_485 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> 
-	case happyOut286 happy_x_2 of { happy_var_2 -> 
-	happyIn189
-		 (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) (UnQual (ann happy_var_2) happy_var_2)
-	)}}
-
-happyReduce_486 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_486 = happySpecReduce_2  175# happyReduction_486
-happyReduction_486 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> 
-	case happyOut116 happy_x_2 of { happy_var_2 -> 
-	happyIn189
-		 (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_487 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_487 = happySpecReduce_1  175# happyReduction_487
-happyReduction_487 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn189
-		 (let Loc l (THQuasiQuote (n,q)) = happy_var_1 in QuasiQuote (nIS l) n q
-	)}
-
-happyReduce_488 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_488 = happySpecReduce_2  176# happyReduction_488
-happyReduction_488 happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOut191 happy_x_2 of { happy_var_2 -> 
-	happyIn190
-		 ((fst happy_var_2, STuple (Just happy_var_1 : snd happy_var_2))
-	)}}
-
-happyReduce_489 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_489 = happySpecReduce_2  176# happyReduction_489
-happyReduction_489 happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOut194 happy_x_2 of { happy_var_2 -> 
-	happyIn190
-		 ((happy_var_2, SSum 0 (length happy_var_2) happy_var_1)
-	)}}
-
-happyReduce_490 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_490 = happySpecReduce_2  176# happyReduction_490
-happyReduction_490 happy_x_2
-	happy_x_1
-	 =  case happyOut193 happy_x_1 of { happy_var_1 -> 
-	case happyOut192 happy_x_2 of { happy_var_2 -> 
-	happyIn190
-		 ((happy_var_1 ++ (fst happy_var_2), STuple ((map (const Nothing) happy_var_1) ++ snd happy_var_2))
-	)}}
-
-happyReduce_491 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_491 = happySpecReduce_3  176# happyReduction_491
-happyReduction_491 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut194 happy_x_1 of { happy_var_1 -> 
-	case happyOut196 happy_x_2 of { happy_var_2 -> 
-	case happyOut195 happy_x_3 of { happy_var_3 -> 
-	happyIn190
-		 ((happy_var_1 ++ happy_var_3, SSum (length happy_var_1) (length happy_var_3) happy_var_2)
-	)}}}
-
-happyReduce_492 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_492 = happySpecReduce_2  177# happyReduction_492
-happyReduction_492 happy_x_2
-	happy_x_1
-	 =  case happyOut193 happy_x_1 of { happy_var_1 -> 
-	case happyOut192 happy_x_2 of { happy_var_2 -> 
-	happyIn191
-		 ((reverse happy_var_1 ++ fst happy_var_2, map (const Nothing) (tail happy_var_1) ++ snd happy_var_2)
-	)}}
-
-happyReduce_493 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_493 = happySpecReduce_2  178# happyReduction_493
-happyReduction_493 happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOut191 happy_x_2 of { happy_var_2 -> 
-	happyIn192
-		 ((fst happy_var_2, Just happy_var_1 : snd happy_var_2)
-	)}}
-
-happyReduce_494 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_494 = happySpecReduce_1  178# happyReduction_494
-happyReduction_494 happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	happyIn192
-		 (([], [Just happy_var_1])
-	)}
-
-happyReduce_495 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_495 = happySpecReduce_0  178# happyReduction_495
-happyReduction_495  =  happyIn192
-		 (([], [Nothing])
-	)
-
-happyReduce_496 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_496 = happySpecReduce_2  179# happyReduction_496
-happyReduction_496 happy_x_2
-	happy_x_1
-	 =  case happyOut193 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	happyIn193
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_497 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_497 = happySpecReduce_1  179# happyReduction_497
-happyReduction_497 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> 
-	happyIn193
-		 ([happy_var_1]
-	)}
-
-happyReduce_498 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_498 = happySpecReduce_2  180# happyReduction_498
-happyReduction_498 happy_x_2
-	happy_x_1
-	 =  case happyOut194 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	happyIn194
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_499 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_499 = happySpecReduce_1  180# happyReduction_499
-happyReduction_499 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> 
-	happyIn194
-		 ([happy_var_1]
-	)}
-
-happyReduce_500 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_500 = happySpecReduce_1  181# happyReduction_500
-happyReduction_500 happy_x_1
-	 =  case happyOut194 happy_x_1 of { happy_var_1 -> 
-	happyIn195
-		 (happy_var_1
-	)}
-
-happyReduce_501 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_501 = happySpecReduce_0  181# happyReduction_501
-happyReduction_501  =  happyIn195
-		 ([]
-	)
-
-happyReduce_502 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_502 = happySpecReduce_1  182# happyReduction_502
-happyReduction_502 happy_x_1
-	 =  case happyOut175 happy_x_1 of { happy_var_1 -> 
-	happyIn196
-		 (happy_var_1
-	)}
-
-happyReduce_503 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_503 = happySpecReduce_2  182# happyReduction_503
-happyReduction_503 happy_x_2
-	happy_x_1
-	 =  case happyOut255 happy_x_1 of { happy_var_1 -> 
-	case happyOut176 happy_x_2 of { happy_var_2 -> 
-	happyIn196
-		 (PreOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2
-	)}}
-
-happyReduce_504 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_504 = happyMonadReduce 3# 182# happyReduction_504
-happyReduction_504 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut175 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> 
-	case happyOut224 happy_x_3 of { happy_var_3 -> 
-	( do {checkEnabled ViewPatterns;
-                                             return $ ViewPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3})}}})
-	) (\r -> happyReturn (happyIn196 r))
-
-happyReduce_505 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_505 = happySpecReduce_3  183# happyReduction_505
-happyReduction_505 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut197 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	happyIn197
-		 ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1)
-	)}}}
-
-happyReduce_506 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_506 = happySpecReduce_1  183# happyReduction_506
-happyReduction_506 happy_x_1
-	 =  case happyOut175 happy_x_1 of { happy_var_1 -> 
-	happyIn197
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_507 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_507 = happySpecReduce_3  184# happyReduction_507
-happyReduction_507 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut175 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut198 happy_x_3 of { happy_var_3 -> 
-	happyIn198
-		 (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_508 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_508 = happySpecReduce_3  184# happyReduction_508
-happyReduction_508 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut175 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	happyIn198
-		 (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_509 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_509 = happyMonadReduce 10# 185# happyReduction_509
-happyReduction_509 (happy_x_10 `HappyStk`
-	happy_x_9 `HappyStk`
-	happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> 
-	case happyOut202 happy_x_2 of { happy_var_2 -> 
-	case happyOut205 happy_x_3 of { happy_var_3 -> 
-	case happyOut207 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> 
-	case happyOut200 happy_x_6 of { happy_var_6 -> 
-	case happyOut181 happy_x_7 of { happy_var_7 -> 
-	case happyOutTok happy_x_8 of { (Loc happy_var_8 XCloseTagOpen) -> 
-	case happyOut202 happy_x_9 of { happy_var_9 -> 
-	case happyOutTok happy_x_10 of { (Loc happy_var_10 XStdTagClose) -> 
-	( do { n <- checkEqNames happy_var_2 happy_var_9;
-                                                                       let { cn = reverse happy_var_6;
-                                                                             as = reverse happy_var_3;
-                                                                             l  = happy_var_1 <^^> happy_var_10 <** [happy_var_1,happy_var_5] ++ happy_var_7 ++ [happy_var_8,srcInfoSpan (ann happy_var_9),happy_var_10] };
-                                                                       return $ XTag l n as happy_var_4 cn })}}}}}}}}}})
-	) (\r -> happyReturn (happyIn199 r))
-
-happyReduce_510 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_510 = happyReduce 5# 185# happyReduction_510
-happyReduction_510 (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 { (Loc happy_var_1 XStdTagOpen) -> 
-	case happyOut202 happy_x_2 of { happy_var_2 -> 
-	case happyOut205 happy_x_3 of { happy_var_3 -> 
-	case happyOut207 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> 
-	happyIn199
-		 (XETag   (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_511 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_511 = happySpecReduce_3  185# happyReduction_511
-happyReduction_511 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 XCodeTagOpen) -> 
-	case happyOut175 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 XCodeTagClose) -> 
-	happyIn199
-		 (XExpTag (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_512 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_512 = happyReduce 5# 185# happyReduction_512
-happyReduction_512 (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 { (Loc happy_var_1 XChildTagOpen) -> 
-	case happyOut200 happy_x_2 of { happy_var_2 -> 
-	case happyOut181 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 XCloseTagOpen) -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 XCodeTagClose) -> 
-	happyIn199
-		 (XChildTag (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3++[happy_var_4,happy_var_5])) (reverse happy_var_2)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_513 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_513 = happySpecReduce_2  186# happyReduction_513
-happyReduction_513 happy_x_2
-	happy_x_1
-	 =  case happyOut200 happy_x_1 of { happy_var_1 -> 
-	case happyOut201 happy_x_2 of { happy_var_2 -> 
-	happyIn200
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_514 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_514 = happySpecReduce_0  186# happyReduction_514
-happyReduction_514  =  happyIn200
-		 ([]
-	)
-
-happyReduce_515 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_515 = happySpecReduce_1  187# happyReduction_515
-happyReduction_515 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn201
-		 (let Loc l (XPCDATA pcd) = happy_var_1 in XPcdata (nIS l) pcd
-	)}
-
-happyReduce_516 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_516 = happySpecReduce_3  187# happyReduction_516
-happyReduction_516 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 XRPatOpen) -> 
-	case happyOut197 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 XRPatClose) -> 
-	happyIn201
-		 (XRPats (happy_var_1 <^^> happy_var_3 <** (snd happy_var_2 ++ [happy_var_1,happy_var_3])) $ reverse (fst happy_var_2)
-	)}}}
-
-happyReduce_517 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_517 = happySpecReduce_1  187# happyReduction_517
-happyReduction_517 happy_x_1
-	 =  case happyOut199 happy_x_1 of { happy_var_1 -> 
-	happyIn201
-		 (happy_var_1
-	)}
-
-happyReduce_518 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_518 = happySpecReduce_3  188# happyReduction_518
-happyReduction_518 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut203 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Colon) -> 
-	case happyOut203 happy_x_3 of { happy_var_3 -> 
-	happyIn202
-		 (let {Loc l1 s1 = happy_var_1; Loc l2 s2 = happy_var_3}
-                                         in XDomName (nIS l1 <++> nIS l2 <** [l1,happy_var_2,l2]) s1 s2
-	)}}}
-
-happyReduce_519 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_519 = happySpecReduce_1  188# happyReduction_519
-happyReduction_519 happy_x_1
-	 =  case happyOut203 happy_x_1 of { happy_var_1 -> 
-	happyIn202
-		 (let Loc l str = happy_var_1 in XName (nIS l) str
-	)}
-
-happyReduce_520 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_520 = happySpecReduce_1  189# happyReduction_520
-happyReduction_520 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn203
-		 (let Loc l (VarId  s) = happy_var_1 in Loc l s
-	)}
-
-happyReduce_521 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_521 = happySpecReduce_1  189# happyReduction_521
-happyReduction_521 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn203
-		 (let Loc l (ConId  s) = happy_var_1 in Loc l s
-	)}
-
-happyReduce_522 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_522 = happySpecReduce_1  189# happyReduction_522
-happyReduction_522 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn203
-		 (let Loc l (DVarId s) = happy_var_1 in Loc l $ mkDVar s
-	)}
-
-happyReduce_523 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_523 = happySpecReduce_1  189# happyReduction_523
-happyReduction_523 happy_x_1
-	 =  case happyOut204 happy_x_1 of { happy_var_1 -> 
-	happyIn203
-		 (happy_var_1
-	)}
-
-happyReduce_524 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_524 = happySpecReduce_1  190# happyReduction_524
-happyReduction_524 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> 
-	happyIn204
-		 (Loc happy_var_1 "type"
-	)}
-
-happyReduce_525 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_525 = happySpecReduce_1  190# happyReduction_525
-happyReduction_525 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> 
-	happyIn204
-		 (Loc happy_var_1 "class"
-	)}
-
-happyReduce_526 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_526 = happySpecReduce_1  190# happyReduction_526
-happyReduction_526 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> 
-	happyIn204
-		 (Loc happy_var_1 "data"
-	)}
-
-happyReduce_527 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_527 = happySpecReduce_1  190# happyReduction_527
-happyReduction_527 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> 
-	happyIn204
-		 (Loc happy_var_1 "foreign"
-	)}
-
-happyReduce_528 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_528 = happySpecReduce_1  190# happyReduction_528
-happyReduction_528 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> 
-	happyIn204
-		 (Loc happy_var_1 "export"
-	)}
-
-happyReduce_529 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_529 = happySpecReduce_1  190# happyReduction_529
-happyReduction_529 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> 
-	happyIn204
-		 (Loc happy_var_1 "safe"
-	)}
-
-happyReduce_530 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_530 = happySpecReduce_1  190# happyReduction_530
-happyReduction_530 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> 
-	happyIn204
-		 (Loc happy_var_1 "unsafe"
-	)}
-
-happyReduce_531 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_531 = happySpecReduce_1  190# happyReduction_531
-happyReduction_531 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Interruptible) -> 
-	happyIn204
-		 (Loc happy_var_1 "interruptible"
-	)}
-
-happyReduce_532 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_532 = happySpecReduce_1  190# happyReduction_532
-happyReduction_532 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> 
-	happyIn204
-		 (Loc happy_var_1 "threadsafe"
-	)}
-
-happyReduce_533 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_533 = happySpecReduce_1  190# happyReduction_533
-happyReduction_533 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> 
-	happyIn204
-		 (Loc happy_var_1 "stdcall"
-	)}
-
-happyReduce_534 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_534 = happySpecReduce_1  190# happyReduction_534
-happyReduction_534 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> 
-	happyIn204
-		 (Loc happy_var_1 "ccall"
-	)}
-
-happyReduce_535 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_535 = happySpecReduce_1  190# happyReduction_535
-happyReduction_535 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CPlusPlus) -> 
-	happyIn204
-		 (Loc happy_var_1 "cplusplus"
-	)}
-
-happyReduce_536 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_536 = happySpecReduce_1  190# happyReduction_536
-happyReduction_536 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_DotNet) -> 
-	happyIn204
-		 (Loc happy_var_1 "dotnet"
-	)}
-
-happyReduce_537 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_537 = happySpecReduce_1  190# happyReduction_537
-happyReduction_537 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Jvm) -> 
-	happyIn204
-		 (Loc happy_var_1 "jvm"
-	)}
-
-happyReduce_538 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_538 = happySpecReduce_1  190# happyReduction_538
-happyReduction_538 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Js) -> 
-	happyIn204
-		 (Loc happy_var_1 "js"
-	)}
-
-happyReduce_539 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_539 = happySpecReduce_1  190# happyReduction_539
-happyReduction_539 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_JavaScript) -> 
-	happyIn204
-		 (Loc happy_var_1 "javascript"
-	)}
-
-happyReduce_540 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_540 = happySpecReduce_1  190# happyReduction_540
-happyReduction_540 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CApi) -> 
-	happyIn204
-		 (Loc happy_var_1 "capi"
-	)}
-
-happyReduce_541 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_541 = happySpecReduce_1  190# happyReduction_541
-happyReduction_541 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> 
-	happyIn204
-		 (Loc happy_var_1 "as"
-	)}
-
-happyReduce_542 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_542 = happySpecReduce_1  190# happyReduction_542
-happyReduction_542 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_By) -> 
-	happyIn204
-		 (Loc happy_var_1 "by"
-	)}
-
-happyReduce_543 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_543 = happySpecReduce_1  190# happyReduction_543
-happyReduction_543 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> 
-	happyIn204
-		 (Loc happy_var_1 "case"
-	)}
-
-happyReduce_544 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_544 = happySpecReduce_1  190# happyReduction_544
-happyReduction_544 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> 
-	happyIn204
-		 (Loc happy_var_1 "default"
-	)}
-
-happyReduce_545 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_545 = happySpecReduce_1  190# happyReduction_545
-happyReduction_545 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> 
-	happyIn204
-		 (Loc happy_var_1 "deriving"
-	)}
-
-happyReduce_546 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_546 = happySpecReduce_1  190# happyReduction_546
-happyReduction_546 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> 
-	happyIn204
-		 (Loc happy_var_1 "do"
-	)}
-
-happyReduce_547 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_547 = happySpecReduce_1  190# happyReduction_547
-happyReduction_547 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Else) -> 
-	happyIn204
-		 (Loc happy_var_1 "else"
-	)}
-
-happyReduce_548 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_548 = happySpecReduce_1  190# happyReduction_548
-happyReduction_548 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Family) -> 
-	happyIn204
-		 (Loc happy_var_1 "family"
-	)}
-
-happyReduce_549 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_549 = happySpecReduce_1  190# happyReduction_549
-happyReduction_549 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	happyIn204
-		 (Loc happy_var_1 "forall"
-	)}
-
-happyReduce_550 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_550 = happySpecReduce_1  190# happyReduction_550
-happyReduction_550 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Group) -> 
-	happyIn204
-		 (Loc happy_var_1 "group"
-	)}
-
-happyReduce_551 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_551 = happySpecReduce_1  190# happyReduction_551
-happyReduction_551 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> 
-	happyIn204
-		 (Loc happy_var_1 "hiding"
-	)}
-
-happyReduce_552 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_552 = happySpecReduce_1  190# happyReduction_552
-happyReduction_552 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> 
-	happyIn204
-		 (Loc happy_var_1 "if"
-	)}
-
-happyReduce_553 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_553 = happySpecReduce_1  190# happyReduction_553
-happyReduction_553 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> 
-	happyIn204
-		 (Loc happy_var_1 "import"
-	)}
-
-happyReduce_554 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_554 = happySpecReduce_1  190# happyReduction_554
-happyReduction_554 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_In) -> 
-	happyIn204
-		 (Loc happy_var_1 "in"
-	)}
-
-happyReduce_555 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_555 = happySpecReduce_1  190# happyReduction_555
-happyReduction_555 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> 
-	happyIn204
-		 (Loc happy_var_1 "infix"
-	)}
-
-happyReduce_556 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_556 = happySpecReduce_1  190# happyReduction_556
-happyReduction_556 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> 
-	happyIn204
-		 (Loc happy_var_1 "infixl"
-	)}
-
-happyReduce_557 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_557 = happySpecReduce_1  190# happyReduction_557
-happyReduction_557 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> 
-	happyIn204
-		 (Loc happy_var_1 "infixr"
-	)}
-
-happyReduce_558 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_558 = happySpecReduce_1  190# happyReduction_558
-happyReduction_558 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> 
-	happyIn204
-		 (Loc happy_var_1 "instance"
-	)}
-
-happyReduce_559 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_559 = happySpecReduce_1  190# happyReduction_559
-happyReduction_559 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> 
-	happyIn204
-		 (Loc happy_var_1 "let"
-	)}
-
-happyReduce_560 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_560 = happySpecReduce_1  190# happyReduction_560
-happyReduction_560 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> 
-	happyIn204
-		 (Loc happy_var_1 "mdo"
-	)}
-
-happyReduce_561 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_561 = happySpecReduce_1  190# happyReduction_561
-happyReduction_561 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> 
-	happyIn204
-		 (Loc happy_var_1 "module"
-	)}
-
-happyReduce_562 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_562 = happySpecReduce_1  190# happyReduction_562
-happyReduction_562 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> 
-	happyIn204
-		 (Loc happy_var_1 "newtype"
-	)}
-
-happyReduce_563 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_563 = happySpecReduce_1  190# happyReduction_563
-happyReduction_563 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Of) -> 
-	happyIn204
-		 (Loc happy_var_1 "of"
-	)}
-
-happyReduce_564 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_564 = happySpecReduce_1  190# happyReduction_564
-happyReduction_564 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> 
-	happyIn204
-		 (Loc happy_var_1 "proc"
-	)}
-
-happyReduce_565 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_565 = happySpecReduce_1  190# happyReduction_565
-happyReduction_565 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> 
-	happyIn204
-		 (Loc happy_var_1 "rec"
-	)}
-
-happyReduce_566 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_566 = happySpecReduce_1  190# happyReduction_566
-happyReduction_566 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	happyIn204
-		 (Loc happy_var_1 "then"
-	)}
-
-happyReduce_567 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_567 = happySpecReduce_1  190# happyReduction_567
-happyReduction_567 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Using) -> 
-	happyIn204
-		 (Loc happy_var_1 "using"
-	)}
-
-happyReduce_568 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_568 = happySpecReduce_1  190# happyReduction_568
-happyReduction_568 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> 
-	happyIn204
-		 (Loc happy_var_1 "where"
-	)}
-
-happyReduce_569 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_569 = happySpecReduce_1  190# happyReduction_569
-happyReduction_569 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> 
-	happyIn204
-		 (Loc happy_var_1 "qualified"
-	)}
-
-happyReduce_570 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_570 = happySpecReduce_2  191# happyReduction_570
-happyReduction_570 happy_x_2
-	happy_x_1
-	 =  case happyOut205 happy_x_1 of { happy_var_1 -> 
-	case happyOut206 happy_x_2 of { happy_var_2 -> 
-	happyIn205
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_571 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_571 = happySpecReduce_0  191# happyReduction_571
-happyReduction_571  =  happyIn205
-		 ([]
-	)
-
-happyReduce_572 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_572 = happySpecReduce_3  192# happyReduction_572
-happyReduction_572 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut202 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> 
-	case happyOut187 happy_x_3 of { happy_var_3 -> 
-	happyIn206
-		 (XAttr (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_573 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_573 = happySpecReduce_1  193# happyReduction_573
-happyReduction_573 happy_x_1
-	 =  case happyOut187 happy_x_1 of { happy_var_1 -> 
-	happyIn207
-		 (Just happy_var_1
-	)}
-
-happyReduce_574 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_574 = happySpecReduce_0  193# happyReduction_574
-happyReduction_574  =  happyIn207
-		 (Nothing
-	)
-
-happyReduce_575 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_575 = happySpecReduce_1  194# happyReduction_575
-happyReduction_575 happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	happyIn208
-		 (\l -> List l [happy_var_1]
-	)}
-
-happyReduce_576 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_576 = happySpecReduce_1  194# happyReduction_576
-happyReduction_576 happy_x_1
-	 =  case happyOut209 happy_x_1 of { happy_var_1 -> 
-	happyIn208
-		 (\l -> let (ps,ss) = happy_var_1 in List (l <** reverse ss) (reverse ps)
-	)}
-
-happyReduce_577 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_577 = happySpecReduce_2  194# happyReduction_577
-happyReduction_577 happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> 
-	happyIn208
-		 (\l -> EnumFrom       (l <** [happy_var_2]) happy_var_1
-	)}}
-
-happyReduce_578 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_578 = happyReduce 4# 194# happyReduction_578
-happyReduction_578 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> 
-	happyIn208
-		 (\l -> EnumFromThen   (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_579 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_579 = happySpecReduce_3  194# happyReduction_579
-happyReduction_579 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	happyIn208
-		 (\l -> EnumFromTo     (l <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_580 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_580 = happyReduce 5# 194# happyReduction_580
-happyReduction_580 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> 
-	case happyOut175 happy_x_5 of { happy_var_5 -> 
-	happyIn208
-		 (\l -> EnumFromThenTo (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 happy_var_5
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_581 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_581 = happySpecReduce_3  194# happyReduction_581
-happyReduction_581 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut210 happy_x_3 of { happy_var_3 -> 
-	happyIn208
-		 (\l -> let (stss, ss) = happy_var_3 in ParComp (l <** (happy_var_2:ss)) happy_var_1 (reverse stss)
-	)}}}
-
-happyReduce_582 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_582 = happySpecReduce_3  195# happyReduction_582
-happyReduction_582 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut209 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut196 happy_x_3 of { happy_var_3 -> 
-	happyIn209
-		 (let (es, ss) = happy_var_1 in (happy_var_3 : es, happy_var_2 : ss)
-	)}}}
-
-happyReduce_583 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_583 = happySpecReduce_3  195# happyReduction_583
-happyReduction_583 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut196 happy_x_3 of { happy_var_3 -> 
-	happyIn209
-		 (([happy_var_3,happy_var_1], [happy_var_2])
-	)}}}
-
-happyReduce_584 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_584 = happySpecReduce_3  196# happyReduction_584
-happyReduction_584 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut210 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut211 happy_x_3 of { happy_var_3 -> 
-	happyIn210
-		 (let { (stss, ss1) = happy_var_1;
-                                              (sts, ss2) = happy_var_3 }
-                                         in (reverse sts : stss, ss1 ++ [happy_var_2] ++ reverse ss2)
-	)}}}
-
-happyReduce_585 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_585 = happySpecReduce_1  196# happyReduction_585
-happyReduction_585 happy_x_1
-	 =  case happyOut211 happy_x_1 of { happy_var_1 -> 
-	happyIn210
-		 (let (sts, ss) = happy_var_1 in ([reverse sts], reverse ss)
-	)}
-
-happyReduce_586 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_586 = happySpecReduce_3  197# happyReduction_586
-happyReduction_586 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut211 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut212 happy_x_3 of { happy_var_3 -> 
-	happyIn211
-		 (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss)
-	)}}}
-
-happyReduce_587 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_587 = happySpecReduce_1  197# happyReduction_587
-happyReduction_587 happy_x_1
-	 =  case happyOut212 happy_x_1 of { happy_var_1 -> 
-	happyIn211
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_588 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_588 = happySpecReduce_1  198# happyReduction_588
-happyReduction_588 happy_x_1
-	 =  case happyOut213 happy_x_1 of { happy_var_1 -> 
-	happyIn212
-		 (happy_var_1
-	)}
-
-happyReduce_589 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_589 = happySpecReduce_1  198# happyReduction_589
-happyReduction_589 happy_x_1
-	 =  case happyOut215 happy_x_1 of { happy_var_1 -> 
-	happyIn212
-		 (QualStmt (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_590 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_590 = happySpecReduce_2  199# happyReduction_590
-happyReduction_590 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	case happyOut174 happy_x_2 of { happy_var_2 -> 
-	happyIn213
-		 (ThenTrans    (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_591 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_591 = happyReduce 4# 199# happyReduction_591
-happyReduction_591 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	case happyOut174 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> 
-	case happyOut174 happy_x_4 of { happy_var_4 -> 
-	happyIn213
-		 (ThenBy       (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_592 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_592 = happyReduce 4# 199# happyReduction_592
-happyReduction_592 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> 
-	case happyOut174 happy_x_4 of { happy_var_4 -> 
-	happyIn213
-		 (GroupBy      (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_593 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_593 = happyReduce 4# 199# happyReduction_593
-happyReduction_593 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Using) -> 
-	case happyOut174 happy_x_4 of { happy_var_4 -> 
-	happyIn213
-		 (GroupUsing   (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_594 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_594 = happyReduce 6# 199# happyReduction_594
-happyReduction_594 (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 { (Loc happy_var_1 KW_Then) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> 
-	case happyOut174 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Using) -> 
-	case happyOut174 happy_x_6 of { happy_var_6 -> 
-	happyIn213
-		 (GroupByUsing (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_2,happy_var_3,happy_var_5]) happy_var_4 happy_var_6
-	) `HappyStk` happyRest}}}}}}
-
-happyReduce_595 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_595 = happySpecReduce_3  200# happyReduction_595
-happyReduction_595 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut214 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut215 happy_x_3 of { happy_var_3 -> 
-	happyIn214
-		 (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss)
-	)}}}
-
-happyReduce_596 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_596 = happySpecReduce_1  200# happyReduction_596
-happyReduction_596 happy_x_1
-	 =  case happyOut215 happy_x_1 of { happy_var_1 -> 
-	happyIn214
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_597 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_597 = happySpecReduce_3  201# happyReduction_597
-happyReduction_597 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut224 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> 
-	case happyOut174 happy_x_3 of { happy_var_3 -> 
-	happyIn215
-		 (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_598 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_598 = happySpecReduce_1  201# happyReduction_598
-happyReduction_598 happy_x_1
-	 =  case happyOut174 happy_x_1 of { happy_var_1 -> 
-	happyIn215
-		 (Qualifier (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_599 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_599 = happySpecReduce_2  201# happyReduction_599
-happyReduction_599 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> 
-	case happyOut88 happy_x_2 of { happy_var_2 -> 
-	happyIn215
-		 (LetStmt   (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_600 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_600 = happySpecReduce_0  202# happyReduction_600
-happyReduction_600  =  happyIn216
-		 (\l -> ParArray l []
-	)
-
-happyReduce_601 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_601 = happySpecReduce_1  202# happyReduction_601
-happyReduction_601 happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	happyIn216
-		 (\l -> ParArray l [happy_var_1]
-	)}
-
-happyReduce_602 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_602 = happySpecReduce_1  202# happyReduction_602
-happyReduction_602 happy_x_1
-	 =  case happyOut209 happy_x_1 of { happy_var_1 -> 
-	happyIn216
-		 (\l -> let (ps,ss) = happy_var_1 in ParArray (l <** reverse ss) (reverse ps)
-	)}
-
-happyReduce_603 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_603 = happySpecReduce_3  202# happyReduction_603
-happyReduction_603 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	happyIn216
-		 (\l -> ParArrayFromTo     (l <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_604 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_604 = happyReduce 5# 202# happyReduction_604
-happyReduction_604 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> 
-	case happyOut175 happy_x_5 of { happy_var_5 -> 
-	happyIn216
-		 (\l -> ParArrayFromThenTo (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 happy_var_5
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_605 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_605 = happySpecReduce_3  202# happyReduction_605
-happyReduction_605 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut196 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> 
-	case happyOut210 happy_x_3 of { happy_var_3 -> 
-	happyIn216
-		 (\l -> let (stss, ss) = happy_var_3 in ParArrayComp (l <** (happy_var_2:ss)) happy_var_1 (reverse stss)
-	)}}}
-
-happyReduce_606 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_606 = happySpecReduce_3  203# happyReduction_606
-happyReduction_606 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut218 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn217
-		 ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_607 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_607 = happySpecReduce_3  203# happyReduction_607
-happyReduction_607 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut272 happy_x_1 of { happy_var_1 -> 
-	case happyOut218 happy_x_2 of { happy_var_2 -> 
-	case happyOut273 happy_x_3 of { happy_var_3 -> 
-	happyIn217
-		 (let l' =  ann . last $ fst happy_var_2
-                                         in (fst happy_var_2, nIS happy_var_1 <++> l', happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_608 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_608 = happyMonadReduce 2# 203# happyReduction_608
-happyReduction_608 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightCurly) -> 
-	( do { checkEnabled EmptyCase;
-                                              return ([], happy_var_1 <^^> happy_var_2, [happy_var_1, happy_var_2]) })}})
-	) (\r -> happyReturn (happyIn217 r))
-
-happyReduce_609 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_609 = happySpecReduce_3  204# happyReduction_609
-happyReduction_609 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	case happyOut219 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn218
-		 ((reverse $ fst happy_var_2, happy_var_1 ++ snd happy_var_2 ++ happy_var_3)
-	)}}}
-
-happyReduce_610 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_610 = happySpecReduce_3  205# happyReduction_610
-happyReduction_610 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut219 happy_x_1 of { happy_var_1 -> 
-	case happyOut27 happy_x_2 of { happy_var_2 -> 
-	case happyOut220 happy_x_3 of { happy_var_3 -> 
-	happyIn219
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ happy_var_2)
-	)}}}
-
-happyReduce_611 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_611 = happySpecReduce_1  205# happyReduction_611
-happyReduction_611 happy_x_1
-	 =  case happyOut220 happy_x_1 of { happy_var_1 -> 
-	happyIn219
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_612 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_612 = happySpecReduce_3  206# happyReduction_612
-happyReduction_612 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut224 happy_x_1 of { happy_var_1 -> 
-	case happyOut221 happy_x_2 of { happy_var_2 -> 
-	case happyOut169 happy_x_3 of { happy_var_3 -> 
-	happyIn220
-		 (Alt (happy_var_1 <> happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** snd happy_var_3) happy_var_1 happy_var_2 (fst happy_var_3)
-	)}}}
-
-happyReduce_613 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_613 = happySpecReduce_2  207# happyReduction_613
-happyReduction_613 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 RightArrow) -> 
-	case happyOut174 happy_x_2 of { happy_var_2 -> 
-	happyIn221
-		 (UnGuardedRhs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_614 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_614 = happySpecReduce_1  207# happyReduction_614
-happyReduction_614 happy_x_1
-	 =  case happyOut222 happy_x_1 of { happy_var_1 -> 
-	happyIn221
-		 (GuardedRhss  (snd happy_var_1) (reverse $ fst happy_var_1)
-	)}
-
-happyReduce_615 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_615 = happySpecReduce_2  208# happyReduction_615
-happyReduction_615 happy_x_2
-	happy_x_1
-	 =  case happyOut222 happy_x_1 of { happy_var_1 -> 
-	case happyOut223 happy_x_2 of { happy_var_2 -> 
-	happyIn222
-		 ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2)
-	)}}
-
-happyReduce_616 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_616 = happySpecReduce_1  208# happyReduction_616
-happyReduction_616 happy_x_1
-	 =  case happyOut223 happy_x_1 of { happy_var_1 -> 
-	happyIn222
-		 (([happy_var_1], ann happy_var_1)
-	)}
-
-happyReduce_617 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_617 = happyMonadReduce 4# 209# happyReduction_617
-happyReduction_617 (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 { (Loc happy_var_1 Bar) -> 
-	case happyOut214 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> 
-	case happyOut174 happy_x_4 of { happy_var_4 -> 
-	( do { checkPatternGuards (fst happy_var_2);
-                                       let {l = nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])};
-                                       return (GuardedRhs l (reverse (fst happy_var_2)) happy_var_4) })}}}})
-	) (\r -> happyReturn (happyIn223 r))
-
-happyReduce_618 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_618 = happyMonadReduce 1# 210# happyReduction_618
-happyReduction_618 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut175 happy_x_1 of { happy_var_1 -> 
-	( checkPattern happy_var_1)})
-	) (\r -> happyReturn (happyIn224 r))
-
-happyReduce_619 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_619 = happyMonadReduce 2# 210# happyReduction_619
-happyReduction_619 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	case happyOut187 happy_x_2 of { happy_var_2 -> 
-	( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}})
-	) (\r -> happyReturn (happyIn224 r))
-
-happyReduce_620 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_620 = happySpecReduce_3  211# happyReduction_620
-happyReduction_620 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut226 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn225
-		 ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_621 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_621 = happySpecReduce_3  211# happyReduction_621
-happyReduction_621 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut272 happy_x_1 of { happy_var_1 -> 
-	case happyOut226 happy_x_2 of { happy_var_2 -> 
-	case happyOut273 happy_x_3 of { happy_var_3 -> 
-	happyIn225
-		 (let l' =  ann . last $ fst happy_var_2
-                                           in (fst happy_var_2, nIS happy_var_1 <++> l', happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_622 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_622 = happySpecReduce_3  212# happyReduction_622
-happyReduction_622 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	case happyOut227 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn226
-		 ((reverse $ fst happy_var_2, happy_var_1 ++ snd happy_var_2 ++ happy_var_3)
-	)}}}
-
-happyReduce_623 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_623 = happySpecReduce_3  213# happyReduction_623
-happyReduction_623 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut227 happy_x_1 of { happy_var_1 -> 
-	case happyOut28 happy_x_2 of { happy_var_2 -> 
-	case happyOut223 happy_x_3 of { happy_var_3 -> 
-	happyIn227
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ happy_var_2)
-	)}}}
-
-happyReduce_624 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_624 = happySpecReduce_1  213# happyReduction_624
-happyReduction_624 happy_x_1
-	 =  case happyOut223 happy_x_1 of { happy_var_1 -> 
-	happyIn227
-		 (([happy_var_1], [])
-	)}
-
-happyReduce_625 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_625 = happySpecReduce_3  214# happyReduction_625
-happyReduction_625 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut229 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> 
-	happyIn228
-		 ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_626 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_626 = happySpecReduce_3  214# happyReduction_626
-happyReduction_626 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut272 happy_x_1 of { happy_var_1 -> 
-	case happyOut229 happy_x_2 of { happy_var_2 -> 
-	case happyOut273 happy_x_3 of { happy_var_3 -> 
-	happyIn228
-		 (let l' =  ann . last $ fst happy_var_2
-                                         in (fst happy_var_2, nIS happy_var_1 <++> l', happy_var_1:snd happy_var_2 ++ [happy_var_3])
-	)}}}
-
-happyReduce_627 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_627 = happySpecReduce_2  215# happyReduction_627
-happyReduction_627 happy_x_2
-	happy_x_1
-	 =  case happyOut231 happy_x_1 of { happy_var_1 -> 
-	case happyOut230 happy_x_2 of { happy_var_2 -> 
-	happyIn229
-		 ((happy_var_1 : fst happy_var_2, snd happy_var_2)
-	)}}
-
-happyReduce_628 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_628 = happySpecReduce_2  215# happyReduction_628
-happyReduction_628 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> 
-	case happyOut229 happy_x_2 of { happy_var_2 -> 
-	happyIn229
-		 ((fst happy_var_2, happy_var_1 : snd happy_var_2)
-	)}}
-
-happyReduce_629 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_629 = happySpecReduce_0  215# happyReduction_629
-happyReduction_629  =  happyIn229
-		 (([],[])
-	)
-
-happyReduce_630 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_630 = happySpecReduce_2  216# happyReduction_630
-happyReduction_630 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> 
-	case happyOut229 happy_x_2 of { happy_var_2 -> 
-	happyIn230
-		 ((fst happy_var_2, happy_var_1 : snd happy_var_2)
-	)}}
-
-happyReduce_631 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_631 = happySpecReduce_0  216# happyReduction_631
-happyReduction_631  =  happyIn230
-		 (([],[])
-	)
-
-happyReduce_632 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_632 = happySpecReduce_2  217# happyReduction_632
-happyReduction_632 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> 
-	case happyOut88 happy_x_2 of { happy_var_2 -> 
-	happyIn231
-		 (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2
-	)}}
-
-happyReduce_633 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_633 = happySpecReduce_3  217# happyReduction_633
-happyReduction_633 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut224 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> 
-	case happyOut174 happy_x_3 of { happy_var_3 -> 
-	happyIn231
-		 (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_634 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_634 = happySpecReduce_1  217# happyReduction_634
-happyReduction_634 happy_x_1
-	 =  case happyOut174 happy_x_1 of { happy_var_1 -> 
-	happyIn231
-		 (Qualifier (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_635 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_635 = happySpecReduce_2  217# happyReduction_635
-happyReduction_635 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> 
-	case happyOut228 happy_x_2 of { happy_var_2 -> 
-	happyIn231
-		 (let (stms,inf,ss) = happy_var_2 in RecStmt (nIS happy_var_1 <++> inf <** happy_var_1:ss) stms
-	)}}
-
-happyReduce_636 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_636 = happySpecReduce_3  218# happyReduction_636
-happyReduction_636 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut233 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut232 happy_x_3 of { happy_var_3 -> 
-	happyIn232
-		 (let (fbs, ss) = happy_var_3 in (happy_var_1 : fbs, happy_var_2 : ss)
-	)}}}
-
-happyReduce_637 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_637 = happySpecReduce_1  218# happyReduction_637
-happyReduction_637 happy_x_1
-	 =  case happyOut233 happy_x_1 of { happy_var_1 -> 
-	happyIn232
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_638 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_638 = happyMonadReduce 1# 218# happyReduction_638
-happyReduction_638 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 DotDot) -> 
-	( do { checkEnabled RecordWildCards `atSrcLoc` (getPointLoc happy_var_1);
-                                              return ([FieldWildcard (nIS happy_var_1)], []) })})
-	) (\r -> happyReturn (happyIn232 r))
-
-happyReduce_639 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_639 = happySpecReduce_3  219# happyReduction_639
-happyReduction_639 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut243 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> 
-	case happyOut175 happy_x_3 of { happy_var_3 -> 
-	happyIn233
-		 (FieldUpdate (happy_var_1 <>happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_640 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_640 = happyMonadReduce 1# 219# happyReduction_640
-happyReduction_640 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut243 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled NamedFieldPuns >> checkQualOrUnQual happy_var_1 >>= return . FieldPun (ann happy_var_1))})
-	) (\r -> happyReturn (happyIn233 r))
-
-happyReduce_641 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_641 = happySpecReduce_3  220# happyReduction_641
-happyReduction_641 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	case happyOut235 happy_x_2 of { happy_var_2 -> 
-	case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn234
-		 ((reverse (fst happy_var_2), reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3)
-	)}}}
-
-happyReduce_642 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_642 = happySpecReduce_3  221# happyReduction_642
-happyReduction_642 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut235 happy_x_1 of { happy_var_1 -> 
-	case happyOut27 happy_x_2 of { happy_var_2 -> 
-	case happyOut236 happy_x_3 of { happy_var_3 -> 
-	happyIn235
-		 ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2)
-	)}}}
-
-happyReduce_643 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_643 = happySpecReduce_1  221# happyReduction_643
-happyReduction_643 happy_x_1
-	 =  case happyOut236 happy_x_1 of { happy_var_1 -> 
-	happyIn235
-		 (([happy_var_1],[])
-	)}
-
-happyReduce_644 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_644 = happySpecReduce_3  222# happyReduction_644
-happyReduction_644 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut244 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> 
-	case happyOut174 happy_x_3 of { happy_var_3 -> 
-	happyIn236
-		 (IPBind (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_645 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_645 = happySpecReduce_1  223# happyReduction_645
-happyReduction_645 happy_x_1
-	 =  case happyOut240 happy_x_1 of { happy_var_1 -> 
-	happyIn237
-		 (happy_var_1
-	)}
-
-happyReduce_646 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_646 = happySpecReduce_1  223# happyReduction_646
-happyReduction_646 happy_x_1
-	 =  case happyOut247 happy_x_1 of { happy_var_1 -> 
-	happyIn237
-		 (Con (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_647 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_647 = happySpecReduce_1  224# happyReduction_647
-happyReduction_647 happy_x_1
-	 =  case happyOut239 happy_x_1 of { happy_var_1 -> 
-	happyIn238
-		 (happy_var_1
-	)}
-
-happyReduce_648 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_648 = happySpecReduce_1  224# happyReduction_648
-happyReduction_648 happy_x_1
-	 =  case happyOut247 happy_x_1 of { happy_var_1 -> 
-	happyIn238
-		 (Con (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_649 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_649 = happySpecReduce_2  225# happyReduction_649
-happyReduction_649 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> 
-	happyIn239
-		 (p_unit_con              (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_650 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_650 = happySpecReduce_2  225# happyReduction_650
-happyReduction_650 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> 
-	happyIn239
-		 (p_unboxed_singleton_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2])
-	)}}
-
-happyReduce_651 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_651 = happySpecReduce_3  225# happyReduction_651
-happyReduction_651 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> 
-	case happyOut193 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> 
-	happyIn239
-		 (p_tuple_con             (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Unboxed (length happy_var_2)
-	)}}}
-
-happyReduce_652 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_652 = happySpecReduce_3  225# happyReduction_652
-happyReduction_652 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut193 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn239
-		 (p_tuple_con             (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Boxed (length happy_var_2)
-	)}}}
-
-happyReduce_653 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_653 = happySpecReduce_2  226# happyReduction_653
-happyReduction_653 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> 
-	happyIn240
-		 (List                    (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) []
-	)}}
-
-happyReduce_654 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_654 = happySpecReduce_1  226# happyReduction_654
-happyReduction_654 happy_x_1
-	 =  case happyOut239 happy_x_1 of { happy_var_1 -> 
-	happyIn240
-		 (happy_var_1
-	)}
-
-happyReduce_655 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_655 = happySpecReduce_1  227# happyReduction_655
-happyReduction_655 happy_x_1
-	 =  case happyOut260 happy_x_1 of { happy_var_1 -> 
-	happyIn241
-		 (happy_var_1
-	)}
-
-happyReduce_656 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_656 = happySpecReduce_3  227# happyReduction_656
-happyReduction_656 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut268 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn241
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_657 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_657 = happySpecReduce_1  228# happyReduction_657
-happyReduction_657 happy_x_1
-	 =  case happyOut259 happy_x_1 of { happy_var_1 -> 
-	happyIn242
-		 (happy_var_1
-	)}
-
-happyReduce_658 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_658 = happySpecReduce_3  228# happyReduction_658
-happyReduction_658 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut268 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn242
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_659 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_659 = happySpecReduce_1  229# happyReduction_659
-happyReduction_659 happy_x_1
-	 =  case happyOut258 happy_x_1 of { happy_var_1 -> 
-	happyIn243
-		 (happy_var_1
-	)}
-
-happyReduce_660 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_660 = happySpecReduce_3  229# happyReduction_660
-happyReduction_660 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut266 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn243
-		 (updateQNameLoc (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_661 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_661 = happySpecReduce_1  230# happyReduction_661
-happyReduction_661 happy_x_1
-	 =  case happyOut261 happy_x_1 of { happy_var_1 -> 
-	happyIn244
-		 (happy_var_1
-	)}
-
-happyReduce_662 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_662 = happySpecReduce_1  231# happyReduction_662
-happyReduction_662 happy_x_1
-	 =  case happyOut263 happy_x_1 of { happy_var_1 -> 
-	happyIn245
-		 (happy_var_1
-	)}
-
-happyReduce_663 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_663 = happySpecReduce_3  231# happyReduction_663
-happyReduction_663 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut265 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn245
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_664 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_664 = happySpecReduce_1  232# happyReduction_664
-happyReduction_664 happy_x_1
-	 =  case happyOut245 happy_x_1 of { happy_var_1 -> 
-	happyIn246
-		 (([], [happy_var_1])
-	)}
-
-happyReduce_665 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_665 = happySpecReduce_3  232# happyReduction_665
-happyReduction_665 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut245 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut246 happy_x_3 of { happy_var_3 -> 
-	happyIn246
-		 (let (ss, cs) = happy_var_3
-                                in (happy_var_2 : ss, happy_var_1 :cs)
-	)}}}
-
-happyReduce_666 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_666 = happySpecReduce_1  233# happyReduction_666
-happyReduction_666 happy_x_1
-	 =  case happyOut262 happy_x_1 of { happy_var_1 -> 
-	happyIn247
-		 (happy_var_1
-	)}
-
-happyReduce_667 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_667 = happySpecReduce_3  233# happyReduction_667
-happyReduction_667 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> 
-	case happyOut256 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> 
-	happyIn247
-		 (updateQNameLoc (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_668 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_668 = happySpecReduce_1  234# happyReduction_668
-happyReduction_668 happy_x_1
-	 =  case happyOut268 happy_x_1 of { happy_var_1 -> 
-	happyIn248
-		 (happy_var_1
-	)}
-
-happyReduce_669 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_669 = happySpecReduce_3  234# happyReduction_669
-happyReduction_669 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut260 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn248
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_670 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_670 = happySpecReduce_1  235# happyReduction_670
-happyReduction_670 happy_x_1
-	 =  case happyOut266 happy_x_1 of { happy_var_1 -> 
-	happyIn249
-		 (happy_var_1
-	)}
-
-happyReduce_671 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_671 = happySpecReduce_3  235# happyReduction_671
-happyReduction_671 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut258 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn249
-		 (updateQNameLoc (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_672 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_672 = happySpecReduce_1  236# happyReduction_672
-happyReduction_672 happy_x_1
-	 =  case happyOut267 happy_x_1 of { happy_var_1 -> 
-	happyIn250
-		 (happy_var_1
-	)}
-
-happyReduce_673 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_673 = happySpecReduce_3  236# happyReduction_673
-happyReduction_673 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut258 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn250
-		 (updateQNameLoc (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_674 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_674 = happySpecReduce_1  237# happyReduction_674
-happyReduction_674 happy_x_1
-	 =  case happyOut265 happy_x_1 of { happy_var_1 -> 
-	happyIn251
-		 (happy_var_1
-	)}
-
-happyReduce_675 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_675 = happySpecReduce_3  237# happyReduction_675
-happyReduction_675 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut263 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn251
-		 (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2
-	)}}}
-
-happyReduce_676 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_676 = happySpecReduce_1  238# happyReduction_676
-happyReduction_676 happy_x_1
-	 =  case happyOut256 happy_x_1 of { happy_var_1 -> 
-	happyIn252
-		 (happy_var_1
-	)}
-
-happyReduce_677 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_677 = happySpecReduce_3  238# happyReduction_677
-happyReduction_677 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut262 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn252
-		 (updateQNameLoc (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_678 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_678 = happySpecReduce_1  239# happyReduction_678
-happyReduction_678 happy_x_1
-	 =  case happyOut248 happy_x_1 of { happy_var_1 -> 
-	happyIn253
-		 (VarOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_679 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_679 = happySpecReduce_1  239# happyReduction_679
-happyReduction_679 happy_x_1
-	 =  case happyOut251 happy_x_1 of { happy_var_1 -> 
-	happyIn253
-		 (ConOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_680 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_680 = happySpecReduce_1  240# happyReduction_680
-happyReduction_680 happy_x_1
-	 =  case happyOut249 happy_x_1 of { happy_var_1 -> 
-	happyIn254
-		 (QVarOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_681 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_681 = happySpecReduce_1  240# happyReduction_681
-happyReduction_681 happy_x_1
-	 =  case happyOut252 happy_x_1 of { happy_var_1 -> 
-	happyIn254
-		 (QConOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_682 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_682 = happySpecReduce_1  241# happyReduction_682
-happyReduction_682 happy_x_1
-	 =  case happyOut250 happy_x_1 of { happy_var_1 -> 
-	happyIn255
-		 (QVarOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_683 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_683 = happySpecReduce_1  241# happyReduction_683
-happyReduction_683 happy_x_1
-	 =  case happyOut252 happy_x_1 of { happy_var_1 -> 
-	happyIn255
-		 (QConOp (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_684 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_684 = happySpecReduce_1  242# happyReduction_684
-happyReduction_684 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Colon) -> 
-	happyIn256
-		 (list_cons_name (nIS happy_var_1)
-	)}
-
-happyReduce_685 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_685 = happySpecReduce_1  242# happyReduction_685
-happyReduction_685 happy_x_1
-	 =  case happyOut264 happy_x_1 of { happy_var_1 -> 
-	happyIn256
-		 (happy_var_1
-	)}
-
-happyReduce_686 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_686 = happySpecReduce_1  243# happyReduction_686
-happyReduction_686 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn257
-		 (let Loc l (LabelVarId v) = happy_var_1 in OverloadedLabel
-                                                                     (nIS l) v
-	)}
-
-happyReduce_687 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_687 = happySpecReduce_1  244# happyReduction_687
-happyReduction_687 happy_x_1
-	 =  case happyOut260 happy_x_1 of { happy_var_1 -> 
-	happyIn258
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_688 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_688 = happySpecReduce_1  244# happyReduction_688
-happyReduction_688 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn258
-		 (let {Loc l (QVarId q) = happy_var_1; nis = nIS l}
-                                 in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q))
-	)}
-
-happyReduce_689 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_689 = happySpecReduce_1  244# happyReduction_689
-happyReduction_689 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Underscore) -> 
-	happyIn258
-		 (hole_name       (nIS happy_var_1)
-	)}
-
-happyReduce_690 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_690 = happySpecReduce_1  245# happyReduction_690
-happyReduction_690 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn259
-		 (let Loc l (VarId v) = happy_var_1 in Ident (nIS l) v
-	)}
-
-happyReduce_691 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_691 = happySpecReduce_1  245# happyReduction_691
-happyReduction_691 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> 
-	happyIn259
-		 (as_name         (nIS happy_var_1)
-	)}
-
-happyReduce_692 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_692 = happySpecReduce_1  245# happyReduction_692
-happyReduction_692 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> 
-	happyIn259
-		 (qualified_name  (nIS happy_var_1)
-	)}
-
-happyReduce_693 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_693 = happySpecReduce_1  245# happyReduction_693
-happyReduction_693 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> 
-	happyIn259
-		 (hiding_name     (nIS happy_var_1)
-	)}
-
-happyReduce_694 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_694 = happySpecReduce_1  245# happyReduction_694
-happyReduction_694 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> 
-	happyIn259
-		 (export_name     (nIS happy_var_1)
-	)}
-
-happyReduce_695 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_695 = happySpecReduce_1  245# happyReduction_695
-happyReduction_695 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> 
-	happyIn259
-		 (stdcall_name    (nIS happy_var_1)
-	)}
-
-happyReduce_696 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_696 = happySpecReduce_1  245# happyReduction_696
-happyReduction_696 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> 
-	happyIn259
-		 (ccall_name      (nIS happy_var_1)
-	)}
-
-happyReduce_697 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_697 = happySpecReduce_1  245# happyReduction_697
-happyReduction_697 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CPlusPlus) -> 
-	happyIn259
-		 (cplusplus_name  (nIS happy_var_1)
-	)}
-
-happyReduce_698 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_698 = happySpecReduce_1  245# happyReduction_698
-happyReduction_698 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_DotNet) -> 
-	happyIn259
-		 (dotnet_name     (nIS happy_var_1)
-	)}
-
-happyReduce_699 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_699 = happySpecReduce_1  245# happyReduction_699
-happyReduction_699 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Jvm) -> 
-	happyIn259
-		 (jvm_name        (nIS happy_var_1)
-	)}
-
-happyReduce_700 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_700 = happySpecReduce_1  245# happyReduction_700
-happyReduction_700 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Js) -> 
-	happyIn259
-		 (js_name         (nIS happy_var_1)
-	)}
-
-happyReduce_701 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_701 = happySpecReduce_1  245# happyReduction_701
-happyReduction_701 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_JavaScript) -> 
-	happyIn259
-		 (javascript_name (nIS happy_var_1)
-	)}
-
-happyReduce_702 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_702 = happySpecReduce_1  245# happyReduction_702
-happyReduction_702 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CApi) -> 
-	happyIn259
-		 (capi_name       (nIS happy_var_1)
-	)}
-
-happyReduce_703 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_703 = happySpecReduce_1  245# happyReduction_703
-happyReduction_703 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Stock) -> 
-	happyIn259
-		 (stock_name      (nIS happy_var_1)
-	)}
-
-happyReduce_704 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_704 = happySpecReduce_1  245# happyReduction_704
-happyReduction_704 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Anyclass) -> 
-	happyIn259
-		 (anyclass_name   (nIS happy_var_1)
-	)}
-
-happyReduce_705 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_705 = happySpecReduce_1  246# happyReduction_705
-happyReduction_705 happy_x_1
-	 =  case happyOut259 happy_x_1 of { happy_var_1 -> 
-	happyIn260
-		 (happy_var_1
-	)}
-
-happyReduce_706 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_706 = happySpecReduce_1  246# happyReduction_706
-happyReduction_706 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> 
-	happyIn260
-		 (safe_name       (nIS happy_var_1)
-	)}
-
-happyReduce_707 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_707 = happySpecReduce_1  246# happyReduction_707
-happyReduction_707 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> 
-	happyIn260
-		 (unsafe_name     (nIS happy_var_1)
-	)}
-
-happyReduce_708 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_708 = happySpecReduce_1  246# happyReduction_708
-happyReduction_708 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Interruptible) -> 
-	happyIn260
-		 (interruptible_name (nIS happy_var_1)
-	)}
-
-happyReduce_709 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_709 = happySpecReduce_1  246# happyReduction_709
-happyReduction_709 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> 
-	happyIn260
-		 (threadsafe_name (nIS happy_var_1)
-	)}
-
-happyReduce_710 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_710 = happySpecReduce_1  246# happyReduction_710
-happyReduction_710 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	happyIn260
-		 (forall_name	  (nIS happy_var_1)
-	)}
-
-happyReduce_711 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_711 = happySpecReduce_1  246# happyReduction_711
-happyReduction_711 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Family) -> 
-	happyIn260
-		 (family_name     (nIS happy_var_1)
-	)}
-
-happyReduce_712 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_712 = happySpecReduce_1  246# happyReduction_712
-happyReduction_712 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Role) -> 
-	happyIn260
-		 (role_name  (nIS happy_var_1)
-	)}
-
-happyReduce_713 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_713 = happySpecReduce_1  247# happyReduction_713
-happyReduction_713 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn261
-		 (let Loc l (IDupVarId i) = happy_var_1 in IPDup (nIS l) i
-	)}
-
-happyReduce_714 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_714 = happySpecReduce_1  247# happyReduction_714
-happyReduction_714 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn261
-		 (let Loc l (ILinVarId i) = happy_var_1 in IPLin (nIS l) i
-	)}
-
-happyReduce_715 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_715 = happySpecReduce_1  248# happyReduction_715
-happyReduction_715 happy_x_1
-	 =  case happyOut263 happy_x_1 of { happy_var_1 -> 
-	happyIn262
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_716 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_716 = happySpecReduce_1  248# happyReduction_716
-happyReduction_716 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn262
-		 (let {Loc l (QConId q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q))
-	)}
-
-happyReduce_717 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_717 = happySpecReduce_1  249# happyReduction_717
-happyReduction_717 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn263
-		 (let Loc l (ConId c) = happy_var_1 in Ident (nIS l) c
-	)}
-
-happyReduce_718 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_718 = happySpecReduce_1  250# happyReduction_718
-happyReduction_718 happy_x_1
-	 =  case happyOut265 happy_x_1 of { happy_var_1 -> 
-	happyIn264
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_719 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_719 = happySpecReduce_1  250# happyReduction_719
-happyReduction_719 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn264
-		 (let {Loc l (QConSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q))
-	)}
-
-happyReduce_720 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_720 = happySpecReduce_1  251# happyReduction_720
-happyReduction_720 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn265
-		 (let Loc l (ConSym c) = happy_var_1 in Symbol (nIS l) c
-	)}
-
-happyReduce_721 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_721 = happySpecReduce_1  252# happyReduction_721
-happyReduction_721 happy_x_1
-	 =  case happyOut268 happy_x_1 of { happy_var_1 -> 
-	happyIn266
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_722 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_722 = happySpecReduce_1  252# happyReduction_722
-happyReduction_722 happy_x_1
-	 =  case happyOut270 happy_x_1 of { happy_var_1 -> 
-	happyIn266
-		 (happy_var_1
-	)}
-
-happyReduce_723 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_723 = happySpecReduce_1  253# happyReduction_723
-happyReduction_723 happy_x_1
-	 =  case happyOut269 happy_x_1 of { happy_var_1 -> 
-	happyIn267
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_724 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_724 = happySpecReduce_1  253# happyReduction_724
-happyReduction_724 happy_x_1
-	 =  case happyOut270 happy_x_1 of { happy_var_1 -> 
-	happyIn267
-		 (happy_var_1
-	)}
-
-happyReduce_725 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_725 = happySpecReduce_1  254# happyReduction_725
-happyReduction_725 happy_x_1
-	 =  case happyOut269 happy_x_1 of { happy_var_1 -> 
-	happyIn268
-		 (happy_var_1
-	)}
-
-happyReduce_726 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_726 = happySpecReduce_1  254# happyReduction_726
-happyReduction_726 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> 
-	happyIn268
-		 (minus_name (nIS happy_var_1)
-	)}
-
-happyReduce_727 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_727 = happySpecReduce_1  255# happyReduction_727
-happyReduction_727 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn269
-		 (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v
-	)}
-
-happyReduce_728 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_728 = happySpecReduce_1  255# happyReduction_728
-happyReduction_728 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> 
-	happyIn269
-		 (bang_name (nIS happy_var_1)
-	)}
-
-happyReduce_729 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_729 = happySpecReduce_1  255# happyReduction_729
-happyReduction_729 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> 
-	happyIn269
-		 (dot_name  (nIS happy_var_1)
-	)}
-
-happyReduce_730 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_730 = happySpecReduce_1  255# happyReduction_730
-happyReduction_730 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> 
-	happyIn269
-		 (star_name (nIS happy_var_1)
-	)}
-
-happyReduce_731 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_731 = happySpecReduce_1  256# happyReduction_731
-happyReduction_731 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn270
-		 (let {Loc l (QVarSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q))
-	)}
-
-happyReduce_732 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_732 = happySpecReduce_1  257# happyReduction_732
-happyReduction_732 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (IntTok        (i,raw)) = happy_var_1 in Int        (nIS l) i raw
-	)}
-
-happyReduce_733 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_733 = happySpecReduce_1  257# happyReduction_733
-happyReduction_733 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (Character     (c,raw)) = happy_var_1 in Char       (nIS l) c raw
-	)}
-
-happyReduce_734 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_734 = happySpecReduce_1  257# happyReduction_734
-happyReduction_734 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (FloatTok      (r,raw)) = happy_var_1 in Frac       (nIS l) r raw
-	)}
-
-happyReduce_735 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_735 = happySpecReduce_1  257# happyReduction_735
-happyReduction_735 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (StringTok     (s,raw)) = happy_var_1 in String     (nIS l) s raw
-	)}
-
-happyReduce_736 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_736 = happySpecReduce_1  257# happyReduction_736
-happyReduction_736 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (IntTokHash    (i,raw)) = happy_var_1 in PrimInt    (nIS l) i raw
-	)}
-
-happyReduce_737 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_737 = happySpecReduce_1  257# happyReduction_737
-happyReduction_737 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (WordTokHash   (w,raw)) = happy_var_1 in PrimWord   (nIS l) w raw
-	)}
-
-happyReduce_738 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_738 = happySpecReduce_1  257# happyReduction_738
-happyReduction_738 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (FloatTokHash  (f,raw)) = happy_var_1 in PrimFloat  (nIS l) f raw
-	)}
-
-happyReduce_739 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_739 = happySpecReduce_1  257# happyReduction_739
-happyReduction_739 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (DoubleTokHash (d,raw)) = happy_var_1 in PrimDouble (nIS l) d raw
-	)}
-
-happyReduce_740 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_740 = happySpecReduce_1  257# happyReduction_740
-happyReduction_740 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (CharacterHash (c,raw)) = happy_var_1 in PrimChar   (nIS l) c raw
-	)}
-
-happyReduce_741 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_741 = happySpecReduce_1  257# happyReduction_741
-happyReduction_741 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn271
-		 (let Loc l (StringHash    (s,raw)) = happy_var_1 in PrimString (nIS l) s raw
-	)}
-
-happyReduce_742 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_742 = happyMonadReduce 0# 258# happyReduction_742
-happyReduction_742 (happyRest) tk
-	 = happyThen ((( pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -}))
-	) (\r -> happyReturn (happyIn272 r))
-
-happyReduce_743 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_743 = happySpecReduce_1  259# happyReduction_743
-happyReduction_743 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 VRightCurly) -> 
-	happyIn273
-		 (happy_var_1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -}
-	)}
-
-happyReduce_744 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_744 = happyMonadReduce 1# 259# happyReduction_744
-happyReduction_744 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((( popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -}))
-	) (\r -> happyReturn (happyIn273 r))
-
-happyReduce_745 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_745 = happyMonadReduce 1# 260# happyReduction_745
-happyReduction_745 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut275 happy_x_1 of { happy_var_1 -> 
-	( checkEnabled PatternSynonyms >> return happy_var_1)})
-	) (\r -> happyReturn (happyIn274 r))
-
-happyReduce_746 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_746 = happyReduce 4# 261# happyReduction_746
-happyReduction_746 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Pattern) -> 
-	case happyOut276 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> 
-	case happyOut224 happy_x_4 of { happy_var_4 -> 
-	happyIn275
-		 (let l = nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]
-             in PatSyn l happy_var_2 happy_var_4 ImplicitBidirectional
-	) `HappyStk` happyRest}}}}
-
-happyReduce_747 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_747 = happyReduce 4# 261# happyReduction_747
-happyReduction_747 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Pattern) -> 
-	case happyOut276 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 LeftArrow) -> 
-	case happyOut224 happy_x_4 of { happy_var_4 -> 
-	happyIn275
-		 (let l = nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]
-               in PatSyn l happy_var_2 happy_var_4 Unidirectional
-	) `HappyStk` happyRest}}}}
-
-happyReduce_748 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_748 = happyReduce 5# 261# happyReduction_748
-happyReduction_748 (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 { (Loc happy_var_1 KW_Pattern) -> 
-	case happyOut276 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 LeftArrow) -> 
-	case happyOut224 happy_x_4 of { happy_var_4 -> 
-	case happyOut279 happy_x_5 of { happy_var_5 -> 
-	happyIn275
-		 (let l = nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1, happy_var_3]
-             in PatSyn l happy_var_2 happy_var_4 happy_var_5
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_749 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_749 = happySpecReduce_2  262# happyReduction_749
-happyReduction_749 happy_x_2
-	happy_x_1
-	 =  case happyOut245 happy_x_1 of { happy_var_1 -> 
-	case happyOut277 happy_x_2 of { happy_var_2 -> 
-	happyIn276
-		 (let l = case happy_var_2 of
-                                 [] -> ann happy_var_1
-                                 (_:_) -> ann happy_var_1 <++> (ann $ last happy_var_2)
-                        in PApp l (UnQual (ann happy_var_1) happy_var_1) happy_var_2
-	)}}
-
-happyReduce_750 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_750 = happySpecReduce_3  262# happyReduction_750
-happyReduction_750 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut260 happy_x_1 of { happy_var_1 -> 
-	case happyOut264 happy_x_2 of { happy_var_2 -> 
-	case happyOut260 happy_x_3 of { happy_var_3 -> 
-	happyIn276
-		 (PInfixApp (ann happy_var_1 <++> ann happy_var_3) (PVar (ann happy_var_1) happy_var_1) happy_var_2 (PVar (ann happy_var_3) happy_var_3)
-	)}}}
-
-happyReduce_751 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_751 = happyReduce 4# 262# happyReduction_751
-happyReduction_751 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut245 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut278 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	happyIn276
-		 (let { (ss, ns) = happy_var_3 ;
-                                       qnames = (map (\n -> UnQual (ann n) n) ns) }
-                                 in PRec (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2 : ss ++ [happy_var_4]))
-                                         (UnQual (ann happy_var_1) happy_var_1) (map (\q -> PFieldPun (ann q) q) qnames)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_752 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_752 = happySpecReduce_0  263# happyReduction_752
-happyReduction_752  =  happyIn277
-		 ([]
-	)
-
-happyReduce_753 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_753 = happySpecReduce_2  263# happyReduction_753
-happyReduction_753 happy_x_2
-	happy_x_1
-	 =  case happyOut260 happy_x_1 of { happy_var_1 -> 
-	case happyOut277 happy_x_2 of { happy_var_2 -> 
-	happyIn277
-		 (PVar (ann happy_var_1) happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_754 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_754 = happySpecReduce_1  264# happyReduction_754
-happyReduction_754 happy_x_1
-	 =  case happyOut260 happy_x_1 of { happy_var_1 -> 
-	happyIn278
-		 (([], [happy_var_1] )
-	)}
-
-happyReduce_755 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_755 = happySpecReduce_3  264# happyReduction_755
-happyReduction_755 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut260 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> 
-	case happyOut278 happy_x_3 of { happy_var_3 -> 
-	happyIn278
-		 (let (ss, ns) = happy_var_3 in (happy_var_2 : ss, happy_var_1 : ns)
-	)}}}
-
-happyReduce_756 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_756 = happyMonadReduce 4# 265# happyReduction_756
-happyReduction_756 (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 { (Loc happy_var_1 KW_Where) -> 
-	case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> 
-	case happyOut75 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> 
-	(  checkExplicitPatSyn happy_var_1 happy_var_2 happy_var_3 happy_var_4)}}}})
-	) (\r -> happyReturn (happyIn279 r))
-
-happyReduce_757 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_757 = happyMonadReduce 4# 265# happyReduction_757
-happyReduction_757 (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 { (Loc happy_var_1 KW_Where) -> 
-	case happyOut272 happy_x_2 of { happy_var_2 -> 
-	case happyOut75 happy_x_3 of { happy_var_3 -> 
-	case happyOut273 happy_x_4 of { happy_var_4 -> 
-	(  checkExplicitPatSyn happy_var_1 happy_var_2 happy_var_3 happy_var_4)}}}})
-	) (\r -> happyReturn (happyIn279 r))
-
-happyReduce_758 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_758 = happyMonadReduce 4# 266# happyReduction_758
-happyReduction_758 (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 { (Loc happy_var_1 KW_Pattern) -> 
-	case happyOut246 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> 
-	case happyOut281 happy_x_4 of { happy_var_4 -> 
-	( do { checkEnabled PatternSynonyms ;
-                    let {(qtvs, ps, prov, req, ty) = happy_var_4} ;
-                    let {sig = PatSynSig (nIS happy_var_1 <++> ann ty <** [happy_var_1] ++ fst happy_var_2 ++ [happy_var_3] ++ ps)  (snd happy_var_2) qtvs prov req ty} ;
-                    return sig })}}}})
-	) (\r -> happyReturn (happyIn280 r))
-
-happyReduce_759 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_759 = happyReduce 4# 267# happyReduction_759
-happyReduction_759 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> 
-	case happyOut125 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> 
-	case happyOut281 happy_x_4 of { happy_var_4 -> 
-	happyIn281
-		 (let (qtvs, ps, prov, req, ty) = happy_var_4
-               in (Just (reverse (fst happy_var_2) ++ fromMaybe [] qtvs), (happy_var_1 : happy_var_3 : ps), prov, req, ty)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_760 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_760 = happyMonadReduce 3# 267# happyReduction_760
-happyReduction_760 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut121 happy_x_1 of { happy_var_1 -> 
-	case happyOut121 happy_x_2 of { happy_var_2 -> 
-	case happyOut107 happy_x_3 of { happy_var_3 -> 
-	( do { c1 <- checkContext (Just happy_var_1) ;
-                    c2 <- checkContext (Just happy_var_2) ;
-                    t  <- checkType happy_var_3 ;
-                    return $ (Nothing, [], c1, c2, t) })}}})
-	) (\r -> happyReturn (happyIn281 r))
-
-happyReduce_761 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_761 = happyMonadReduce 2# 267# happyReduction_761
-happyReduction_761 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut121 happy_x_1 of { happy_var_1 -> 
-	case happyOut107 happy_x_2 of { happy_var_2 -> 
-	( do { c1 <- checkContext (Just happy_var_1);
-                     t <- checkType happy_var_2;
-                     return (Nothing, [], c1, Nothing, t) })}})
-	) (\r -> happyReturn (happyIn281 r))
-
-happyReduce_762 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_762 = happyMonadReduce 1# 267# happyReduction_762
-happyReduction_762 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOut107 happy_x_1 of { happy_var_1 -> 
-	( checkType happy_var_1 >>= \t -> return (Nothing, [], Nothing, Nothing, t))})
-	) (\r -> happyReturn (happyIn281 r))
-
-happyReduce_763 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_763 = happyMonadReduce 1# 268# happyReduction_763
-happyReduction_763 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Stock) -> 
-	( do { checkEnabled DerivingStrategies
-                                    ; return (Just (DerivStock (nIS happy_var_1))) })})
-	) (\r -> happyReturn (happyIn282 r))
-
-happyReduce_764 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_764 = happyMonadReduce 1# 268# happyReduction_764
-happyReduction_764 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Anyclass) -> 
-	( do { checkEnabled DerivingStrategies
-                                    ; checkEnabled DeriveAnyClass
-                                    ; return (Just (DerivAnyclass (nIS happy_var_1))) })})
-	) (\r -> happyReturn (happyIn282 r))
-
-happyReduce_765 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_765 = happyMonadReduce 1# 268# happyReduction_765
-happyReduction_765 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen ((case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> 
-	( do { checkEnabled DerivingStrategies
-                                    ; checkEnabled GeneralizedNewtypeDeriving
-                                    ; return (Just (DerivNewtype (nIS happy_var_1))) })})
-	) (\r -> happyReturn (happyIn282 r))
-
-happyReduce_766 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_766 = happySpecReduce_0  268# happyReduction_766
-happyReduction_766  =  happyIn282
-		 (Nothing
-	)
-
-happyReduce_767 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_767 = happySpecReduce_1  269# happyReduction_767
-happyReduction_767 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn283
-		 (let Loc l (ConId  n) = happy_var_1 in ModuleName (nIS l) n
-	)}
-
-happyReduce_768 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_768 = happySpecReduce_1  269# happyReduction_768
-happyReduction_768 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn283
-		 (let Loc l (QConId n) = happy_var_1 in ModuleName (nIS l) (fst n ++ '.':snd n)
-	)}
-
-happyReduce_769 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_769 = happySpecReduce_1  270# happyReduction_769
-happyReduction_769 happy_x_1
-	 =  case happyOut245 happy_x_1 of { happy_var_1 -> 
-	happyIn284
-		 (happy_var_1
-	)}
-
-happyReduce_770 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_770 = happySpecReduce_1  271# happyReduction_770
-happyReduction_770 happy_x_1
-	 =  case happyOut247 happy_x_1 of { happy_var_1 -> 
-	happyIn285
-		 (happy_var_1
-	)}
-
-happyReduce_771 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_771 = happySpecReduce_1  272# happyReduction_771
-happyReduction_771 happy_x_1
-	 =  case happyOut287 happy_x_1 of { happy_var_1 -> 
-	happyIn286
-		 (happy_var_1
-	)}
-
-happyReduce_772 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_772 = happySpecReduce_1  273# happyReduction_772
-happyReduction_772 happy_x_1
-	 =  case happyOut259 happy_x_1 of { happy_var_1 -> 
-	happyIn287
-		 (happy_var_1
-	)}
-
-happyReduce_773 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_773 = happySpecReduce_1  273# happyReduction_773
-happyReduction_773 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> 
-	happyIn287
-		 (safe_name       (nIS happy_var_1)
-	)}
-
-happyReduce_774 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_774 = happySpecReduce_1  273# happyReduction_774
-happyReduction_774 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> 
-	happyIn287
-		 (unsafe_name     (nIS happy_var_1)
-	)}
-
-happyReduce_775 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_775 = happySpecReduce_1  273# happyReduction_775
-happyReduction_775 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> 
-	happyIn287
-		 (threadsafe_name (nIS happy_var_1)
-	)}
-
-happyReduce_776 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_776 = happySpecReduce_3  274# happyReduction_776
-happyReduction_776 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> 
-	case happyOut286 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> 
-	happyIn288
-		 (UnQual (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2
-	)}}}
-
-happyReduce_777 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_777 = happySpecReduce_1  274# happyReduction_777
-happyReduction_777 happy_x_1
-	 =  case happyOut289 happy_x_1 of { happy_var_1 -> 
-	happyIn288
-		 (UnQual (ann happy_var_1) happy_var_1
-	)}
-
-happyReduce_778 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_778 = happySpecReduce_1  275# happyReduction_778
-happyReduction_778 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn289
-		 (let Loc l (VarSym x) = happy_var_1 in Symbol (nIS l) x
-	)}
-
-happyReduce_779 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_779 = happySpecReduce_1  275# happyReduction_779
-happyReduction_779 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> 
-	happyIn289
-		 (Symbol (nIS happy_var_1) "-"
-	)}
-
-happyReduce_780 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_780 = happySpecReduce_1  275# happyReduction_780
-happyReduction_780 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> 
-	happyIn289
-		 (Symbol (nIS happy_var_1) "*"
-	)}
-
-happyReduce_781 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_781 = happyReduce 5# 276# happyReduction_781
-happyReduction_781 (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 { (Loc happy_var_1 LeftCurly) -> 
-	case happyOut28 happy_x_2 of { happy_var_2 -> 
-	case happyOut37 happy_x_3 of { happy_var_3 -> 
-	case happyOut28 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (Loc happy_var_5 RightCurly) -> 
-	happyIn290
-		 (let (ids, ss) = happy_var_3 in (ids, happy_var_1 : reverse happy_var_2 ++ ss ++ reverse happy_var_4 ++ [happy_var_5], happy_var_1 <^^> happy_var_5)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_782 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_782 = happyReduce 5# 276# happyReduction_782
-happyReduction_782 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut272 happy_x_1 of { happy_var_1 -> 
-	case happyOut28 happy_x_2 of { happy_var_2 -> 
-	case happyOut37 happy_x_3 of { happy_var_3 -> 
-	case happyOut28 happy_x_4 of { happy_var_4 -> 
-	case happyOut273 happy_x_5 of { happy_var_5 -> 
-	happyIn290
-		 (let (ids, ss) = happy_var_3 in (ids, happy_var_1 : reverse happy_var_2 ++ ss ++ reverse happy_var_4 ++ [happy_var_5], happy_var_1 <^^> happy_var_5)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_783 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_783 = happySpecReduce_3  277# happyReduction_783
-happyReduction_783 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOut283 happy_x_3 of { happy_var_3 -> 
-	happyIn291
-		 ((happy_var_1, Just happy_var_3)
-	)}}
-
-happyReduce_784 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_784 = happySpecReduce_1  277# happyReduction_784
-happyReduction_784 happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	happyIn291
-		 ((happy_var_1, Nothing)
-	)}
-
-happyReduce_785 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_785 = happySpecReduce_2  278# happyReduction_785
-happyReduction_785 happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOut23 happy_x_2 of { happy_var_2 -> 
-	happyIn292
-		 ((happy_var_1, happy_var_2)
-	)}}
-
-happyReduce_786 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_786 = happySpecReduce_3  279# happyReduction_786
-happyReduction_786 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOut23 happy_x_2 of { happy_var_2 -> 
-	case happyOut290 happy_x_3 of { happy_var_3 -> 
-	happyIn293
-		 ((happy_var_1, happy_var_2, Just happy_var_3)
-	)}}}
-
-happyReduce_787 :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-happyReduce_787 = happySpecReduce_2  279# happyReduction_787
-happyReduction_787 happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOut23 happy_x_2 of { happy_var_2 -> 
-	happyIn293
-		 ((happy_var_1, happy_var_2, Nothing)
-	)}}
-
-happyNewToken action sts stk
-	= lexer(\tk -> 
-	let cont i = happyDoAction i tk action sts stk in
-	case tk of {
-	Loc _ EOF -> happyDoAction 156# tk action sts stk;
-	Loc _ (VarId _) -> cont 1#;
-	Loc _ (LabelVarId _) -> cont 2#;
-	Loc _ (QVarId _) -> cont 3#;
-	Loc _ (IDupVarId _) -> cont 4#;
-	Loc _ (ILinVarId _) -> cont 5#;
-	Loc _ (ConId _) -> cont 6#;
-	Loc _ (QConId _) -> cont 7#;
-	Loc _ (DVarId _) -> cont 8#;
-	Loc _ (VarSym _) -> cont 9#;
-	Loc _ (ConSym _) -> cont 10#;
-	Loc _ (QVarSym _) -> cont 11#;
-	Loc _ (QConSym _) -> cont 12#;
-	Loc _ (IntTok _) -> cont 13#;
-	Loc _ (FloatTok _) -> cont 14#;
-	Loc _ (Character _) -> cont 15#;
-	Loc _ (StringTok _) -> cont 16#;
-	Loc _ (IntTokHash _) -> cont 17#;
-	Loc _ (WordTokHash _) -> cont 18#;
-	Loc _ (FloatTokHash _) -> cont 19#;
-	Loc _ (DoubleTokHash _) -> cont 20#;
-	Loc _ (CharacterHash _) -> cont 21#;
-	Loc _ (StringHash _) -> cont 22#;
-	Loc happy_dollar_dollar LeftParen -> cont 23#;
-	Loc happy_dollar_dollar RightParen -> cont 24#;
-	Loc happy_dollar_dollar LeftHashParen -> cont 25#;
-	Loc happy_dollar_dollar RightHashParen -> cont 26#;
-	Loc happy_dollar_dollar SemiColon -> cont 27#;
-	Loc happy_dollar_dollar LeftCurly -> cont 28#;
-	Loc happy_dollar_dollar RightCurly -> cont 29#;
-	Loc happy_dollar_dollar VRightCurly -> cont 30#;
-	Loc happy_dollar_dollar LeftSquare -> cont 31#;
-	Loc happy_dollar_dollar RightSquare -> cont 32#;
-	Loc happy_dollar_dollar ParArrayLeftSquare -> cont 33#;
-	Loc happy_dollar_dollar ParArrayRightSquare -> cont 34#;
-	Loc happy_dollar_dollar Comma -> cont 35#;
-	Loc happy_dollar_dollar Underscore -> cont 36#;
-	Loc happy_dollar_dollar BackQuote -> cont 37#;
-	Loc happy_dollar_dollar Dot -> cont 38#;
-	Loc happy_dollar_dollar DotDot -> cont 39#;
-	Loc happy_dollar_dollar Colon -> cont 40#;
-	Loc happy_dollar_dollar DoubleColon -> cont 41#;
-	Loc happy_dollar_dollar Equals -> cont 42#;
-	Loc happy_dollar_dollar Backslash -> cont 43#;
-	Loc happy_dollar_dollar Bar -> cont 44#;
-	Loc happy_dollar_dollar LeftArrow -> cont 45#;
-	Loc happy_dollar_dollar RightArrow -> cont 46#;
-	Loc happy_dollar_dollar At -> cont 47#;
-	Loc happy_dollar_dollar TApp -> cont 48#;
-	Loc happy_dollar_dollar Tilde -> cont 49#;
-	Loc happy_dollar_dollar DoubleArrow -> cont 50#;
-	Loc happy_dollar_dollar Minus -> cont 51#;
-	Loc happy_dollar_dollar Exclamation -> cont 52#;
-	Loc happy_dollar_dollar Star -> cont 53#;
-	Loc happy_dollar_dollar LeftArrowTail -> cont 54#;
-	Loc happy_dollar_dollar RightArrowTail -> cont 55#;
-	Loc happy_dollar_dollar LeftDblArrowTail -> cont 56#;
-	Loc happy_dollar_dollar RightDblArrowTail -> cont 57#;
-	Loc happy_dollar_dollar RPGuardOpen -> cont 58#;
-	Loc happy_dollar_dollar RPGuardClose -> cont 59#;
-	Loc happy_dollar_dollar RPCAt -> cont 60#;
-	Loc _ (THIdEscape _) -> cont 61#;
-	Loc happy_dollar_dollar THParenEscape -> cont 62#;
-	Loc happy_dollar_dollar THExpQuote -> cont 63#;
-	Loc happy_dollar_dollar THPatQuote -> cont 64#;
-	Loc happy_dollar_dollar THTypQuote -> cont 65#;
-	Loc happy_dollar_dollar THDecQuote -> cont 66#;
-	Loc happy_dollar_dollar THCloseQuote -> cont 67#;
-	Loc happy_dollar_dollar THVarQuote -> cont 68#;
-	Loc happy_dollar_dollar THTyQuote -> cont 69#;
-	Loc _ (THQuasiQuote _) -> cont 70#;
-	Loc _ (XPCDATA _) -> cont 71#;
-	Loc happy_dollar_dollar XStdTagOpen -> cont 72#;
-	Loc happy_dollar_dollar XCloseTagOpen -> cont 73#;
-	Loc happy_dollar_dollar XCodeTagOpen -> cont 74#;
-	Loc happy_dollar_dollar XChildTagOpen -> cont 75#;
-	Loc happy_dollar_dollar XStdTagClose -> cont 76#;
-	Loc happy_dollar_dollar XEmptyTagClose -> cont 77#;
-	Loc happy_dollar_dollar XCodeTagClose -> cont 78#;
-	Loc happy_dollar_dollar XRPatOpen -> cont 79#;
-	Loc happy_dollar_dollar XRPatClose -> cont 80#;
-	Loc happy_dollar_dollar KW_Foreign -> cont 81#;
-	Loc happy_dollar_dollar KW_Export -> cont 82#;
-	Loc happy_dollar_dollar KW_Safe -> cont 83#;
-	Loc happy_dollar_dollar KW_Unsafe -> cont 84#;
-	Loc happy_dollar_dollar KW_Threadsafe -> cont 85#;
-	Loc happy_dollar_dollar KW_Interruptible -> cont 86#;
-	Loc happy_dollar_dollar KW_StdCall -> cont 87#;
-	Loc happy_dollar_dollar KW_CCall -> cont 88#;
-	Loc happy_dollar_dollar KW_CPlusPlus -> cont 89#;
-	Loc happy_dollar_dollar KW_DotNet -> cont 90#;
-	Loc happy_dollar_dollar KW_Jvm -> cont 91#;
-	Loc happy_dollar_dollar KW_Js -> cont 92#;
-	Loc happy_dollar_dollar KW_JavaScript -> cont 93#;
-	Loc happy_dollar_dollar KW_CApi -> cont 94#;
-	Loc happy_dollar_dollar KW_As -> cont 95#;
-	Loc happy_dollar_dollar KW_By -> cont 96#;
-	Loc happy_dollar_dollar KW_Case -> cont 97#;
-	Loc happy_dollar_dollar KW_Class -> cont 98#;
-	Loc happy_dollar_dollar KW_Data -> cont 99#;
-	Loc happy_dollar_dollar KW_Default -> cont 100#;
-	Loc happy_dollar_dollar KW_Deriving -> cont 101#;
-	Loc happy_dollar_dollar KW_Do -> cont 102#;
-	Loc happy_dollar_dollar KW_Else -> cont 103#;
-	Loc happy_dollar_dollar KW_Family -> cont 104#;
-	Loc happy_dollar_dollar KW_Forall -> cont 105#;
-	Loc happy_dollar_dollar KW_Group -> cont 106#;
-	Loc happy_dollar_dollar KW_Hiding -> cont 107#;
-	Loc happy_dollar_dollar KW_If -> cont 108#;
-	Loc happy_dollar_dollar KW_Import -> cont 109#;
-	Loc happy_dollar_dollar KW_In -> cont 110#;
-	Loc happy_dollar_dollar KW_Infix -> cont 111#;
-	Loc happy_dollar_dollar KW_InfixL -> cont 112#;
-	Loc happy_dollar_dollar KW_InfixR -> cont 113#;
-	Loc happy_dollar_dollar KW_Instance -> cont 114#;
-	Loc happy_dollar_dollar KW_Let -> cont 115#;
-	Loc happy_dollar_dollar KW_MDo -> cont 116#;
-	Loc happy_dollar_dollar KW_Module -> cont 117#;
-	Loc happy_dollar_dollar KW_NewType -> cont 118#;
-	Loc happy_dollar_dollar KW_Of -> cont 119#;
-	Loc happy_dollar_dollar KW_Proc -> cont 120#;
-	Loc happy_dollar_dollar KW_Rec -> cont 121#;
-	Loc happy_dollar_dollar KW_Then -> cont 122#;
-	Loc happy_dollar_dollar KW_Type -> cont 123#;
-	Loc happy_dollar_dollar KW_Using -> cont 124#;
-	Loc happy_dollar_dollar KW_Where -> cont 125#;
-	Loc happy_dollar_dollar KW_Qualified -> cont 126#;
-	Loc happy_dollar_dollar KW_Role -> cont 127#;
-	Loc happy_dollar_dollar KW_Pattern -> cont 128#;
-	Loc happy_dollar_dollar KW_Stock -> cont 129#;
-	Loc happy_dollar_dollar KW_Anyclass -> cont 130#;
-	Loc _ (INLINE _) -> cont 131#;
-	Loc happy_dollar_dollar INLINE_CONLIKE -> cont 132#;
-	Loc happy_dollar_dollar SPECIALISE -> cont 133#;
-	Loc _ (SPECIALISE_INLINE _) -> cont 134#;
-	Loc happy_dollar_dollar SOURCE -> cont 135#;
-	Loc happy_dollar_dollar RULES -> cont 136#;
-	Loc happy_dollar_dollar CORE -> cont 137#;
-	Loc happy_dollar_dollar SCC -> cont 138#;
-	Loc happy_dollar_dollar GENERATED -> cont 139#;
-	Loc happy_dollar_dollar DEPRECATED -> cont 140#;
-	Loc happy_dollar_dollar WARNING -> cont 141#;
-	Loc happy_dollar_dollar UNPACK -> cont 142#;
-	Loc happy_dollar_dollar NOUNPACK -> cont 143#;
-	Loc _ (OPTIONS _) -> cont 144#;
-	Loc happy_dollar_dollar LANGUAGE -> cont 145#;
-	Loc happy_dollar_dollar ANN -> cont 146#;
-	Loc happy_dollar_dollar MINIMAL -> cont 147#;
-	Loc happy_dollar_dollar NO_OVERLAP -> cont 148#;
-	Loc happy_dollar_dollar OVERLAP -> cont 149#;
-	Loc happy_dollar_dollar OVERLAPS -> cont 150#;
-	Loc happy_dollar_dollar OVERLAPPING -> cont 151#;
-	Loc happy_dollar_dollar OVERLAPPABLE -> cont 152#;
-	Loc happy_dollar_dollar INCOHERENT -> cont 153#;
-	Loc happy_dollar_dollar COMPLETE -> cont 154#;
-	Loc happy_dollar_dollar PragmaEnd -> cont 155#;
-	_ -> happyError' (tk, [])
-	})
-
-happyError_ explist 156# tk = happyError' (tk, explist)
-happyError_ explist _ tk = happyError' (tk, explist)
-
-happyThen :: () => P a -> (a -> P b) -> P b
-happyThen = (>>=)
-happyReturn :: () => a -> P a
-happyReturn = (return)
-happyParse :: () => Happy_GHC_Exts.Int# -> P (HappyAbsSyn )
-
-happyNewToken :: () => Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-
-happyDoAction :: () => Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn )
-
-happyReduceArr :: () => Happy_Data_Array.Array Int (Happy_GHC_Exts.Int# -> Loc Token -> Happy_GHC_Exts.Int# -> Happy_IntList -> HappyStk (HappyAbsSyn ) -> P (HappyAbsSyn ))
-
-happyThen1 :: () => P a -> (a -> P b) -> P b
-happyThen1 = happyThen
-happyReturn1 :: () => a -> P a
-happyReturn1 = happyReturn
-happyError' :: () => ((Loc Token), [String]) -> P a
-happyError' tk = (\(tokens, _) -> parseError tokens) tk
-mparseModule = happySomeParser where
- happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut16 x))
-
-mparseExp = happySomeParser where
- happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut174 x))
-
-mparsePat = happySomeParser where
- happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut224 x))
-
-mparseDeclAux = happySomeParser where
- happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut25 x))
-
-mparseType = happySomeParser where
- happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut119 x))
-
-mparseStmt = happySomeParser where
- happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut231 x))
-
-mparseImportDecl = happySomeParser where
- happySomeParser = happyThen (happyParse 6#) (\x -> happyReturn (happyOut38 x))
-
-ngparseModulePragmas = happySomeParser where
- happySomeParser = happyThen (happyParse 7#) (\x -> happyReturn (happyOut18 x))
-
-ngparseModuleHeadAndImports = happySomeParser where
- happySomeParser = happyThen (happyParse 8#) (\x -> happyReturn (happyOut293 x))
-
-ngparsePragmasAndModuleHead = happySomeParser where
- happySomeParser = happyThen (happyParse 9#) (\x -> happyReturn (happyOut292 x))
-
-ngparsePragmasAndModuleName = happySomeParser where
- happySomeParser = happyThen (happyParse 10#) (\x -> happyReturn (happyOut291 x))
-
-happySeq = happyDontSeq
-
-
-type L = SrcSpanInfo -- just for convenience
-type S = SrcSpan
-
-parseError :: Loc Token -> P a
-parseError t = fail $ "Parse error: " ++ showToken (unLoc t)
-
-(<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo
-a <> b = ann a <++> ann b
-infixl 6 <>
-
-nIS = noInfoSpan
-iS = infoSpan
-
-mparseDecl :: P (Decl SrcSpanInfo)
-mparseDecl = do
-    (is, ds, _, _) <- mparseDeclAux
-    when (not $ null is) $
-       fail $ "Expected single declaration, found import declaration"
-    checkSingleDecl ds
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command-line>" #-}
-{-# LINE 11 "<command-line>" #-}
-# 1 "/nix/store/z2v959r3xw6rr3srz5vfzv63dy7mq98i-glibc-2.27-dev/include/stdc-predef.h" 1 3 4
-
-# 17 "/nix/store/z2v959r3xw6rr3srz5vfzv63dy7mq98i-glibc-2.27-dev/include/stdc-predef.h" 3 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{-# LINE 11 "<command-line>" #-}
-{-# LINE 1 "/nix/store/a0dr5x063v0zm8z0z5fwh8dldg10yl07-ghc-8.4.3/lib/ghc-8.4.3/include/ghcversion.h" #-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{-# LINE 11 "<command-line>" #-}
-{-# LINE 1 "/build/ghc2026_0/ghc_2.h" #-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{-# LINE 11 "<command-line>" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
-
-
-
-
-
-
-
-
-
-
-
-
-
--- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.
-#if __GLASGOW_HASKELL__ > 706
-#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)
-#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)
-#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)
-#else
-#define LT(n,m) (n Happy_GHC_Exts.<# m)
-#define GTE(n,m) (n Happy_GHC_Exts.>=# m)
-#define EQ(n,m) (n Happy_GHC_Exts.==# m)
-#endif
-{-# LINE 43 "templates/GenericTemplate.hs" #-}
-
-data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList
-
-
-
-
-
-
-
-{-# LINE 65 "templates/GenericTemplate.hs" #-}
-
-{-# LINE 75 "templates/GenericTemplate.hs" #-}
-
-{-# LINE 84 "templates/GenericTemplate.hs" #-}
-
-infixr 9 `HappyStk`
-data HappyStk a = HappyStk a (HappyStk a)
-
------------------------------------------------------------------------------
--- starting the parse
-
-happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
-
------------------------------------------------------------------------------
--- Accepting the parse
-
--- If the current token is 0#, it means we've just accepted a partial
--- parse (a %partial parser).  We must ignore the saved token on the top of
--- the stack in this case.
-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =
-        happyReturn1 ans
-happyAccept j tk st sts (HappyStk ans _) = 
-        (happyTcHack j (happyTcHack st)) (happyReturn1 ans)
-
------------------------------------------------------------------------------
--- Arrays only: do the next action
-
-
-
-happyDoAction i tk st
-        = {- nothing -}
-
-
-          case action of
-                0#           -> {- nothing -}
-                                     happyFail (happyExpListPerState ((Happy_GHC_Exts.I# (st)) :: Int)) i tk st
-                -1#          -> {- nothing -}
-                                     happyAccept i tk st
-                n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}
-
-                                                   (happyReduceArr Happy_Data_Array.! rule) i tk st
-                                                   where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))
-                n                 -> {- nothing -}
-
-
-                                     happyShift new_state i tk st
-                                     where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))
-   where off    = happyAdjustOffset (indexShortOffAddr happyActOffsets st)
-         off_i  = (off Happy_GHC_Exts.+#  i)
-         check  = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))
-                  then EQ(indexShortOffAddr happyCheck off_i, i)
-                  else False
-         action
-          | check     = indexShortOffAddr happyTable off_i
-          | otherwise = indexShortOffAddr happyDefActions st
-
-
-
-
-indexShortOffAddr (HappyA# arr) off =
-        Happy_GHC_Exts.narrow16Int# i
-  where
-        i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)
-        high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))
-        low  = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))
-        off' = off Happy_GHC_Exts.*# 2#
-
-
-
-
-{-# INLINE happyLt #-}
-happyLt x y = LT(x,y)
-
-
-readArrayBit arr bit =
-    Bits.testBit (Happy_GHC_Exts.I# (indexShortOffAddr arr ((unbox_int bit) `Happy_GHC_Exts.iShiftRA#` 4#))) (bit `mod` 16)
-  where unbox_int (Happy_GHC_Exts.I# x) = x
-
-
-
-
-
-
-data HappyAddr = HappyA# Happy_GHC_Exts.Addr#
-
-
------------------------------------------------------------------------------
--- HappyState data type (not arrays)
-
-{-# LINE 180 "templates/GenericTemplate.hs" #-}
-
------------------------------------------------------------------------------
--- Shifting a token
-
-happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =
-     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
---     trace "shifting the error token" $
-     happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)
-
-happyShift new_state i tk st sts stk =
-     happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)
-
--- happyReduce is specialised for the common cases.
-
-happySpecReduce_0 i fn 0# tk st sts stk
-     = happyFail [] 0# tk st sts stk
-happySpecReduce_0 nt fn j tk st@((action)) sts stk
-     = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)
-
-happySpecReduce_1 i fn 0# tk st sts stk
-     = happyFail [] 0# tk st sts stk
-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')
-     = let r = fn v1 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_2 i fn 0# tk st sts stk
-     = happyFail [] 0# tk st sts stk
-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')
-     = let r = fn v1 v2 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happySpecReduce_3 i fn 0# tk st sts stk
-     = happyFail [] 0# tk st sts stk
-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
-     = let r = fn v1 v2 v3 in
-       happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))
-
-happyReduce k i fn 0# tk st sts stk
-     = happyFail [] 0# tk st sts stk
-happyReduce k nt fn j tk st sts stk
-     = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of
-         sts1@((HappyCons (st1@(action)) (_))) ->
-                let r = fn stk in  -- it doesn't hurt to always seq here...
-                happyDoSeq r (happyGoto nt j tk st1 sts1 r)
-
-happyMonadReduce k nt fn 0# tk st sts stk
-     = happyFail [] 0# tk st sts stk
-happyMonadReduce k nt fn j tk st sts stk =
-      case happyDrop k (HappyCons (st) (sts)) of
-        sts1@((HappyCons (st1@(action)) (_))) ->
-          let drop_stk = happyDropStk k stk in
-          happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))
-
-happyMonad2Reduce k nt fn 0# tk st sts stk
-     = happyFail [] 0# tk st sts stk
-happyMonad2Reduce k nt fn j tk st sts stk =
-      case happyDrop k (HappyCons (st) (sts)) of
-        sts1@((HappyCons (st1@(action)) (_))) ->
-         let drop_stk = happyDropStk k stk
-
-             off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st1)
-             off_i = (off Happy_GHC_Exts.+#  nt)
-             new_state = indexShortOffAddr happyTable off_i
-
-
-
-
-          in
-          happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
-
-happyDrop 0# l = l
-happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t
-
-happyDropStk 0# l = l
-happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs
-
------------------------------------------------------------------------------
--- Moving to a new state after a reduction
-
-
-happyGoto nt j tk st = 
-   {- nothing -}
-   happyDoAction j tk new_state
-   where off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st)
-         off_i = (off Happy_GHC_Exts.+#  nt)
-         new_state = indexShortOffAddr happyTable off_i
-
-
-
-
------------------------------------------------------------------------------
--- Error recovery (0# is the error token)
-
--- parse error if we are in recovery and we fail again
-happyFail explist 0# tk old_st _ stk@(x `HappyStk` _) =
-     let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in
---      trace "failing" $ 
-        happyError_ explist i tk
-
-{-  We don't need state discarding for our restricted implementation of
-    "error".  In fact, it can cause some bogus parses, so I've disabled it
-    for now --SDM
-
--- discard a state
-happyFail  0# tk old_st (HappyCons ((action)) (sts)) 
-                                                (saved_tok `HappyStk` _ `HappyStk` stk) =
---      trace ("discarding state, depth " ++ show (length stk))  $
-        happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))
--}
-
--- Enter error recovery: generate an error token,
---                       save the old token and carry on.
-happyFail explist i tk (action) sts stk =
---      trace "entering error recovery" $
-        happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)
-
--- Internal happy errors:
-
-notHappyAtAll :: a
-notHappyAtAll = error "Internal Happy error\n"
-
------------------------------------------------------------------------------
--- Hack to get the typechecker to accept our action functions
-
-
-happyTcHack :: Happy_GHC_Exts.Int# -> a -> a
-happyTcHack x y = y
-{-# INLINE happyTcHack #-}
-
-
------------------------------------------------------------------------------
--- Seq-ing.  If the --strict flag is given, then Happy emits 
---      happySeq = happyDoSeq
--- otherwise it emits
---      happySeq = happyDontSeq
-
-happyDoSeq, happyDontSeq :: a -> b -> b
-happyDoSeq   a b = a `seq` b
-happyDontSeq a b = b
-
------------------------------------------------------------------------------
--- Don't inline any functions from the template.  GHC has a nasty habit
--- of deciding to inline happyGoto everywhere, which increases the size of
--- the generated parser quite a bit.
-
-
-{-# NOINLINE happyDoAction #-}
-{-# NOINLINE happyTable #-}
-{-# NOINLINE happyCheck #-}
-{-# NOINLINE happyActOffsets #-}
-{-# NOINLINE happyGotoOffsets #-}
-{-# NOINLINE happyDefActions #-}
-
-{-# NOINLINE happyShift #-}
-{-# NOINLINE happySpecReduce_0 #-}
-{-# NOINLINE happySpecReduce_1 #-}
-{-# NOINLINE happySpecReduce_2 #-}
-{-# NOINLINE happySpecReduce_3 #-}
-{-# NOINLINE happyReduce #-}
-{-# NOINLINE happyMonadReduce #-}
-{-# NOINLINE happyGoto #-}
-{-# NOINLINE happyFail #-}
-
--- end of Happy Template.
diff --git a/haskell-src-exts.cabal b/haskell-src-exts.cabal
--- a/haskell-src-exts.cabal
+++ b/haskell-src-exts.cabal
@@ -1,10 +1,10 @@
 Name:                   haskell-src-exts
-Version:                1.20.3
+Version:                1.24.0
 License:                BSD3
 License-File:           LICENSE
 Build-Type:             Simple
 Author:                 Niklas Broberg
-Maintainer:             Matthew Pickering <matthewtpickering@gmail.com>
+Maintainer:             Dan Burton <danburton.email@gmail.com>
 Category:               Language
 Synopsis:               Manipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer
 Description:            Haskell-Source with Extensions (HSE, haskell-src-exts)
@@ -15,16 +15,10 @@
                         it also handles regular patterns as per the HaRP extension
                         as well as HSX-style embedded XML syntax.
 Homepage:               https://github.com/haskell-suite/haskell-src-exts
+Bug-Reports:            https://github.com/haskell-suite/haskell-src-exts/issues
 Stability:              Stable
 Cabal-Version:          >= 1.10
-Tested-With:
-                        GHC == 7.6.3
-                        , GHC == 7.8.2
-                        , GHC == 7.10.3
-                        , GHC == 8.0.2
-                        , GHC == 8.2.2
-                        , GHC == 8.4.1
-                        , GHC == 8.6.1
+Tested-With:            GHC == 9.14.1
 
 Extra-Source-Files:
                         README.md
@@ -46,15 +40,16 @@
 Library
   Default-language:     Haskell98
   Build-Tools:          happy >= 1.19
-  Build-Depends:        array >= 0.1, pretty >= 1.0,
+  Build-Depends:        array >= 0.1 && < 0.6,
+                        pretty >= 1.0 && < 1.2,
                         base >= 4.5 && < 5,
                         -- this is needed to access GHC.Generics on GHC 7.4
-                        ghc-prim
+                        ghc-prim < 0.14
   -- this is needed to access Data.Semigroup and Control.Monad.Fail on GHCs
   -- before 8.0
   if !impl(ghc >= 8.0)
     Build-Depends:
-                        semigroups >= 0.18.3,
+                        semigroups >= 0.18.3 && < 0.21,
                         fail == 4.9.*
 
   Exposed-modules:      Language.Haskell.Exts,
@@ -91,7 +86,7 @@
   other-modules:       Extensions
   GHC-Options:         -threaded -Wall
   Default-language:    Haskell2010
-  Build-depends:       base < 5,
+  Build-depends:       base,
                        mtl,
                        containers,
                        haskell-src-exts,
diff --git a/src/Language/Haskell/Exts.hs b/src/Language/Haskell/Exts.hs
--- a/src/Language/Haskell/Exts.hs
+++ b/src/Language/Haskell/Exts.hs
@@ -160,7 +160,9 @@
 readUTF8File fp = do
   h <- openFile fp ReadMode
   hSetEncoding h utf8
-  hGetContents h
+  c <- hGetContents h >>= \s -> length s `seq` return s
+  hClose h
+  return c
 
 -- | Converts a parse result with comments to a parse result with comments and
 --   unknown pragmas.
diff --git a/src/Language/Haskell/Exts/Build.hs b/src/Language/Haskell/Exts/Build.hs
--- a/src/Language/Haskell/Exts/Build.hs
+++ b/src/Language/Haskell/Exts/Build.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.Build
diff --git a/src/Language/Haskell/Exts/Comments.hs b/src/Language/Haskell/Exts/Comments.hs
--- a/src/Language/Haskell/Exts/Comments.hs
+++ b/src/Language/Haskell/Exts/Comments.hs
@@ -1,4 +1,5 @@
-{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveDataTypeable, Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.Comments
diff --git a/src/Language/Haskell/Exts/ExactPrint.hs b/src/Language/Haskell/Exts/ExactPrint.hs
--- a/src/Language/Haskell/Exts/ExactPrint.hs
+++ b/src/Language/Haskell/Exts/ExactPrint.hs
@@ -1,5 +1,5 @@
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP, DeriveFunctor, Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.Annotated.ExactPrint
@@ -25,6 +25,7 @@
 import Language.Haskell.Exts.Comments
 
 import Control.Monad (when, liftM, ap, unless)
+import qualified Control.Monad.Fail as Fail
 #if __GLASGOW_HASKELL__ < 710
 import Control.Applicative (Applicative(..))
 #endif
@@ -46,11 +47,10 @@
   fmap = liftM
 
 instance Applicative EP where
-  pure = return
+  pure x = EP $ \l cs -> (x, l, cs, id)
   (<*>) = ap
 
 instance Monad EP where
-  return x = EP $ \l cs -> (x, l, cs, id)
 
   EP m >>= k = EP $ \l0 c0 -> let
         (a, l1, c1, s1) = m l0 c0
@@ -58,6 +58,9 @@
         (b, l2, c2, s2) = f l1 c1
     in (b, l2, c2, s1 . s2)
 
+instance Fail.MonadFail EP where
+  fail = error
+
 runEP :: EP () -> [Comment] -> String
 runEP (EP f) cs = let (_,_,_,s) = f (1,1) cs in s ""
 
@@ -410,13 +413,18 @@
                      return pts'
                   _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
                 else return pts1
-        pts3 <- if qf then
-                 case pts2 of
-                  x:pts' -> do
+
+        -- Try to determine if qualified is post-positioned only if we have enough points
+        let isPostQual = (qf && not (null pts2)) && safeIsPostQualified pts2
+
+        pts3 <- if qf && not isPostQual then
+                  case pts2 of
+                   x:pts' -> do
                      printStringAt (pos x) "qualified"
                      return pts'
-                  _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
+                   _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
                 else return pts2
+
         pts4 <- case mpkg of
                 Just pkg ->
                   case pts3 of
@@ -425,20 +433,44 @@
                       return pts'
                    _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
                 _ -> return pts3
+
         exactPC mn
-        _ <- case mas of
-                Just as ->
+
+        -- Only try post-qualified if we determined it's actually post-qualified
+        pts5 <- if qf && isPostQual then
                  case pts4 of
                   x:pts' -> do
+                     printStringAt (pos x) "qualified"
+                     return pts'
+                  _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
+                else return pts4
+
+        _ <- case mas of
+               Just as ->
+                 case pts5 of
+                   x:pts' -> do
                      printStringAt (pos x) "as"
                      exactPC as
                      return pts'
-                  _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
-                _ -> return pts4
+                   _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
+               _ -> return pts5
+
         case mispecs of
          Nothing -> return ()
          Just ispecs -> exactPC ispecs
      _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"
+    where safeIsPostQualified pts =
+            case pts of
+              (p:_) ->
+                let modSpan = srcInfoSpan (ann mn)
+                    -- Only consider it post-qualified if we have valid spans to compare
+                in ((isValidSpan modSpan && isValidSpan p) &&
+                    (srcSpanEnd modSpan <= srcSpanStart p))
+              _ -> False
+            where
+              isValidSpan s =
+                srcSpanStartLine s > 0 && srcSpanEndLine s > 0 &&
+                srcSpanStartColumn s >= 0 && srcSpanEndColumn s >= 0
 
 instance ExactP Module where
   exactP mdl = case mdl of
@@ -729,11 +761,12 @@
             printStringAt (pos (last pts)) ")"
          _ -> errorEP "ExactP: Decl: DefaultDecl is given too few srcInfoPoints"
     SpliceDecl   _ spl  -> exactP spl
+    TSpliceDecl  _ spl  -> exactP spl
     TypeSig      l ns t -> do
         let pts = srcInfoPoints l
         printInterleaved' (zip pts (replicate (length pts - 1) "," ++ ["::"])) ns
         exactPC t
-    PatSynSig l ns dh c1 c2 t -> do
+    PatSynSig l ns dh c1 _ c2 t -> do
         let (pat:pts) = srcInfoPoints l
         printStringAt (pos pat) "pattern"
         printInterleaved' (zip pts (replicate (length ns - 1) "," ++ ["::"])) ns
@@ -1037,42 +1070,6 @@
                  [] -> exactPC n
                  _ -> errorEP "ExactP: TyVarBind: UnkindedVar is given wrong number of srcInfoPoints"
 
-instance ExactP Kind where
-  exactP kd' = case kd' of
-    KindStar  _     -> printString "*"
-    KindFn    l k1 k2 ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP k1
-            printStringAt (pos a) "->"
-            exactPC k2
-         _ -> errorEP "ExactP: Kind: KindFn is given wrong number of srcInfoPoints"
-    KindParen l kd  ->
-        case srcInfoPoints l of
-         [_,b] -> do
-            printString "("
-            exactPC kd
-            printStringAt (pos b) ")"
-         _ -> errorEP "ExactP: Kind: KindParen is given wrong number of srcInfoPoints"
-    KindVar _ n     -> epQName n
-    KindApp _ k1 k2 -> do
-        exactP k1
-        exactPC k2
-    KindTuple l ks ->
-        let o = "("
-            e = ")"
-            pts = srcInfoPoints l
-        in printInterleaved (zip pts (o: replicate (length pts - 2) "," ++ [e])) ks
-    KindList  l k ->
-      case srcInfoPoints l of
-        [_, close] -> do
-          printString "["
-          exactPC k
-          printStringAt (pos close) "]"
-        _ -> errorEP "ExactP: Kind: KindList is given wrong number of srcInfoPoints"
-
-
-
 instance ExactP Type where
   exactP t' = case t' of
     TyForall l mtvs mctxt t -> do
@@ -1089,6 +1086,7 @@
                      _ -> errorEP "ExactP: Type: TyForall is given too few srcInfoPoints"
         maybeEP exactPC mctxt
         exactPC t
+    TyStar  _ -> printString "*"
     TyFun   l t1 t2 ->
         case srcInfoPoints l of
          [a] -> do
@@ -1202,9 +1200,7 @@
 
 instance ExactP Asst where
   exactP asst = case asst of
-    ClassA _ qn ts -> exactP qn >> mapM_ exactPC ts
-    AppA _ n ns       -> exactPC n >> mapM_ exactPC ns
-    InfixA _ ta qn tb -> exactP ta >> epInfixQName qn >> exactPC tb
+    TypeA _ t -> exactP t
     IParam l ipn t    ->
         case srcInfoPoints l of
          [a] -> do
@@ -1212,13 +1208,6 @@
             printStringAt (pos a) "::"
             exactPC t
          _ -> errorEP "ExactP: Asst: IParam is given wrong number of srcInfoPoints"
-    EqualP l t1 t2  ->
-        case srcInfoPoints l of
-         [a] -> do
-            exactP t1
-            printStringAt (pos a) "~"
-            exactPC t2
-         _ -> internalError "Asst -> EqualP"
     ParenA l asst' ->
         case take 2 $ srcInfoPoints l of
          [a,b] -> do
@@ -1226,7 +1215,6 @@
             exactPC asst'
             printStringAt (pos b) ")"
          _ -> errorEP "ExactP: Asst: ParenA is given wrong number of srcInfoPoints"
-    WildCardA _ mn -> printString "_" >> maybeEP exactPC mn
 
 instance ExactP Deriving where
   exactP (Deriving l mds ihs) =
@@ -1246,6 +1234,9 @@
     printString "anyclass"
   exactP (DerivNewtype _) =
     printString "newtype"
+  exactP (DerivVia _ ty) = do
+    printString "via"
+    exactP ty
 
 instance ExactP ClassDecl where
   exactP cdecl = case cdecl of
@@ -1361,7 +1352,7 @@
     RecDecl l n fds -> exactP n >> curlyList (srcInfoPoints l) fds
 
 instance ExactP GadtDecl where
-  exactP (GadtDecl l n ns' t) =
+  exactP (GadtDecl l n _mtvs mctxt ns' t) =
     case ns' of
         Nothing ->
             case srcInfoPoints l of
@@ -1375,6 +1366,7 @@
                 (a:b:c:d:rest) -> do
                     exactPC n
                     printStringAt (pos a) "::"
+                    maybeEP exactPC mctxt
                     printStringAt (pos b) "{"
                     printInterleaved' (zip rest (repeat ",")) ts
                     printStringAt (pos c) "}"
@@ -1406,13 +1398,18 @@
 
 instance ExactP Splice where
   exactP (IdSplice _ str) = printString $ '$':str
-  exactP (ParenSplice l e) =
+  exactP (TIdSplice _ str) = printString $ "$$" ++ str
+  exactP (ParenSplice l e) = printParen "ParenSplice" "$(" l e
+  exactP (TParenSplice l e) = printParen "TParenSplice" "$$(" l e
+
+printParen :: ExactP ast => String -> String -> SrcSpanInfo -> ast SrcSpanInfo -> EP ()
+printParen con paren l e =
     case srcInfoPoints l of
      [_,b] -> do
-        printString "$("
+        printString paren
         exactPC e
         printStringAt (pos b) ")"
-     _ -> errorEP "ExactP: Splice: ParenSplice is given wrong number of srcInfoPoints"
+     _ -> errorEP $ "ExactP: Splice: " ++ con ++ " is given wrong number of srcInfoPoints"
 
 instance ExactP Exp where
   exactP exp = case exp of
@@ -1758,6 +1755,13 @@
             exactPC e2
          _ -> errorEP "ExactP: Exp: RightArrHighApp is given wrong number of srcInfoPoints"
 
+    ArrOp l e -> case srcInfoPoints l of
+      [a, b] -> do
+        printStringAt (pos a) "(|"
+        exactPC e
+        printStringAt (pos b) "|)"
+      _ -> errorEP "ExactP: Exp: ArrOp is given wrong number of srcInfoPoints"
+
     LCase l alts   ->
         case srcInfoPoints l of
          _:b:pts -> do
@@ -1837,27 +1841,10 @@
 
 instance ExactP Bracket where
   exactP br = case br of
-    ExpBracket l e  ->
-        case srcInfoPoints l of
-         [_,b] -> do
-            printString "[|"
-            exactPC e
-            printStringAt (pos b) "|]"
-         _ -> errorEP "ExactP: Bracket: ExpBracket is given wrong number of srcInfoPoints"
-    PatBracket l p  ->
-        case srcInfoPoints l of
-         [_,b] -> do
-            printString "[p|"
-            exactPC p
-            printStringAt (pos b) "|]"
-         _ -> errorEP "ExactP: Bracket: PatBracket is given wrong number of srcInfoPoints"
-    TypeBracket l t  ->
-        case srcInfoPoints l of
-         [_,b] -> do
-            printString "[t|"
-            exactPC t
-            printStringAt (pos b) "|]"
-         _ -> errorEP "ExactP: Bracket: TypeBracket is given wrong number of srcInfoPoints"
+    ExpBracket l e  -> printBracket "ExpBracket" "[|" "|]" l e
+    TExpBracket l e -> printBracket "TExpBracket" "[||" "||]" l e
+    PatBracket l p  -> printBracket "PatBracket" "[p|" "|]" l p
+    TypeBracket l t -> printBracket "TypeBracket" "[t|" "|]" l t
     DeclBracket l ds ->
         case srcInfoPoints l of
          pts@(_:_) -> do
@@ -1865,6 +1852,15 @@
             layoutList (init pts) (sepFunBinds ds)
             printStringAt (pos (last pts)) "|]"
          _ -> errorEP "ExactP: Bracket: DeclBracket is given too few srcInfoPoints"
+
+printBracket :: ExactP ast => String -> String -> String -> SrcSpanInfo -> ast SrcSpanInfo -> EP ()
+printBracket con oBracket cBracket l c =
+  case srcInfoPoints l of
+    [_,b] -> do
+      printString oBracket
+      exactPC c
+      printStringAt (pos b) cBracket
+    _ -> errorEP $ "ExactP: Bracket: " ++ con ++ " is given wrong number of srcInfoPoints"
 
 instance ExactP XAttr where
   exactP (XAttr l xn e) =
diff --git a/src/Language/Haskell/Exts/ExtScheme.hs b/src/Language/Haskell/Exts/ExtScheme.hs
--- a/src/Language/Haskell/Exts/ExtScheme.hs
+++ b/src/Language/Haskell/Exts/ExtScheme.hs
@@ -1,4 +1,6 @@
+{-# LANGUAGE Safe #-}
 {-# OPTIONS_HADDOCK hide #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.ExtScheme
diff --git a/src/Language/Haskell/Exts/Extension.hs b/src/Language/Haskell/Exts/Extension.hs
--- a/src/Language/Haskell/Exts/Extension.hs
+++ b/src/Language/Haskell/Exts/Extension.hs
@@ -1,5 +1,5 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP, DeriveDataTypeable, Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.Extension
@@ -375,6 +375,8 @@
   -- > import "network" Network.Socket
   | PackageImports
 
+  | ImportQualifiedPost
+
   | LambdaCase
 
   -- | [GHC &#xa7; 7.3.20] Allow case expressions with no alternatives.
@@ -546,6 +548,20 @@
 
   | UnboxedSums
 
+  | TypeInType
+
+  | Strict
+
+  | StrictData
+
+  -- | Enable deriving instances via types of the same runtime representation.
+  -- Implies 'DerivingStrategies'.
+  | DerivingVia
+
+  | QuantifiedConstraints
+
+  | BlockArguments
+
   deriving (Show, Read, Eq, Ord, Enum, Bounded, Data, Typeable)
 
 -- | Certain extensions imply other extensions, and this function
@@ -581,9 +597,12 @@
                     ImpredicativeTypes   -> [ExplicitForAll]
                     PolyKinds           -> [KindSignatures]
                     TypeFamilyDependencies -> [TypeFamilies]
+                    TypeInType          -> [PolyKinds, DataKinds, KindSignatures]
+                    TypeOperators       -> [ExplicitNamespaces]
                     -- Deprecations
                     RecordPuns          -> [NamedFieldPuns]
                     PatternSignatures   -> [ScopedTypeVariables]
+                    DerivingVia         -> [DerivingStrategies]
                     _                   -> []
 
 -- | The list of extensions enabled by
diff --git a/src/Language/Haskell/Exts/Fixity.hs b/src/Language/Haskell/Exts/Fixity.hs
--- a/src/Language/Haskell/Exts/Fixity.hs
+++ b/src/Language/Haskell/Exts/Fixity.hs
@@ -1,5 +1,5 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP, DeriveDataTypeable, Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.Fixity
@@ -39,6 +39,7 @@
 import Language.Haskell.Exts.SrcLoc
 
 import Control.Monad (when, (<=<), liftM, liftM2, liftM3, liftM4)
+import qualified Control.Monad.Fail as Fail
 import Data.Traversable (mapM)
 import Data.Maybe (fromMaybe)
 import Data.Typeable
@@ -59,9 +60,9 @@
   -- | Tweak any expressions in the element to account for the
   --   fixities given. Assumes that all operator expressions are
   --   fully left associative chains to begin with.
-  applyFixities :: Monad m => [Fixity]      -- ^ The fixities to account for.
-                    -> ast SrcSpanInfo      -- ^ The element to tweak.
-                    -> m (ast SrcSpanInfo)  -- ^ The same element, but with operator expressions updated, or a failure.
+  applyFixities :: Fail.MonadFail m => [Fixity]  -- ^ The fixities to account for.
+                    -> ast SrcSpanInfo           -- ^ The element to tweak.
+                    -> m (ast SrcSpanInfo)       -- ^ The same element, but with operator expressions updated, or a failure.
 
 assocNone, assocLeft, assocRight :: Assoc ()
 assocNone = AssocNone ()
@@ -141,7 +142,7 @@
     [infixr_ 9  ["."]
     ,infixl_ 9  ["!!"]
     ,infixr_ 8  ["^","^^","**"]
-    ,infixl_ 7  ["*","/","`quot`","`rem`","`div`","`mod`",":%","%"]
+    ,infixl_ 7  ["*","/","`quot`","`rem`","`div`","`mod`"]
     ,infixl_ 6  ["+","-"]
     ,infixr_ 5  [":","++"]
     ,infix_  4  ["==","/=","<","<=",">=",">","`elem`","`notElem`"]
@@ -161,15 +162,17 @@
 baseFixities :: [Fixity]
 baseFixities = preludeFixities ++ concat
     [infixl_ 9 ["!","//","!:"]
+    ,infixr_ 9 ["`Compose`"]
     ,infixl_ 8 ["`shift`","`rotate`","`shiftL`","`shiftR`","`rotateL`","`rotateR`"]
-    ,infixl_ 7 [".&."]
+    ,infixl_ 7 [".&.","%"]
+    ,infixr_ 6 ["<>"]
     ,infixl_ 6 ["`xor`"]
     ,infix_  6 [":+"]
     ,infixl_ 5 [".|."]
-    ,infixr_ 5 ["+:+","<++","<+>"] -- fixity conflict for +++ between ReadP and Arrow
+    ,infixr_ 5 ["+:+","<++","<+>","<|"] -- fixity conflict for +++ between ReadP and Arrow
     ,infix_  5 ["\\\\"]
-    ,infixl_ 4 ["<**>"]
-    ,infix_  4 ["`elemP`","`notElemP`"]
+    ,infixl_ 4 ["<**>","$>","<$","<$!>"]
+    ,infix_  4 ["`elemP`","`notElemP`",":~:",":~~:"]
     ,infixl_ 3 ["<|>"]
     ,infixr_ 3 ["&&&","***"]
     ,infixr_ 2 ["+++","|||"]
@@ -239,7 +242,7 @@
     _ -> return dir
     where fix x = applyFixities fixs x
 
-appFixDecls :: Monad m => Maybe (ModuleName SrcSpanInfo) -> [Fixity] -> [Decl SrcSpanInfo] -> m [Decl SrcSpanInfo]
+appFixDecls :: Fail.MonadFail m => Maybe (ModuleName SrcSpanInfo) -> [Fixity] -> [Decl SrcSpanInfo] -> m [Decl SrcSpanInfo]
 appFixDecls mmdl fixs decls =
     let extraFixs = getFixities mmdl decls
      in mapM (applyFixities (fixs++extraFixs)) decls
@@ -377,7 +380,7 @@
 -- Recursively fixes the "leaves" of the infix chains,
 -- without yet touching the chain itself. We assume all chains are
 -- left-associate to begin with.
-leafFix :: Monad m => [Fixity] -> Exp SrcSpanInfo -> m (Exp SrcSpanInfo)
+leafFix :: Fail.MonadFail m => [Fixity] -> Exp SrcSpanInfo -> m (Exp SrcSpanInfo)
 leafFix fixs e' = case e' of
     InfixApp l e1 op e2       -> liftM2 (flip (InfixApp l) op) (leafFix fixs e1) (fix e2)
     App l e1 e2               -> liftM2 (App l) (fix e1) (fix e2)
@@ -425,7 +428,7 @@
   where
     fix x = applyFixities fixs x
 
-leafFixP :: Monad m => [Fixity] -> Pat SrcSpanInfo -> m (Pat SrcSpanInfo)
+leafFixP :: Fail.MonadFail m => [Fixity] -> Pat SrcSpanInfo -> m (Pat SrcSpanInfo)
 leafFixP fixs p' = case p' of
         PInfixApp l p1 op p2    -> liftM2 (flip (PInfixApp l) op) (leafFixP fixs p1) (fix p2)
         PApp l n ps             -> liftM (PApp l n) $ mapM fix ps
diff --git a/src/Language/Haskell/Exts/InternalLexer.hs b/src/Language/Haskell/Exts/InternalLexer.hs
--- a/src/Language/Haskell/Exts/InternalLexer.hs
+++ b/src/Language/Haskell/Exts/InternalLexer.hs
@@ -1,4 +1,7 @@
+{-# LANGUAGE Safe #-}
+{-# LANGUAGE BangPatterns #-}
 {-# OPTIONS_HADDOCK hide #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.Annotated.InternalLexer
@@ -99,15 +102,21 @@
         | RightArrowTail        -- >-
         | LeftDblArrowTail      -- -<<
         | RightDblArrowTail     -- >>-
+        | OpenArrowBracket      -- (|
+        | CloseArrowBracket     -- |)
 
 -- Template Haskell
         | THExpQuote            -- [| or [e|
+        | THTExpQuote           -- [|| or [e||
         | THPatQuote            -- [p|
         | THDecQuote            -- [d|
         | THTypQuote            -- [t|
         | THCloseQuote          -- |]
+        | THTCloseQuote         -- ||]
         | THIdEscape (String)   -- dollar x
         | THParenEscape         -- dollar (
+        | THTIdEscape String    -- dollar dollar x
+        | THTParenEscape        -- double dollar (
         | THVarQuote            -- 'x (but without the x)
         | THTyQuote             -- ''T (but without the T)
         | THQuasiQuote (String,String)  -- [$...|...]
@@ -197,6 +206,7 @@
         | KW_Pattern
         | KW_Stock
         | KW_Anyclass
+        | KW_Via
 
                 -- FFI
         | KW_Foreign
@@ -295,8 +305,9 @@
  ( "where",     (KW_Where,      Nothing) ),
  ( "role",      (KW_Role,       Just (Any [RoleAnnotations]))),
  ( "pattern",   (KW_Pattern,    Just (Any [PatternSynonyms]))),
- ( "stock",     (KW_Stock,      Nothing)),
- ( "anyclass",  (KW_Anyclass,   Nothing)),
+ ( "stock",     (KW_Stock,      Just (Any [DerivingStrategies]))),
+ ( "anyclass",  (KW_Anyclass,   Just (Any [DerivingStrategies]))),
+ ( "via",       (KW_Via,        Just (Any [DerivingVia]))),
 
 -- FFI
  ( "foreign",   (KW_Foreign,    Just (Any [ForeignFunctionInterface])) )
@@ -363,11 +374,16 @@
 
 isPragmaChar c = isAlphaNum c || c == '_'
 
+isIdentStart :: Char -> Bool
+isIdentStart c = isAlpha c && not (isUpper c) || c == '_'
+
+
 -- Used in the lexing of type applications
 -- Why is it like this? I don't know exactly but this is how it is in
 -- GHC's parser.
+-- Symbol `:` is added so that `@:` is lexed as `VarSym "@:"`. See Issue #326
 isOpSymbol :: Char -> Bool
-isOpSymbol c = c `elem` "!#$%&*+./<=>?@\\^|-~"
+isOpSymbol c = c `elem` ":!#$%&*+./<=>?@\\^|-~"
 
 -- | Checks whether the character would be legal in some position of a qvar.
 --   Means that '..' and "AAA" will pass the test.
@@ -663,31 +679,39 @@
                         return (con (n, '0':c:str))
 
         -- implicit parameters
-        '?':c:_ | isLower c && ImplicitParams `elem` exts -> do
+        '?':c:_ | isIdentStart c && ImplicitParams `elem` exts -> do
                         discard 1
                         id <- lexWhile isIdent
                         return $ IDupVarId id
 
-        '%':c:_ | isLower c && ImplicitParams `elem` exts -> do
+        '%':c:_ | isIdentStart c && ImplicitParams `elem` exts -> do
                         discard 1
                         id <- lexWhile isIdent
                         return $ ILinVarId id
         -- end implicit parameters
 
         -- harp
---        '(':'|':c:_  | isHSymbol c -> discard 1 >> return LeftParen
         '(':'|':c:_ | RegularPatterns `elem` exts && not (isHSymbol c) ->
-                     do discard 2
-                        return RPGuardOpen
-        '|':')':_ | RegularPatterns `elem` exts ->
-                     do discard 2
-                        return RPGuardClose
+                        discard 2 >> return RPGuardOpen
+                    | Arrows `elem` exts && not (isHSymbol c) ->
+                        discard 2 >> return OpenArrowBracket
+        '|':')':_ | RegularPatterns `elem` exts -> discard 2 >> return RPGuardClose
+                  | Arrows `elem` exts -> discard 2 >> return CloseArrowBracket
         {- This is handled by the reserved_ops above.
         '@':':':_ | RegularPatterns `elem` exts ->
                      do discard 2
                         return RPCAt -}
 
+
         -- template haskell
+        '[':'|':'|':_ | TemplateHaskell `elem` exts -> do
+                discard 3
+                return THTExpQuote
+
+        '[':'e':'|':'|':_ | TemplateHaskell `elem` exts -> do
+                discard 4
+                return THTExpQuote
+
         '[':'|':_ | TemplateHaskell `elem` exts -> do
                 discard 2
                 return THExpQuote
@@ -704,25 +728,35 @@
                     | c == 't' && TemplateHaskell `elem` exts -> do
                         discard 3
                         return THTypQuote
-        '[':'$':c:_ | isLower c && QuasiQuotes `elem` exts ->
+        '[':'$':c:_ | isIdentStart c && QuasiQuotes `elem` exts ->
                         discard 2 >> lexQuasiQuote c
 
-        '[':c:s' | isLower c && QuasiQuotes `elem` exts && case dropWhile isIdent s' of { '|':_ -> True;_->False} ->
+        '[':c:s' | isIdentStart c && QuasiQuotes `elem` exts && case dropWhile isIdent s' of { '|':_ -> True;_->False} ->
                         discard 1 >> lexQuasiQuote c
                  | isUpper c && QuasiQuotes `elem` exts && case dropWhile isPossiblyQvar s' of { '|':_ -> True;_->False} ->
                         discard 1 >> lexQuasiQuote c
 
+        '|':'|':']':_ | TemplateHaskell `elem` exts -> do
+                        discard 3
+                        return THTCloseQuote
         '|':']':_ | TemplateHaskell `elem` exts -> do
                         discard 2
                         return THCloseQuote
 
-        '$':c:_ | isLower c && TemplateHaskell `elem` exts -> do
+        '$':c1:c2:_ | isIdentStart c1 && TemplateHaskell `elem` exts -> do
                         discard 1
                         id <- lexWhile isIdent
                         return $ THIdEscape id
-                | c == '(' && TemplateHaskell `elem` exts -> do
+                    | c1 == '(' && TemplateHaskell `elem` exts -> do
                         discard 2
                         return THParenEscape
+                    | c1 == '$' && isIdentStart c2 && TemplateHaskell `elem` exts -> do
+                        discard 2
+                        id <- lexWhile isIdent
+                        return $ THTIdEscape id
+                    | c1 == '$' && c2 == '(' && TemplateHaskell `elem` exts -> do
+                        discard 3
+                        return THTParenEscape
         -- end template haskell
 
         -- hsx
@@ -767,7 +801,7 @@
                                                   else discard 1 >> return TApp
 
         '#':c:_ | OverloadedLabels `elem` exts
-                   && isLower c || c == '_' -> do
+                   && isIdentStart c -> do
                                                   discard 1
                                                   [ident] <- lexIdents
                                                   return $ LabelVarId ident
@@ -777,7 +811,7 @@
 
             | isUpper c -> lexConIdOrQual ""
 
-            | isLower c || c == '_' -> do
+            | isIdentStart c -> do
                     idents <- lexIdents
                     case idents of
                      [ident] -> case lookup ident (reserved_ids ++ special_varids) of
@@ -852,7 +886,7 @@
                 body <- lexQQBody
                 return $ THQuasiQuote (ident, body)
                   where lexQuoter
-                         | isLower c = lexWhile isIdent
+                         | isIdentStart c = lexWhile isIdent
                          | otherwise = do
                             qualThing <- lexConIdOrQual ""
                             case qualThing of
@@ -1049,7 +1083,7 @@
         exts <- getExtensionsL
         case rest of
           '.':c:_
-             | isLower c || c == '_' -> do  -- qualified varid?
+             | isIdentStart c -> do  -- qualified varid?
                     discard 1
                     ident <- lexWhile isIdent
                     s <- getInput
@@ -1113,23 +1147,23 @@
 
 
 lexString :: Lex a Token
-lexString = loop ("","")
+lexString = loop [] []
     where
-    loop (s,raw) = do
+    loop !s !raw = do
         r <- getInput
         exts <- getExtensionsL
         case r of
             '\\':'&':_ -> do
                     discard 2
-                    loop (s, '&':'\\':raw)
+                    loop s ('&':'\\':raw)
             '\\':c:_ | isSpace c -> do
                         discard 1
                         wcs <- lexWhiteChars
                         matchChar '\\' "Illegal character in string gap"
-                        loop (s, '\\':reverse wcs ++ '\\':raw)
+                        loop s ('\\':revAppend wcs ('\\':raw))
                      | otherwise -> do
                         (ce, str) <- lexEscape
-                        loop (ce:s, reverse str ++ '\\':raw)
+                        loop (ce `seq` ce : s) (revAppend str ('\\':raw))
             '"':'#':_ | MagicHash `elem` exts -> do
                         discard 2
                         return (StringHash (reverse s, reverse raw))
@@ -1138,9 +1172,13 @@
                 return (StringTok (reverse s, reverse raw))
             c:_ | c /= '\n' -> do
                 discard 1
-                loop (c:s, c:raw)
+                loop (c:s) (c:raw)
             _ ->   fail "Improperly terminated string"
 
+    revAppend :: [a] -> [a] -> [a]
+    revAppend []     ys = ys
+    revAppend (x:xs) ys = revAppend xs (x:ys)
+
     lexWhiteChars :: Lex a String
     lexWhiteChars = do
         s <- getInput
@@ -1271,8 +1309,10 @@
 
 -- Stolen from Hugs's Prelude
 parseInteger :: Integer -> String -> Integer
-parseInteger radix ds =
-    foldl1 (\n d -> n * radix + d) (map (toInteger . digitToInt) ds)
+parseInteger radix = go 0
+  where
+    go !acc []     = acc
+    go !acc (d:ds) = go (acc * radix + toInteger (digitToInt d)) ds
 
 flagKW :: Token -> Lex a ()
 flagKW t =
@@ -1346,13 +1386,19 @@
   RightArrowTail    -> ">-"
   LeftDblArrowTail  -> "-<<"
   RightDblArrowTail -> ">>-"
+  OpenArrowBracket  -> "(|"
+  CloseArrowBracket -> "|)"
   THExpQuote        -> "[|"
+  THTExpQuote       -> "[||"
   THPatQuote        -> "[p|"
   THDecQuote        -> "[d|"
   THTypQuote        -> "[t|"
   THCloseQuote      -> "|]"
+  THTCloseQuote     -> "||]"
   THIdEscape s      -> '$':s
   THParenEscape     -> "$("
+  THTIdEscape s     -> "$$" ++ s
+  THTParenEscape    -> "$$("
   THVarQuote        -> "'"
   THTyQuote         -> "''"
   THQuasiQuote (n,q) -> "[$" ++ n ++ "|" ++ q ++ "]"
@@ -1446,5 +1492,6 @@
   KW_Pattern    -> "pattern"
   KW_Stock      -> "stock"
   KW_Anyclass   -> "anyclass"
+  KW_Via        -> "via"
 
   EOF           -> "EOF"
diff --git a/src/Language/Haskell/Exts/InternalParser.ly b/src/Language/Haskell/Exts/InternalParser.ly
--- a/src/Language/Haskell/Exts/InternalParser.ly
+++ b/src/Language/Haskell/Exts/InternalParser.ly
@@ -1,6 +1,7 @@
 > {
 > {-# LANGUAGE CPP #-}
 > {-# OPTIONS_HADDOCK hide #-}
+> 
 > -----------------------------------------------------------------------------
 > -- |
 > -- Module      :  Language.Haskell.Exts.Annotated.Parser
@@ -94,13 +95,13 @@
         might be the start of the declaration with the activation being
         empty. Resolving with shift means the declaration cannot start with '['.
 
-1 for ambiguity in '{-# RULES "name" forall = ... #-}' 	[State 544]
-	since 'forall' is a valid variable name, we don't know whether
-	to treat a forall on the input as the beginning of a quantifier
-	or the beginning of the rule itself.  Resolving to shift means
-	it's always treated as a quantifier, hence the above is disallowed.
-	This saves explicitly defining a grammar for the rule lhs that
-	doesn't include 'forall'.
+1 for ambiguity in '{-# RULES "name" forall = ... #-}'  [State 544]
+        since 'forall' is a valid variable name, we don't know whether
+        to treat a forall on the input as the beginning of a quantifier
+        or the beginning of the rule itself.  Resolving to shift means
+        it's always treated as a quantifier, hence the above is disallowed.
+        This saves explicitly defining a grammar for the rule lhs that
+        doesn't include 'forall'.
 
 -----------------------------------------------------------------------------
 
@@ -172,22 +173,28 @@
 >       '>-'    { Loc $$ RightArrowTail }
 >       '-<<'   { Loc $$ LeftDblArrowTail }
 >       '>>-'   { Loc $$ RightDblArrowTail }
+>       '(|'    { Loc $$ OpenArrowBracket }
+>       '|)'    { Loc $$ CloseArrowBracket }
 
 Harp
 
->       '(|'    { Loc $$ RPGuardOpen }
->       '|)'    { Loc $$ RPGuardClose }
+>       '(/'    { Loc $$ RPGuardOpen }
+>       '/)'    { Loc $$ RPGuardClose }
 >       '@:'    { Loc $$ RPCAt }
 
 Template Haskell
 
 >       IDSPLICE        { Loc _ (THIdEscape _) }   -- $x
+>       TIDSPLICE       { Loc _ (THTIdEscape _) }  -- $$x
 >       '$('            { Loc $$ THParenEscape } -- 60
+>       '$$('           { Loc $$ THTParenEscape }
 >       '[|'            { Loc $$ THExpQuote }
+>       '[||'           { Loc $$ THTExpQuote }
 >       '[p|'           { Loc $$ THPatQuote }
 >       '[t|'           { Loc $$ THTypQuote }
 >       '[d|'           { Loc $$ THDecQuote }
 >       '|]'            { Loc $$ THCloseQuote }
+>       '||]'           { Loc $$ THTCloseQuote }
 >       VARQUOTE        { Loc $$ THVarQuote }      -- 'x
 >       TYPQUOTE        { Loc $$ THTyQuote }       -- ''T
 >       QUASIQUOTE      { Loc _ (THQuasiQuote _) }
@@ -260,6 +267,7 @@
 >       'pattern'       { Loc $$ KW_Pattern }
 >       'stock'         { Loc $$ KW_Stock }    -- for DerivingStrategies extension
 >       'anyclass'      { Loc $$ KW_Anyclass } -- for DerivingStrategies extension
+>       'via'           { Loc $$ KW_Via }      -- for DerivingStrategies extension
 
 Pragmas
 
@@ -291,7 +299,10 @@
 >       '{-# COMPLETE'          { Loc $$ COMPLETE }
 >       '#-}'                   { Loc $$ PragmaEnd }      -- 139
 
+Utility
 
+>       NEVER                   { Loc $$@SrcSpan{srcSpanStartLine= -1} _ } -- never-matching terminal of type SrcSpan
+
 > %monad { P }
 > %lexer { lexer } { Loc _ EOF }
 > %error { parseError }
@@ -455,10 +466,10 @@
 >       | impdecl                               { ([$1],[]) }
 
 > impdecl :: { ImportDecl L }
->       : 'import' optsrc optsafe optqualified maybepkg modid maybeas maybeimpspec
->                               { let { (mmn,ss,ml) = $7 ;
->                                       l = nIS $1 <++> ann $6 <+?> ml <+?> (fmap ann) $8 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ snd $5 ++ ss)}
->                                  in ImportDecl l $6 (fst $4) (fst $2) (fst $3) (fst $5) mmn $8 }
+>       : 'import' optsrc optsafe optqualified maybepkg modid optqualified_post maybeas maybeimpspec
+>                               { let { (mmn,ss,ml) = $8 ;
+>                                       l = nIS $1 <++> ann $6 <+?> ml <+?> (fmap ann) $9 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ snd $5 ++ snd $7 ++ ss)}
+>                                  in ImportDecl l $6 (fst $4 || fst $7) (fst $2) (fst $3) (fst $5) mmn $9 }
 
 > optsrc :: { (Bool,[S]) }
 >       : '{-# SOURCE' '#-}'                    { (True,[$1,$2]) }
@@ -473,6 +484,11 @@
 >       : 'qualified'                           { (True,[$1]) }
 >       | {- empty -}                           { (False, []) }
 
+> optqualified_post :: { (Bool,[S]) }
+>       : 'qualified'                           {% do { checkEnabled ImportQualifiedPost;
+>                                                       return (True,[$1]) } }
+>       | {- empty -}                           { (False, []) }
+
 Requires the PackageImports extension enabled.
 > maybepkg :: { (Maybe String,[S]) }
 >       : STRING                                {% do { checkEnabled PackageImports ;
@@ -645,7 +661,7 @@
 >                        return (InstDecl (nIS $1 <++> ann $3 <+?> minf <** ($1:ss)) $2 ih mis) } }
 
 Requires the StandaloneDeriving extension enabled.
->       | 'deriving' deriv_strategy 'instance' optoverlap ctype
+>       | 'deriving' deriv_standalone_strategy 'instance' optoverlap ctype
 >                {% do { checkEnabled StandaloneDeriving ;
 >                        ih <- checkInstHeader $5;
 >                        let {l = nIS $1 <++> ann $5 <** [$1,$3]};
@@ -662,6 +678,7 @@
 >                  }
 
        | '$(' trueexp ')'  { let l = $1 <^^> $3 <** [$1,$3] in SpliceDecl l $ ParenSplice l $2 }
+       | '$$(' trueexp ')' { let l = $1 <^^> $3 <** [$1,$3] in TSpliceDecl l $ TParenSplice l $2 }
 
 These require the ForeignFunctionInterface extension, handled by the
 lexer through the 'foreign' (and 'export') keyword.
@@ -742,6 +759,7 @@
 >         : ty_fam_inst_eqns ';' ty_fam_inst_eqn   { $1 ++ [$3] }
 >         | ty_fam_inst_eqns ';'                   { $1 }
 >         | ty_fam_inst_eqn                        { [$1] }
+>         |                                        { [] }
 
 > ty_fam_inst_eqn :: { TypeEqn L }
 >         : truectype '=' truectype
@@ -941,57 +959,72 @@
 >       : dtype                         {% checkType $1 }
 
 > dtype :: { PType L }
->       : btype                         { splitTilde $1 }
->       | btype qtyconop dtype          { TyInfix ($1 <> $3) $1 $2 $3 }
->       | btype qtyvarop dtype          { TyInfix ($1 <> $3) $1 (UnpromotedName (ann $2) $2) $3 } -- FIXME
->       | btype '->' ctype              { TyFun ($1 <> $3 <** [$2]) (splitTilde $1) $3 }
-       | btype '~' btype               {% do { checkEnabledOneOf [TypeFamilies, GADTs] ;
-                                               let {l = $1 <> $3 <** [$2]};
-                                               return $ TyPred l $ EqualP l $1 $3 } }
+>       : dtype_('*',NEVER)              { $1 }
 
+> dtype_(ostar,kstar) :: { PType L }
+>       : btype_(ostar,kstar)                                           { splitTilde $1 }
+>       | btype_(ostar,kstar) qtyconop dtype_(ostar,kstar)              { TyInfix ($1 <> $3) $1 $2 $3 }
+>       | btype_(ostar,kstar) qtyvarop_(ostar) dtype_(ostar,kstar)      { TyInfix ($1 <> $3) $1 (UnpromotedName (ann $2) $2) $3 } -- FIXME
+>       | btype_(ostar,kstar) '->' ctype_(ostar,kstar)                  { TyFun ($1 <> $3 <** [$2]) (splitTilde $1) $3 }
+       | btype_(ostar,kstar) '~' btype_(ostar,kstar)                    {% do { checkEnabledOneOf [TypeFamilies, GADTs] ;
+                                                                                let {l = $1 <> $3 <** [$2]};
+                                                                                return $ TyPred l $ EqualP l $1 $3 } }
+
 Implicit parameters can occur in normal types, as well as in contexts.
 
 > truetype :: { Type L }
 >       : type                          {% checkType $1 }
 
 > type :: { PType L }
->       : ivar '::' dtype               { let l = ($1 <> $3 <** [$2]) in TyPred l $ IParam l $1 $3 }
->       | dtype                         { $1 }
+>       : type_('*',NEVER)              { $1 }
 
+> type_(ostar,kstar) :: { PType L }
+>       : ivar '::' dtype_(ostar,kstar) { let l = ($1 <> $3 <** [$2]) in TyPred l $ IParam l $1 $3 }
+>       | dtype_(ostar,kstar)           { $1 }
+
 > truebtype :: { Type L }
 >       : btype                         {% checkType (splitTilde $1) }
 > trueatype :: { Type L }
 >       : atype                         {% checkType $1 }
 
 > btype :: { PType L }
->       : btype atype                   { TyApp ($1 <> $2) $1 $2 }
->       | atype                         { $1 }
+>       : btype_('*',NEVER)             { $1 }
 
+> btype_(ostar,kstar) :: { PType L }
+>       : btype_(ostar,kstar) atype_(ostar,kstar) { TyApp ($1 <> $2) $1 $2 }
+>       | atype_(ostar,kstar)           { $1 }
+
 UnboxedTuples requires the extension, but that will be handled through
 the (# and #) lexemes. Kinds will be handled at the kind rule.
 
 > atype :: { PType L }
->       : gtycon                        { TyCon   (ann $1) $1 }
+>       : atype_('*',NEVER)             { $1 }
+
+> atype_(ostar,kstar) :: { PType L }
+>       : kstar                         { TyStar  (nIS $1) }
+>       | gtycon_(ostar)                { TyCon   (ann $1) $1 }
 >       | tyvar                         {% checkTyVar $1 }
 >       | strict_mark atype             { let (mstrict, mupack) = $1
 >                                         in bangType mstrict mupack $2 }
->       | '(' types ')'                 { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Boxed   (reverse (fst $2)) }
->       | '(#' types_bars2 '#)'         { TyUnboxedSum ($1 <^^> $3 <** ($1: reverse ($3: snd $2))) (reverse (fst $2))  }
->       | '(#' types1 '#)'              { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Unboxed (reverse (fst $2)) }
->       | '[' type ']'                  { TyList  ($1 <^^> $3 <** [$1,$3]) $2 }
->       | '[:' type ':]'                { TyParArray  ($1 <^^> $3 <** [$1,$3]) $2 }
->       | '(' ctype ')'                 { TyParen ($1 <^^> $3 <** [$1,$3]) $2 }
->       | '(' ctype '::' kind ')'       { TyKind  ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }
+>       | '(' types_(ostar,kstar) ')'                   { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Boxed   (reverse (fst $2)) }
+>       | '(#' types_bars2(ostar,kstar) '#)'            { TyUnboxedSum ($1 <^^> $3 <** ($1: reverse ($3: snd $2))) (reverse (fst $2))  }
+>       | '(#' types1_(ostar,kstar) '#)'                { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Unboxed (reverse (fst $2)) }
+>       | '[' type_(ostar,kstar) ']'                    { TyList  ($1 <^^> $3 <** [$1,$3]) $2 }
+>       | '[:' type_(ostar,kstar) ':]'                  { TyParArray  ($1 <^^> $3 <** [$1,$3]) $2 }
+>       | '(' ctype_(ostar,kstar) ')'                   { TyParen ($1 <^^> $3 <** [$1,$3]) $2 }
+>       | '(' ctype_(ostar,kstar) '::' kind ')'         { TyKind  ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }
 >       | '$(' trueexp ')'              { let l = ($1 <^^> $3 <** [$1,$3]) in TySplice l $ ParenSplice l $2 }
+>       | '$$(' trueexp ')'             { let l = ($1 <^^> $3 <** [$1,$3]) in TySplice l $ TParenSplice l $2 }
 >       | IDSPLICE                      { let Loc l (THIdEscape s) = $1 in TySplice (nIS l) $ IdSplice (nIS l) s }
+>       | TIDSPLICE                     { let Loc l (THTIdEscape s) = $1 in TySplice (nIS l) $ TIdSplice (nIS l) s }
 >       | '_'                           { TyWildCard (nIS $1) Nothing }
 >       | QUASIQUOTE                    { let Loc l (THQuasiQuote (n,q)) = $1 in TyQuasiQuote (nIS l) n q }
->       | ptype                         { % checkEnabled DataKinds >> return (TyPromoted (ann $1) $1) }
+>       | ptype_(ostar,kstar)           { % checkEnabled DataKinds >> return (TyPromoted (ann $1) $1) }
 
-> ptype :: { Promoted L }
->       : VARQUOTE gcon_nolist                 {% fmap (PromotedCon (nIS $1 <++> ann $2  <** [$1]) True) (pexprToQName $2) }
->       | VARQUOTE '[' types1 ']'       {% PromotedList  ($1 <^^> $4 <** ($1:reverse($4:snd $3))) True . reverse <\$> mapM checkType (fst $3) }
->       |          '[' types  ']'       {% PromotedList  ($1 <^^> $3 <** ($1:reverse($3:snd $2))) False . reverse <\$> mapM checkType (fst $2) }
+> ptype_(ostar,kstar) :: { Promoted L }
+>       : VARQUOTE gcon_nolist                  {% fmap (PromotedCon (nIS $1 <++> ann $2  <** [$1]) True) (pexprToQName $2) }
+>       | VARQUOTE '[' types1_(ostar,kstar) ']' {% PromotedList  ($1 <^^> $4 <** ($1:reverse($4:snd $3))) True . reverse <\$> mapM checkType (fst $3) }
+>       |          '[' types_(ostar,kstar)  ']' {% PromotedList  ($1 <^^> $3 <** ($1:reverse($3:snd $2))) False . reverse <\$> mapM checkType (fst $2) }
 >       | VARQUOTE '[' ']'              { PromotedList  ($1 <^^> $3 <** [$1, $3]) True [] }
        | '[' ']'                       {% PromotedList  ($1 <^^> $2 <** [$1, $2]) False [] }
 >       | VARQUOTE '(' types1 ')'       {% PromotedTuple ($1 <^^> $4 <** ($1:reverse($4:snd $3))) . reverse <\$> mapM checkType (fst $3) }
@@ -1014,7 +1047,10 @@
 
 
 > gtycon :: { QName L }
->       : otycon                        { $1 }
+>       : gtycon_('*')                     { $1 }
+
+> gtycon_(ostar) :: { QName L }
+>       : otycon_(ostar)                     { $1 }
 >       | '(' ')'                       { unit_tycon_name              ($1 <^^> $2 <** [$1,$2]) }
 >       | '(' '->' ')'                  { fun_tycon_name               ($1 <^^> $3 <** [$1,$2,$3]) }
 >       | '[' ']'                       { list_tycon_name              ($1 <^^> $2 <** [$1,$2]) }
@@ -1023,9 +1059,12 @@
 >       | '(#' commas '#)'              { tuple_tycon_name             ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Unboxed (length $2) }
 
 > otycon :: { QName L }
+>       : otycon_('*')                     { $1 }
+
+> otycon_(ostar) :: { QName L }
 >       : qconid                        { $1 }
 >       | '(' gconsym ')'               { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }
->       | '(' qvarsym ')'               { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }
+>       | '(' qvarsym_(ostar) ')'       { updateQNameLoc ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }
 
 These are for infix types
 
@@ -1051,26 +1090,38 @@
 >       : ctype                         {% checkType $1 }
 
 > ctype :: { PType L }
->       : 'forall' ktyvars '.' ctype    { mkTyForall (nIS $1 <++> ann $4 <** [$1,$3]) (Just (reverse (fst $2))) Nothing $4 }
->       | context ctype                 { mkTyForall ($1 <> $2) Nothing (Just $1) $2 }
->       | type                          { $1 }
+>       : ctype_('*',NEVER)             { $1 }
 
+> ctype_(ostar,kstar) :: { PType L }
+>       : 'forall' ktyvars '.' ctype_(ostar,kstar)      { mkTyForall (nIS $1 <++> ann $4 <** [$1,$3]) (Just (reverse (fst $2))) Nothing $4 }
+>       | context_(ostar,kstar) ctype_(ostar,kstar)     { mkTyForall ($1 <> $2) Nothing (Just $1) $2 }
+>       | type_(ostar,kstar)                            { $1 }
+
 Equality constraints require the TypeFamilies extension.
 
 > context :: { PContext L }
->       : btype '=>'                    {% checkPContext $ (amap (\l -> l <++> nIS $2 <** (srcInfoPoints l ++ [$2]))) (splitTilde $1) }
+>       : context_('*',NEVER)           { $1 }
 
+> context_(ostar,kstar) :: { PContext L }
+>       : btype_(ostar,kstar) '=>'      {% checkPContext $ (amap (\l -> l <++> nIS $2 <** (srcInfoPoints l ++ [$2]))) (splitTilde $1) }
+
 > types :: { ([PType L],[S]) }
->       : types1 ',' ctype              { ($3 : fst $1, $2 : snd $1)  }
+>       : types_('*',NEVER)             { $1 }
 
+> types_(ostar,kstar) :: { ([PType L],[S]) }
+>       : types1_(ostar,kstar) ',' ctype_(ostar,kstar)  { ($3 : fst $1, $2 : snd $1)  }
+
 > types1 :: { ([PType L],[S]) }
->       : ctype                         { ([$1],[]) }
->       | types1 ',' ctype              { ($3 : fst $1, $2 : snd $1) }
+>       : types1_('*',NEVER)            { $1 }
 
-> types_bars2 :: { ([PType L],[S]) }
->   : ctype '|' ctype                   { ([$3, $1], [$2]) }
->   | types_bars2 '|' ctype             { ($3 : fst $1, $2 : snd $1) }
+> types1_(ostar,kstar) :: { ([PType L],[S]) }
+>       : ctype_(ostar,kstar)                           { ([$1],[]) }
+>       | types1_(ostar,kstar) ',' ctype_(ostar,kstar)  { ($3 : fst $1, $2 : snd $1) }
 
+> types_bars2(ostar,kstar) :: { ([PType L],[S]) }
+>   : ctype_(ostar,kstar) '|' ctype_(ostar,kstar)       { ([$3, $1], [$2]) }
+>   | types_bars2(ostar,kstar) '|' ctype_(ostar,kstar)  { ($3 : fst $1, $2 : snd $1) }
+
 > ktyvars :: { ([TyVarBind L],Maybe L) }
 >       : ktyvars ktyvar                { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }
 >       | {- empty -}                   { ([],Nothing) }
@@ -1127,10 +1178,14 @@
 
 > gadtconstr :: { [GadtDecl L] }
 >       : qcon '::' truectype            {% do { c <- checkUnQual $1;
->                                                return [GadtDecl ($1 <> $3 <** [$2]) c Nothing $3] } }
+>                                                return [GadtDecl ($1 <> $3 <** [$2]) c Nothing Nothing Nothing $3] } }
+>       | qcon '::' context '{' fielddecls '}' '->' truectype
+>                                       {% do { c <- checkUnQual $1;
+>                                               ctxt <- checkContext (Just $3) ;
+>                                               return [GadtDecl ($1 <> $8 <** [$2,$4,$6,$7] ++ snd $5) c Nothing ctxt (Just (reverse $ fst $5)) $8] } }
 >       | qcon '::' '{' fielddecls '}' '->' truectype
 >                                       {% do { c <- checkUnQual $1;
->                                               return [GadtDecl ($1 <> $7 <** [$2,$3,$5,$6] ++ snd $4) c (Just (reverse $ fst $4)) $7] } }
+>                                               return [GadtDecl ($1 <> $7 <** [$2,$3,$5,$6] ++ snd $4) c Nothing Nothing (Just (reverse $ fst $4)) $7] } }
 
 To allow the empty case we need the EmptyDataDecls extension.
 > constrs0 :: { ([QualConDecl L],[S],Maybe L) }
@@ -1182,15 +1237,15 @@
 >       | deriving                      { [$1] }
 
 > deriving :: { Deriving L }
->       : 'deriving' deriv_strategy qtycls1
->                                       { let l = nIS $1 <++> ann $3 <** [$1] in Deriving l $2 [IRule (ann $3) Nothing Nothing $3] }
->       | 'deriving' deriv_strategy '(' ')'
->                                       { Deriving ($1 <^^> $4 <** [$1,$3,$4]) $2 [] }
->       | 'deriving' deriv_strategy '(' dclasses ')'
->                                       { -- Distinguish deriving (Show) from deriving Show (#189)
->                                         case fst $4 of
->                                           [ts] -> Deriving ($1 <^^> $5 <** [$1]) $2 [IParen ($3 <^^> $5 <** [$3,$5]) ts]
->                                           tss  -> Deriving ($1 <^^> $5 <** $1:$3: reverse (snd $4) ++ [$5]) $2 (reverse tss)}
+>       : 'deriving' deriv_clause_types
+>             { let (ihs, last_ss, sss) = $2
+>               in Deriving ($1 <^^> last_ss <** $1:sss) Nothing ihs }
+>       | 'deriving' deriv_strategy_no_via deriv_clause_types
+>             { let (ihs, last_ss, sss) = $3
+>               in Deriving ($1 <^^> last_ss <** $1:sss) (Just $2) ihs }
+>       | 'deriving' deriv_clause_types deriv_strategy_via
+>             { let (ihs, last_ss, sss) = $2
+>               in Deriving ($1 <^^> last_ss <** $1:sss) (Just $3) ihs }
 
 > dclasses :: { ([InstRule L],[S]) }
 >       : types1                        {% checkDeriving (fst $1) >>= \ds -> return (ds, snd $1) }
@@ -1198,6 +1253,12 @@
 > qtycls1 :: { InstHead L }
 >       : qconid                        { IHCon (ann $1) $1 }
 
+> deriv_clause_types :: { ([InstRule L], SrcSpan, [SrcSpan]) }
+>       : qtycls1                       { [IRule (ann $1) Nothing Nothing $1], srcInfoSpan (ann $1), [] }
+>       | '(' ')'                       { [], $2, [$1, $2] }
+>       | '(' dclasses ')'              { case fst $2 of
+>                                           [ts] -> ([IParen ($1 <^^> $3 <** [$1,$3]) ts], $3, [])
+>                                           tss  -> (reverse tss, $3, $1: reverse (snd $2) ++ [$3]) }
 
 -----------------------------------------------------------------------------
 Kinds
@@ -1206,32 +1267,7 @@
 >       : kind1                 {% checkEnabled KindSignatures >> return $1 }
 
 > kind1 :: { Kind L }
->       : bkind                 { $1 }
->       | bkind '->' kind1      { KindFn ($1 <> $3 <** [$2]) $1 $3 }
-
-> bkind :: { Kind L }
->       : akind                 { $1 }
->       | bkind akind           { KindApp ($1 <> $2) $1 $2 }
-
-> akind :: { Kind L }
->       : '*'                   { KindStar  (nIS $1) }
->       | '(' kind1 ')'         { KindParen ($1 <^^> $3 <** [$1,$3]) $2 }
->       | pkind                 {% checkKind $1 >> return $1 }
->       | qvarid                {% checkEnabled PolyKinds >> return (KindVar (ann $1) $1) }
-
-KindParen covers 1-tuples, KindVar l  while KindTuple is for pairs
-
-> pkind :: { Kind L }
->         : qtyconorcls         { KindVar (ann $1) $1 }
->         | '(' ')'             { let l = $1 <^^> $2 in KindVar l (unit_tycon_name l) }
->         | '(' kind ',' comma_kinds1  ')'
->             { KindTuple ($1 <^^> $5 <** ($1:$3:reverse ($5:snd $4))) ($2:reverse (fst $4)) }
->         | '[' kind ']'      { KindList  (($1 <^^> $3) <** [$1, $3]) $2 }
-
-> comma_kinds1 :: { ([Kind L], [S]) }
->      : kind1                   { ([$1], []) }
->      | kind1 ',' comma_kinds1  { ($1 : (fst $3), $2 : (snd $3)) }
-
+>       : ctype_(NEVER,'*')     {% checkType $1 }
 
 > optkind :: { (Maybe (Kind L), [S]) }
 >       : {-empty-}             { (Nothing,[]) }
@@ -1404,6 +1440,11 @@
 >       | exp10b                        { $1 }
 
 > exp10a :: { PExp L }
+>       : expblocka                     { $1 }
+>       | fexp expblocka                {% checkEnabled BlockArguments >>
+>                                          return (App ($1 <> $2) $1 $2) }
+
+> expblocka :: { PExp L }
 >       : '\\' apats '->' exp             { Lambda (nIS $1 <++> ann $4 <** [$1,$3]) (reverse $2) $4 }
 A let may bind implicit parameters
 >       | 'let' binds 'in' exp            { Let    (nIS $1 <++> ann $4 <** [$1,$3])    $2 $4 }
@@ -1416,26 +1457,29 @@
 >       | exppragma                       { $1 }
 
 > optlayoutsemi :: { [S] }
-> 	: ';'				  {% checkEnabled DoAndIfThenElse >> return [$1] }
+>       : ';'				  {% checkEnabled DoAndIfThenElse >> return [$1] }
 >	| {- empty -}			  { [] }
 
 We won't come here unless XmlSyntax is already checked.
 > opthsxsemi :: { [S] }
-> 	: ';'				  { [$1] }
+>       : ';'				  { [$1] }
 >	| {- empty -}			  { [] }
 
 
 mdo blocks require the RecursiveDo extension enabled, but the lexer handles that.
 
 > exp10b :: { PExp L }
+>       : expblockb                     { $1 }
+>       | '-' fexp                      { NegApp (nIS $1 <++> ann $2 <** [$1]) $2 }
+>       | fexp                          { $1 }
+
+> expblockb :: { PExp L }
 >       : 'case' exp 'of' altslist      { let (als, inf, ss) = $4 in Case (nIS $1 <++> inf <** ($1:$3:ss)) $2 als }
 >       | '\\' 'case' altslist          {% do { checkEnabled LambdaCase ;
 >                                               let { (als, inf, ss) = $3 } ;
 >                                               return (LCase (nIS $1 <++> inf <** ($1:$2:ss)) als) } }
->       | '-' fexp                      { NegApp (nIS $1 <++> ann $2 <** [$1]) $2 }
 >       | 'do'  stmtlist                { let (sts, inf, ss) = $2 in Do   (nIS $1 <++> inf <** $1:ss) sts }
 >       | 'mdo' stmtlist                { let (sts, inf, ss) = $2 in MDo  (nIS $1 <++> inf <** $1:ss) sts }
->       | fexp                          { $1 }
 
 > exppragma :: { PExp L }
 >       : '{-# CORE' STRING '#-}' exp   { let Loc l (StringTok (s,_)) = $2 in CorePragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }
@@ -1452,6 +1496,8 @@
 
 > fexp :: { PExp L }
 >       : fexp aexp                     { App ($1 <> $2) $1 $2 }
+>       | fexp expblockb                {% checkEnabled BlockArguments >>
+>                                          return (App ($1 <> $2) $1 $2) }
 >       | aexp                          { $1 }
 
 > apats :: { [Pat L] }
@@ -1511,15 +1557,19 @@
 >       | '[' list ']'                  { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) }
 >       | '[:' parr ':]'                { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) }
 >       | '(' erpats ')'                {% checkEnabled RegularPatterns >> return (Paren ($1 <^^> $3 <** [$1,$3]) $2) }
->       | '(|' sexps '|)'               { SeqRP ($1 <^^> $3 <** ($1:reverse (snd $2) ++ [$3])) $ reverse (fst $2) }
->       | '(|' exp '|' quals '|)'       { GuardRP ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 $ (reverse $ fst $4) }
+>       | '(|' exp '|)'                 { ArrOp ($1 <^^> $3 <** [$1,$3]) $2 }
+>       | '(/' sexps '/)'               { SeqRP ($1 <^^> $3 <** ($1:reverse (snd $2) ++ [$3])) $ reverse (fst $2) }
+>       | '(/' exp '|' quals '/)'       { GuardRP ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 $ (reverse $ fst $4) }
 >       | xml                           { $1 }
 
 
 Template Haskell - all this is enabled in the lexer.
 >       | IDSPLICE                      { let Loc l (THIdEscape s) = $1 in SpliceExp (nIS l) $ IdSplice (nIS l) s }
+>       | TIDSPLICE                     { let Loc l (THTIdEscape s) = $1 in SpliceExp (nIS l) $ TIdSplice (nIS l) s }
 >       | '$(' trueexp ')'              { let l = ($1 <^^> $3 <** [$1,$3]) in SpliceExp l $ ParenSplice l $2 }
+>       | '$$(' trueexp ')'             { let l = ($1 <^^> $3 <** [$1,$3]) in SpliceExp l $ TParenSplice l $2 }
 >       | '[|' trueexp '|]'             { let l = ($1 <^^> $3 <** [$1,$3]) in BracketExp l $ ExpBracket l $2 }
+>       | '[||' trueexp '||]'           { let l = ($1 <^^> $3 <** [$1,$3]) in BracketExp l $ TExpBracket l $2 }
 >       | '[p|' exp0 '|]'               {% do { p <- checkPattern $2;
 >                                               let {l = ($1 <^^> $3 <** [$1,$3]) };
 >                                               return $ BracketExp l $ PatBracket l p } }
@@ -1529,6 +1579,9 @@
 >       | VARQUOTE '(' ')'              { let {l1 = $1 <^^> $3 <** [$1];
 >                                              l2 = $2 <^^> $3 <** [$2,$3];}
 >                                          in VarQuote l1 (unit_con_name l2) }
+>       | VARQUOTE '[' ']'              { let {l1 = $1 <^^> $3 <** [$1];
+>                                              l2 = $2 <^^> $3 <** [$2,$3];}
+>                                          in VarQuote l1 (list_con_name l2) }
 >       | VARQUOTE qvar                 { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }
 >       | VARQUOTE qcon                 { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }
 >       | TYPQUOTE tyvar                { TypQuote (nIS $1 <++> ann $2 <** [$1]) (UnQual (ann $2) $2) }
@@ -1973,8 +2026,8 @@
 >       | 'unsafe'              { unsafe_name     (nIS $1) }
 >       | 'interruptible'       { interruptible_name (nIS $1) }
 >       | 'threadsafe'          { threadsafe_name (nIS $1) }
->	      | 'forall'		          { forall_name	  (nIS $1) }
->	      | 'family'		          { family_name     (nIS $1) }
+>	      | 'forall'                          { forall_name	  (nIS $1) }
+>	      | 'family'                          { family_name     (nIS $1) }
 >       | 'role'                { role_name  (nIS $1) }
 
 
@@ -1998,7 +2051,10 @@
 >       : CONSYM                { let Loc l (ConSym c) = $1 in Symbol (nIS l) c }
 
 > qvarsym :: { QName L }
->       : varsym                { UnQual (ann $1) $1 }
+>       : qvarsym_('*')         { $1 }
+
+> qvarsym_(ostar) :: { QName L }
+>       : varsym_(ostar)        { UnQual (ann $1) $1 }
 >       | qvarsym1              { $1 }
 
 > qvarsymm :: { QName L }
@@ -2006,14 +2062,20 @@
 >       | qvarsym1              { $1 }
 
 > varsym :: { Name L }
->       : varsymm               { $1 }
+>       : varsym_('*')          { $1 }
+
+> varsym_(ostar) :: { Name L }
+>       : varsymm_(ostar)       { $1 }
 >       | '-'                   { minus_name (nIS $1) }
 
-> varsymm :: { Name L } -- varsym not including '-'
+> varsymm :: { Name L }
+>       : varsymm_('*')         { $1 }
+
+> varsymm_(ostar) :: { Name L } -- varsym not including '-'
 >       : VARSYM                { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }
 >       | '!'                   { bang_name (nIS $1) }
 >       | '.'                   { dot_name  (nIS $1) }
->       | '*'                   { star_name (nIS $1) }
+>       | ostar                 { star_name (nIS $1) }
 
 > qvarsym1 :: { QName L }
 >       : QVARSYM               { let {Loc l (QVarSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }
@@ -2087,38 +2149,52 @@
 > pattern_synonym_sig :: { Decl L }
 >       : 'pattern' con_list '::' pstype
 >             {% do { checkEnabled PatternSynonyms ;
->                     let {(qtvs, ps, prov, req, ty) = $4} ;
->                     let {sig = PatSynSig (nIS $1 <++> ann ty <** [$1] ++ fst $2 ++ [$3] ++ ps)  (snd $2) qtvs prov req ty} ;
+>                     let {(qtvs, ps, prov, req_vars, req, ty) = $4} ;
+>                     let {sig = PatSynSig (nIS $1 <++> ann ty <** [$1] ++ fst $2 ++ [$3] ++ ps)  (snd $2) qtvs prov req_vars req ty} ;
 >                     return sig } }
 
-> pstype :: { (Maybe [TyVarBind L], [S], Maybe (Context L), Maybe (Context L), Type L )}
+> pstype :: { (Maybe [TyVarBind L], [S], Maybe (Context L), Maybe [TyVarBind L]
+>                                       , Maybe (Context L), Type L )}
 >       :  'forall' ktyvars '.' pstype
->             { let (qtvs, ps, prov, req, ty) = $4
->                in (Just (reverse (fst $2) ++ fromMaybe [] qtvs), ($1 : $3 : ps), prov, req, ty) }
+>             { let (qtvs, ps, prov, req_vars, req, ty) = $4
+>                in (Just (reverse (fst $2) ++ fromMaybe [] qtvs), ($1 : $3 : ps), prov, req_vars, req, ty) }
 >       | context context type
 >             {% do { c1 <- checkContext (Just $1) ;
 >                     c2 <- checkContext (Just $2) ;
 >                     t  <- checkType $3 ;
->                     return $ (Nothing, [], c1, c2, t) }}
+>                     return $ (Nothing, [], c1, Nothing, c2, t) }}
+>       | context 'forall' ktyvars '.' context type
+>             {% do { c1 <- checkContext (Just $1) ;
+>                     c2 <- checkContext (Just $5) ;
+>                     t  <- checkType $6 ;
+>                     return $ (Nothing, [], c1, Just (reverse (fst $3)), c2, t) }}
 >       | context type
 >              {% do { c1 <- checkContext (Just $1);
 >                      t <- checkType $2;
->                      return (Nothing, [], c1, Nothing, t) } }
+>                      return (Nothing, [], c1, Nothing, Nothing, t) } }
 >       | type
->              {% checkType $1 >>= \t -> return (Nothing, [], Nothing, Nothing, t) }
+>              {% checkType $1 >>= \t -> return (Nothing, [], Nothing, Nothing, Nothing, t) }
 
 -----------------------------------------------------------------------------
 Deriving strategies
 
-> deriv_strategy :: { Maybe (DerivStrategy L) }
+> deriv_strategy_no_via :: { DerivStrategy L }
 >       : 'stock'               {% do { checkEnabled DerivingStrategies
->                                     ; return (Just (DerivStock (nIS $1))) } }
+>                                     ; return (DerivStock (nIS $1)) } }
 >       | 'anyclass'            {% do { checkEnabled DerivingStrategies
 >                                     ; checkEnabled DeriveAnyClass
->                                     ; return (Just (DerivAnyclass (nIS $1))) } }
+>                                     ; return (DerivAnyclass (nIS $1)) } }
 >       | 'newtype'             {% do { checkEnabled DerivingStrategies
 >                                     ; checkEnabled GeneralizedNewtypeDeriving
->                                     ; return (Just (DerivNewtype (nIS $1))) } }
+>                                     ; return (DerivNewtype (nIS $1)) } }
+
+> deriv_strategy_via :: { DerivStrategy L }
+>       : 'via' truedtype       {% do { checkEnabled DerivingVia
+>                                     ; return (DerivVia (nIS $1) $2) } }
+
+> deriv_standalone_strategy :: { Maybe (DerivStrategy L) }
+>       : deriv_strategy_no_via { Just $1 }
+>       | deriv_strategy_via    { Just $1 }
 >       | {- empty -}           { Nothing }
 
 -----------------------------------------------------------------------------
@@ -2142,17 +2218,17 @@
 >       | 'safe'                { safe_name       (nIS $1) }
 >       | 'unsafe'              { unsafe_name     (nIS $1) }
 >       | 'threadsafe'          { threadsafe_name (nIS $1) }
-	| 'forall'		{ forall_name	  (nIS $1) }
-	| 'family'		{ family_name     (nIS $1) }
+        | 'forall'		{ forall_name	  (nIS $1) }
+        | 'family'		{ family_name     (nIS $1) }
 
-> qtyvarop :: { QName L }
-> qtyvarop : '`' tyvar '`'       { UnQual ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }
->          | tyvarsym            { UnQual (ann $1) $1 }
+> qtyvarop_(ostar) :: { QName L }
+> qtyvarop_ : '`' tyvar '`'     { UnQual ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }
+>          | tyvarsym_(ostar)   { UnQual (ann $1) $1 }
 
-> tyvarsym :: { Name L }
+> tyvarsym_(ostar) :: { Name L }
 > tyvarsym : VARSYM              { let Loc l (VarSym x) = $1 in Symbol (nIS l) x }
 >          | '-'                 { Symbol (nIS $1) "-" }
->          | '*'                 { Symbol (nIS $1) "*" }
+>          | ostar                   { Symbol (nIS $1) "*" }
 
 > impdeclsblock :: { ([ImportDecl L],[S],L) }
 >               : '{'  optsemis impdecls optsemis '}'         { let (ids, ss) = $3 in (ids, $1 : reverse $2 ++ ss ++ reverse $4 ++ [$5], $1 <^^> $5) }
diff --git a/src/Language/Haskell/Exts/Lexer.hs b/src/Language/Haskell/Exts/Lexer.hs
--- a/src/Language/Haskell/Exts/Lexer.hs
+++ b/src/Language/Haskell/Exts/Lexer.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE Safe #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.Lexer
diff --git a/src/Language/Haskell/Exts/ParseMonad.hs b/src/Language/Haskell/Exts/ParseMonad.hs
--- a/src/Language/Haskell/Exts/ParseMonad.hs
+++ b/src/Language/Haskell/Exts/ParseMonad.hs
@@ -1,4 +1,6 @@
+{-# LANGUAGE CPP, Safe #-}
 {-# OPTIONS_HADDOCK hide #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.ParseMonad
@@ -47,7 +49,9 @@
 import Control.Monad (when, liftM, ap)
 import qualified Control.Monad.Fail as Fail
 import Data.Monoid hiding ((<>))
+#if !MIN_VERSION_base(4,13,0)
 import Data.Semigroup (Semigroup(..))
+#endif
 -- To avoid import warnings for Control.Applicative, Data.Monoid, and Data.Semigroup
 import Prelude
 
@@ -76,7 +80,7 @@
     | ParseFailed SrcLoc String
                 -- ^ The parse failed at the specified
                 -- source location, with an error message.
-    deriving Show
+    deriving (Show, Ord, Eq)
 
 -- | Retrieve the result of a successful parse, throwing an
 --   error if the parse is actually not successful.
@@ -95,8 +99,9 @@
   ParseFailed loc msg <*> _ = ParseFailed loc msg
 
 instance Monad ParseResult where
-  return = ParseOk
+#if !MIN_VERSION_base(4,13,0)
   fail = Fail.fail
+#endif
   ParseOk x           >>= f = f x
   ParseFailed loc msg >>= _ = ParseFailed loc msg
 instance Fail.MonadFail ParseResult where
@@ -109,7 +114,6 @@
 
 instance ( Monoid m , Semigroup m) => Monoid (ParseResult m) where
   mempty = ParseOk mempty
-  mappend = (<>)
 
 -- internal version
 data ParseStatus a = Ok ParseState a | Failed SrcLoc String
@@ -237,16 +241,17 @@
   fmap = liftM
 
 instance Applicative P where
-  pure = return
+  pure a = P $ \_i _x _y _l _ch s _m -> Ok s a
   (<*>) = ap
 
 instance Monad P where
-    return a = P $ \_i _x _y _l _ch s _m -> Ok s a
     P m >>= k = P $ \i x y l ch s mode ->
         case m i x y l ch s mode of
             Failed loc msg -> Failed loc msg
             Ok s' a -> runP (k a) i x y l ch s' mode
+#if !MIN_VERSION_base(4,13,0)
     fail   = Fail.fail
+#endif
 
 instance Fail.MonadFail P where
     fail s = P $ \_r _col _line loc _ _stk _m -> Failed loc s
@@ -347,14 +352,15 @@
     fmap = liftM
 
 instance Applicative (Lex r) where
-    pure = return
+    pure a = Lex $ \k -> k a
     (<*>) = ap
 
 instance Monad (Lex r) where
-    return a = Lex $ \k -> k a
     Lex v >>= f = Lex $ \k -> v (\a -> runL (f a) k)
     Lex v >> Lex w = Lex $ \k -> v (\_ -> w k)
+#if !MIN_VERSION_base(4,13,0)
     fail   = Fail.fail
+#endif
 
 instance Fail.MonadFail (Lex r) where
     fail s = Lex $ \_ -> fail s
diff --git a/src/Language/Haskell/Exts/ParseSyntax.hs b/src/Language/Haskell/Exts/ParseSyntax.hs
--- a/src/Language/Haskell/Exts/ParseSyntax.hs
+++ b/src/Language/Haskell/Exts/ParseSyntax.hs
@@ -101,6 +101,7 @@
     | RightArrApp     l (PExp l) (PExp l)   -- ^ e >- e
     | LeftArrHighApp  l (PExp l) (PExp l)   -- ^ e -<< e
     | RightArrHighApp l (PExp l) (PExp l)   -- ^ e >>- e
+    | ArrOp l (PExp l)                      -- ^ (| e |)
 
 -- LambdaCase
     | LCase l [Alt l]                       -- ^ @\case@ /alts/
@@ -183,6 +184,7 @@
         RightArrApp     l _ _   -> l
         LeftArrHighApp  l _ _   -> l
         RightArrHighApp l _ _   -> l
+        ArrOp           l _     -> l
 
         LCase l _               -> l
         MultiIf l _             -> l
@@ -255,6 +257,7 @@
         RightArrApp     l e1 e2 -> RightArrApp     (f l) e1 e2
         LeftArrHighApp  l e1 e2 -> LeftArrHighApp  (f l) e1 e2
         RightArrHighApp l e1 e2 -> RightArrHighApp (f l) e1 e2
+        ArrOp           l e     -> ArrOp           (f l) e
 
         LCase l alts -> LCase (f l) alts
         MultiIf l alts -> MultiIf (f l) alts
@@ -300,6 +303,7 @@
         (Maybe [TyVarBind l])
         (Maybe (PContext l))
         (PType l)
+     | TyStar  l                                -- ^ @*@, the type of types
      | TyFun   l (PType l) (PType l)            -- ^ function type
      | TyTuple l Boxed     [PType l]            -- ^ tuple type, possibly boxed
      | TyUnboxedSum l [PType l]                 -- ^ unboxed sum
@@ -313,6 +317,7 @@
      | TyInfix l (PType l) (MaybePromotedName l) (PType l)  -- ^ infix type constructor
      | TyKind  l (PType l) (Kind l)             -- ^ type with explicit kind signature
      | TyPromoted l (S.Promoted l)              -- ^ promoted data type
+     | TyEquals l (PType l) (PType l)           -- ^ type equality constraint
      | TySplice l (Splice l)                    -- ^ template haskell splice type
      | TyBang l (BangType l) (Unpackedness l) (PType l) -- ^ Strict type marked with \"@!@\" or type marked with UNPACK pragma.
      | TyWildCard l (Maybe (Name l))            -- ^ Type wildcard
@@ -322,6 +327,7 @@
 instance Annotated PType where
     ann t = case t of
       TyForall l _ _ _              -> l
+      TyStar  l                     -> l
       TyFun   l _ _                 -> l
       TyTuple l _ _                 -> l
       TyUnboxedSum l _              -> l
@@ -334,6 +340,7 @@
       TyInfix l _ _ _               -> l
       TyKind  l _ _                 -> l
       TyPromoted l   _              -> l
+      TyEquals l _ _                 -> l
       TyPred l _                    -> l
       TySplice l _                  -> l
       TyBang  l _ _ _                 -> l
@@ -341,6 +348,7 @@
       TyQuasiQuote l _ _            -> l
     amap f t' = case t' of
       TyForall l mtvs mcx t         -> TyForall (f l) mtvs mcx t
+      TyStar  l                     -> TyStar (f l)
       TyFun   l t1 t2               -> TyFun (f l) t1 t2
       TyTuple l b ts                -> TyTuple (f l) b ts
       TyUnboxedSum l ts             -> TyUnboxedSum (f l) ts
@@ -353,6 +361,7 @@
       TyInfix l ta qn tb            -> TyInfix (f l) ta qn tb
       TyKind  l t k                 -> TyKind (f l) t k
       TyPromoted l   p              -> TyPromoted (f l)   p
+      TyEquals l t1 t2              -> TyEquals (f l) t1 t2
       TyPred l asst                 -> TyPred (f l) asst
       TySplice l s                  -> TySplice (f l) s
       TyBang  l b u t                 -> TyBang (f l) b u t
@@ -360,29 +369,17 @@
       TyQuasiQuote l n s            -> TyQuasiQuote (f l) n s
 
 data PAsst l
-    = ClassA l (QName l) [PType l]
-    | AppA l (Name l) [PType l]
-    | InfixA l (PType l) (QName l) (PType l)
+    = TypeA l (PType l)
     | IParam l (IPName l) (PType l)
-    | EqualP l (PType l)  (PType l)
     | ParenA l (PAsst l)
-    | WildCardA l (Maybe (Name l))
   deriving (Eq, Show, Functor)
 
 instance Annotated PAsst where
     ann asst = case asst of
-        ClassA l _ _        -> l
-        AppA l _ _          -> l
-        InfixA l _ _ _      -> l
+        TypeA l _           -> l
         IParam l _ _        -> l
-        EqualP l _ _        -> l
         ParenA l _          -> l
-        WildCardA l _       -> l
     amap f asst = case asst of
-        ClassA l qn ts      -> ClassA (f l) qn ts
-        AppA l t ts         -> AppA (f l) t ts
-        InfixA l ta qn tb   -> InfixA (f l) ta qn tb
+        TypeA l t           -> TypeA (f l) t
         IParam l ipn t      -> IParam (f l) ipn t
-        EqualP l t1 t2      -> EqualP (f l) t1 t2
         ParenA l a          -> ParenA (f l) a
-        WildCardA l mn      -> WildCardA (f l) mn
diff --git a/src/Language/Haskell/Exts/ParseUtils.hs b/src/Language/Haskell/Exts/ParseUtils.hs
--- a/src/Language/Haskell/Exts/ParseUtils.hs
+++ b/src/Language/Haskell/Exts/ParseUtils.hs
@@ -98,7 +98,7 @@
 import Control.Monad (when,unless)
 
 #if __GLASGOW_HASKELL__ < 710
-import Control.Applicative (Applicative (..), (<$>))
+import Control.Applicative ((<$>))
 #endif
 
 type L = SrcSpanInfo
@@ -177,9 +177,9 @@
 checkPContext (TyParen l t) = do
     c <- checkAssertion t
     return $ CxSingle l (ParenA l c)
-checkPContext (TyPred tp p@(EqualP {})) = do
+checkPContext t@(TyEquals tp _ _) = do
   checkEnabledOneOf [TypeFamilies, GADTs]
-  return $ CxSingle tp p
+  return $ CxSingle tp $ TypeA tp t
 
 checkPContext t = do
     c <- checkAssertion t
@@ -194,33 +194,46 @@
 checkAssertion (TyParen l asst) = do
     asst' <- checkAssertion asst
     return $ ParenA l asst'
-checkAssertion (TyPred _ p@(IParam _ _ _)) = return p
+checkAssertion (TyPred _ p) = checkAAssertion p
 -- We cannot even get here unless TypeFamilies or GADTs is enabled.
 -- N.B.: this is called only when the equality assertion is part of a
 -- tuple
-checkAssertion (TyPred _ p@(EqualP _ _ _)) = return p
-checkAssertion t' = checkAssertion' id [] t'
+checkAssertion t' = do
+        t'' <- checkAssertion' id [] t'
+        return $ TypeA (ann t'') t''
     where   -- class assertions must have at least one argument
+            checkAssertion' _ _ t@(TyEquals _ _ _) = return t
             checkAssertion' fl ts (TyCon l c) = do
                 when (length ts < 1) $ checkEnabled FlexibleContexts
                 checkAndWarnTypeOperators c
-                return $ ClassA (fl l) c ts
+                return $ tyApps (fl l) (TyCon (fl l) c) ts
             checkAssertion' fl ts (TyApp l a t) =
                 -- no check on t at this stage
                 checkAssertion' (const (fl l)) (t:ts) a
             checkAssertion' fl _ (TyInfix l a op b) = do
                 -- infix operators require TypeOperators
                 checkAndWarnTypeOperators (getMaybePromotedQName op)
-                return $ InfixA (fl l) a (getMaybePromotedQName op) b
+                return $ TyInfix (fl l) a op b
             checkAssertion' fl ts (TyParen l t) =
                 checkAssertion' (const (fl l)) ts t
             checkAssertion' fl ts (TyVar l t) = do -- Dict :: cxt => Dict cxt
                 checkEnabled ConstraintKinds
-                return $ AppA (fl l) t ts
-            checkAssertion' _ _ (TyWildCard l wc) =
-                return $ WildCardA l wc
-            checkAssertion' _ _ _ = fail "Illegal class assertion"
+                return $ tyApps (fl l) (TyVar (fl l) t) ts
+            checkAssertion' _ _ t@(TyWildCard _ _) = return t
+            checkAssertion' _ _ t = do
+                checkEnabled QuantifiedConstraints -- anything goes
+                return t
+            tyApps :: L -> PType L -> [PType L] -> PType L
+            tyApps _ c [] = c
+            tyApps l c (a:aa) = tyApps l (TyApp l c a) aa
 
+checkAAssertion :: PAsst L -> P (PAsst L)
+checkAAssertion (TypeA _ t) = checkAssertion t
+checkAAssertion (ParenA l a) = do
+    a' <- checkAAssertion a
+    return $ ParenA l a'
+checkAAssertion p = return p
+
 -- Check class/instance declaration for multiparams
 checkMultiParam :: PType L -> P ()
 checkMultiParam = checkMultiParam' []
@@ -252,8 +265,8 @@
 checkSContext :: Maybe (PContext L) -> P (Maybe (S.Context L))
 checkSContext (Just ctxt) = case ctxt of
     CxEmpty l -> return $ Just $ S.CxEmpty l
-    CxSingle l a -> checkAsst True a >>= return . Just . S.CxSingle l
-    CxTuple l as -> mapM (checkAsst True) as >>= return . Just . S.CxTuple l
+    CxSingle l a -> checkAsst a >>= return . Just . S.CxSingle l
+    CxTuple l as -> mapM checkAsst as >>= return . Just . S.CxTuple l
 checkSContext _ = return Nothing
 
 -- Checks ordinary contexts for sigtypes and data type
@@ -263,52 +276,23 @@
 checkContext :: Maybe (PContext L) -> P (Maybe (S.Context L))
 checkContext (Just ctxt) = case ctxt of
     CxEmpty l -> return $ Just $ S.CxEmpty l
-    CxSingle l a -> checkAsst False a >>= return . Just . S.CxSingle l
-    CxTuple l as -> mapM (checkAsst False) as >>= return . Just . S.CxTuple l
+    CxSingle l a -> checkAsst a >>= return . Just . S.CxSingle l
+    CxTuple l as -> mapM checkAsst as >>= return . Just . S.CxTuple l
 checkContext _ = return Nothing
 
-checkAsst :: Bool -> PAsst L -> P (S.Asst L)
-checkAsst isSimple asst =
+checkAsst :: PAsst L -> P (S.Asst L)
+checkAsst asst =
     case asst of
-      ClassA l qn pts -> do
-                ts <- mapM (checkAsstParam isSimple) pts
-                return $ S.ClassA l qn ts
-      AppA l n pts    -> do
-                ts <- mapM (checkAsstParam isSimple) pts
-                return $ S.AppA l n ts
-      InfixA l a op b -> do
-                [a',b'] <- mapM (checkAsstParam isSimple) [a,b]
-                return $ S.InfixA l a' op b'
+      TypeA l pt -> do
+                t <- checkType pt
+                return $ S.TypeA l t
       IParam l ipn pt -> do
                 t <- checkType pt
                 return $ S.IParam l ipn t
-      EqualP l pa pb  -> do
-                a <- checkType pa
-                b <- checkType pb
-                return $ S.EqualP l a b
       ParenA l a      -> do
-                a' <- checkAsst isSimple a
+                a' <- checkAsst a
                 return $ S.ParenA l a'
-      WildCardA l a ->
-        if isSimple then fail "Malformed Context: WildCards not allowed in simple contexts"
-                    else return $ S.WildCardA l a
 
-checkAsstParam :: Bool -> PType L -> P (S.Type L)
-checkAsstParam isSimple t = do
-        exts <- getExtensions
-        if FlexibleContexts `elem` exts
-         then checkType t
-         else case t of
-                TyVar l n     -> return $ S.TyVar l n
-                TyWildCard l mn ->  return $ S.TyWildCard l mn
-                TyParen l t1  -> do t1' <- checkAsstParam isSimple t1
-                                    return $ S.TyParen l t1'
-                TyApp l pf pt | not isSimple    -> do
-                        f <- checkAsstParam isSimple pf
-                        t' <- checkType pt
-                        return $ S.TyApp l f t'
-                _       -> fail "Malformed context: FlexibleContexts is not enabled"
-
 -----------------------------------------------------------------------------
 -- Checking Headers
 
@@ -753,6 +737,7 @@
     RightArrApp l e1 e2     -> check2Exprs e1 e2 (S.RightArrApp l)
     LeftArrHighApp l e1 e2  -> check2Exprs e1 e2 (S.LeftArrHighApp l)
     RightArrHighApp l e1 e2 -> check2Exprs e1 e2 (S.RightArrHighApp l)
+    ArrOp l e               -> S.ArrOp l <$> checkExpr e
 
     -- LamdaCase
     LCase l alts -> return $ S.LCase l alts
@@ -1107,6 +1092,7 @@
             checkEnabled ExplicitForAll
             ctxt <- checkContext cs
             check1Type pt (S.TyForall l tvs ctxt)
+    TyStar  l         -> return $ S.TyStar l
     TyFun   l at rt   -> check2Types at rt (S.TyFun l)
     TyTuple l b pts   -> checkTypes pts >>= return . S.TyTuple l b
     TyUnboxedSum l es -> checkTypes es >>= return . S.TyUnboxedSum l
@@ -1124,14 +1110,8 @@
                            >> check2Types at bt (flip (S.TyInfix l) op)
     TyKind  l pt k    -> check1Type pt (flip (S.TyKind l) k)
 
-     -- TyPred can be a valid type if ConstraintKinds is enabled, unless it is an implicit parameter, which is not a valid type
-    TyPred _ (ClassA l className cvars) -> mapM checkType cvars >>= \vars -> return (foldl1 (S.TyApp l) (S.TyCon l className:vars))
-    TyPred _ (InfixA l t0 op t1)        -> S.TyInfix l <$> checkType t0 <*> pure (UnpromotedName (ann op) op) <*> checkType t1
-    TyPred _ (EqualP l t0    t1)        -> do
-      checkEnabledOneOf [TypeFamilies, GADTs]
-      S.TyEquals l <$> checkType t0 <*> checkType t1
-
     TyPromoted l p -> return $ S.TyPromoted l p -- ??
+    TyEquals l at bt   -> check2Types at bt (S.TyEquals l)
     TySplice l s        -> do
                               checkEnabled TemplateHaskell
                               return $ S.TySplice l s
@@ -1177,9 +1157,9 @@
 -- test for that.
 checkKind :: Kind l -> P ()
 checkKind k = case k of
-        KindVar _ q | constrKind q -> checkEnabledOneOf [ConstraintKinds, DataKinds]
+        S.TyVar _ q | constrKind q -> checkEnabledOneOf [ConstraintKinds, DataKinds]
             where constrKind name = case name of
-                    (UnQual _ (Ident _ n)) -> n == "Constraint"
+                    Ident _ n -> n == "Constraint"
                     _                      -> False
 
         _ -> checkEnabled DataKinds
@@ -1286,11 +1266,11 @@
 splitTilde t = go t
   where go (TyApp loc t1 t2)
           | TyBang _ (LazyTy eqloc) (NoUnpackPragma _) t2' <- t2
-          = TyPred loc (EqualP (loc <** [srcInfoSpan eqloc]) (go t1) t2')
+          = TyEquals (loc <** [srcInfoSpan eqloc]) (go t1) t2'
           | otherwise
           = case go t1 of
-              (TyPred _ (EqualP eqloc tl tr)) ->
-                TyPred loc (EqualP (eqloc <++> ann t2 <** srcInfoPoints eqloc) tl (TyApp (ann tr <++> ann t2) tr t2))
+              TyEquals eqloc tl tr ->
+                TyEquals (eqloc <++> ann t2 <** srcInfoPoints eqloc) tl (TyApp (ann tr <++> ann t2) tr t2)
               t' -> TyApp loc t' t2
 
         go t' = t'
diff --git a/src/Language/Haskell/Exts/Parser.hs b/src/Language/Haskell/Exts/Parser.hs
--- a/src/Language/Haskell/Exts/Parser.hs
+++ b/src/Language/Haskell/Exts/Parser.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE CPP, DeriveDataTypeable, FlexibleInstances, DeriveFunctor #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Language.Haskell.Exts.Annotated.Parser
diff --git a/src/Language/Haskell/Exts/Pretty.hs b/src/Language/Haskell/Exts/Pretty.hs
--- a/src/Language/Haskell/Exts/Pretty.hs
+++ b/src/Language/Haskell/Exts/Pretty.hs
@@ -117,7 +117,6 @@
 instance Monad (DocM s) where
         (>>=) = thenDocM
         (>>) = then_DocM
-        return = retDocM
 
 {-# INLINE thenDocM #-}
 {-# INLINE then_DocM #-}
@@ -480,14 +479,17 @@
         pretty (SpliceDecl _ splice) =
                 pretty splice
 
+        pretty (TSpliceDecl _ splice) =
+                pretty splice
+
         pretty (TypeSig _ nameList qualType) =
                 mySep ((punctuate comma . map pretty $ nameList)
                       ++ [text "::", pretty qualType])
 
         --  Req can be ommitted if it is empty
         --  We must print prov if req is nonempty
-        pretty (PatSynSig _ ns mtvs prov req t) =
-                let contexts = map (maybePP pretty) [prov, req]
+        pretty (PatSynSig _ ns mtvs prov mtvs2 req t) =
+                let contexts = [maybePP pretty prov, ppForall mtvs2, maybePP pretty req]
                  in
                   mySep ( [text "pattern" ]
                            ++ punctuate comma (map pretty ns)
@@ -769,12 +771,12 @@
                 myFsep [ppForall tvs, maybePP pretty ctxt, pretty con]
 
 instance  Pretty (GadtDecl l) where
-        pretty (GadtDecl _pos name names ty) =
+        pretty (GadtDecl _pos name tvs ctxt names ty) =
             case names of
                 Nothing ->
                     myFsep [pretty name, text "::", pretty ty]
                 Just ts' ->
-                    myFsep [pretty name, text "::" ,
+                    myFsep [pretty name, text "::" , ppForall tvs, maybePP pretty ctxt,
                          braceList . map pretty $ ts', text "->", pretty ty]
 
 instance  Pretty (ConDecl l) where
@@ -807,15 +809,31 @@
         pretty NoUnpackPragma {} = empty
 
 instance Pretty (Deriving l) where
-  pretty (Deriving _ mds [d]) = text "deriving" <+> maybePP pretty mds <+> pretty d
-  pretty (Deriving _ mds d)   = text "deriving" <+> maybePP pretty mds <+> parenList (map pretty d)
+  pretty (Deriving _ mds d) =
+    hsep [ text "deriving"
+         , pp_strat_before
+         , pp_dct
+         , pp_strat_after ]
+    where
+      pp_dct =
+        case d of
+          [d'] -> pretty d'
+          _    -> parenList (map pretty d)
 
+      -- @via@ is unique in that in comes /after/ the class being derived,
+      -- so we must special-case it.
+      (pp_strat_before, pp_strat_after) =
+        case mds of
+          Just (via@DerivVia{}) -> (empty, pretty via)
+          _                     -> (maybePP pretty mds, empty)
+
 instance Pretty (DerivStrategy l) where
-  pretty ds = text $
+  pretty ds =
     case ds of
-      DerivStock _    -> "stock"
-      DerivAnyclass _ -> "anyclass"
-      DerivNewtype _  -> "newtype"
+      DerivStock _    -> text "stock"
+      DerivAnyclass _ -> text "anyclass"
+      DerivNewtype _  -> text "newtype"
+      DerivVia _ ty   -> text "via" <+> pretty ty
 
 ------------------------- Types -------------------------
 ppBType :: Type l -> Doc
@@ -833,6 +851,7 @@
 instance  Pretty (Type l) where
         prettyPrec p (TyForall _ mtvs ctxt htype) = parensIf (p > 0) $
                 myFsep [ppForall mtvs, maybePP pretty ctxt, pretty htype]
+        prettyPrec _ (TyStar _) = text "*"
         prettyPrec p (TyFun _ a b) = parensIf (p > 0) $
                 myFsep [ppBType a, text "->", pretty b]
         prettyPrec _ (TyTuple _ bxd l) =
@@ -852,7 +871,6 @@
         prettyPrec _ (TyVar _ name) = pretty name
         prettyPrec _ (TyCon _ name) = pretty name
         prettyPrec _ (TyParen _ t) = parens (pretty t)
---        prettyPrec _ (TyPred asst) = pretty asst
         prettyPrec _ (TyInfix _ a op b) = myFsep [pretty a, pretty op, pretty b]
         prettyPrec _ (TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])
         prettyPrec _ (TyPromoted _ p) = pretty p
@@ -875,14 +893,25 @@
       PromotedCon _ hasQuote qn ->
         addQuote hasQuote (pretty qn)
       PromotedList _ hasQuote list ->
-        addQuote hasQuote $ bracketList . punctuate comma . map pretty $ list
+        addQuote hasQuote $ brackets . addSpace list . prettyList $ list
       PromotedTuple _ list ->
-        addQuote True $ parenList $ map pretty list
+        addQuote True $ parens . addSpace list . prettyList $ list
       PromotedUnit {} -> addQuote True $ text "()"
     where
       addQuote True doc = char '\'' <> doc
       addQuote False doc = doc
 
+      checkQuote (PromotedCon _ q _) = q
+      checkQuote (PromotedList _ q _) = q
+      checkQuote (PromotedTuple _ _) = True
+      checkQuote _ = False
+
+      addSpace (TyPromoted _ l0:_) | checkQuote l0 = (space <>)
+      addSpace _ = id
+
+      prettyList = myFsepSimple . punctuate comma . map pretty
+
+
 instance  Pretty (TyVarBind l) where
         pretty (KindedVar _ var kind) = parens $ myFsep [pretty var, text "::", pretty kind]
         pretty (UnkindedVar _ var)    = pretty var
@@ -894,16 +923,6 @@
 
 ---------------------------- Kinds ----------------------------
 
-instance  Pretty (Kind l) where
-        prettyPrec _ KindStar{}      = text "*"
-        prettyPrec n (KindFn _ a b)  = parensIf (n > 0) $ myFsep [prettyPrec 1 a, text "->", pretty b]
-        prettyPrec _ (KindParen _ k) = parens $ pretty k
-        prettyPrec _ (KindVar _ n)   = pretty n
-        prettyPrec _ (KindTuple _ t) = parenList . map pretty $ t
-        prettyPrec _ (KindList _ l)  = brackets .  pretty $ l
-        prettyPrec n (KindApp _ a b) =
-          parensIf (n > 3) $ myFsep [prettyPrec 3 a, prettyPrec 4 b]
-
 ppOptKind :: Maybe (Kind l) -> [Doc]
 ppOptKind Nothing  = []
 ppOptKind (Just k) = [text "::", pretty k]
@@ -1072,6 +1091,7 @@
         prettyPrec p (RightArrApp _ l r)     = parensIf (p > 0) $ myFsep [pretty l, text ">-",  pretty r]
         prettyPrec p (LeftArrHighApp _ l r)  = parensIf (p > 0) $ myFsep [pretty l, text "-<<", pretty r]
         prettyPrec p (RightArrHighApp _ l r) = parensIf (p > 0) $ myFsep [pretty l, text ">>-", pretty r]
+        prettyPrec _ (ArrOp _ e) = myFsep [text "(|", pretty e, text "|)"]
 
         -- LamdaCase
         prettyPrec p (LCase _ altList) = parensIf (p > 1) $
@@ -1103,6 +1123,7 @@
 
 instance  Pretty (Bracket l) where
         pretty (ExpBracket _ e) = ppBracket "[|" e
+        pretty (TExpBracket _ e) = myFsep [text "[||", pretty e, text "||]"]
         pretty (PatBracket _ p) = ppBracket "[p|" p
         pretty (TypeBracket _ t) = ppBracket "[t|" t
         pretty (DeclBracket _ d) =
@@ -1113,6 +1134,9 @@
 
 instance  Pretty (Splice l) where
         pretty (IdSplice _ s) = char '$' <> text s
+        pretty (TIdSplice _ s) = char '$' <> char '$' <> text s
+        pretty (TParenSplice _ e) =
+                myFsep [text "$$(", pretty e, char ')']
         pretty (ParenSplice _ e) =
                 myFsep [text "$(", pretty e, char ')']
 
@@ -1340,15 +1364,10 @@
   pretty (CxSingle _ ctxt)  = pretty ctxt <+> text "=>"
   pretty (CxTuple _ context) = mySep [parenList (map pretty context), text "=>"]
 
--- hacked for multi-parameter type classes
 instance  Pretty (Asst l) where
-        pretty (ClassA _ a ts)   = myFsep $ pretty a : map ppAType ts
-        pretty (AppA _ n ns)     = myFsep $ pretty n : map pretty ns
-        pretty (InfixA _ a op b) = myFsep [pretty a, ppQNameInfix op, pretty b]
+        pretty (TypeA _ t)       = pretty t
         pretty (IParam _ i t)    = myFsep [pretty i, text "::", pretty t]
-        pretty (EqualP _ t1 t2)  = myFsep [pretty t1, text "~", pretty t2]
         pretty (ParenA _ a)      = parens (pretty a)
-        pretty (WildCardA _ mn)  = char  '_' <> maybePP pretty mn
 
 -- Pretty print a source location, useful for printing out error messages
 instance Pretty SrcLoc where
@@ -1618,6 +1637,7 @@
         pretty (P.RightArrApp _ l r)     = myFsep [pretty l, text ">-",  pretty r]
         pretty (P.LeftArrHighApp _ l r)  = myFsep [pretty l, text "-<<", pretty r]
         pretty (P.RightArrHighApp _ l r) = myFsep [pretty l, text ">>-", pretty r]
+        pretty (P.ArrOp _ e) = myFsep [text "(|", pretty e, text "|)"]
         pretty (P.AsPat _ name (P.IrrPat _ pat)) =
                 myFsep [pretty name <> char '@', char '~' <> pretty pat]
         pretty (P.AsPat _ name pat) =
@@ -1659,17 +1679,14 @@
         pretty (P.CxTuple _ assts) = myFsep [parenList (map pretty assts), text "=>"]
 
 instance SrcInfo loc => Pretty (P.PAsst loc) where
-        pretty (P.ClassA _ a ts)   = myFsep $ pretty ( a) : map (prettyPrec prec_atype) ts
-        pretty (P.AppA _ n ns)     = myFsep $ pretty n : map (prettyPrec prec_atype) ns
-        pretty (P.InfixA _ a op b) = myFsep [pretty a, ppQNameInfix op, pretty b]
+        pretty (P.TypeA _ t)       = pretty t
         pretty (P.IParam _ i t)    = myFsep [pretty i, text "::", pretty t]
-        pretty (P.EqualP _ t1 t2)  = myFsep [pretty t1, text "~", pretty t2]
         pretty (P.ParenA _ a)      = parens (pretty a)
-        pretty (P.WildCardA _ mn)  = char '_' <> maybePP pretty mn
 
 instance SrcInfo loc => Pretty (P.PType loc) where
         prettyPrec p (P.TyForall _ mtvs ctxt htype) = parensIf (p > 0) $
                 myFsep [ppForall mtvs, maybePP pretty ctxt, pretty htype]
+        prettyPrec _ (P.TyStar _) = text "*"
         prettyPrec p (P.TyFun _ a b) = parensIf (p > 0) $
                 myFsep [prettyPrec prec_btype a, text "->", pretty b]
         prettyPrec _ (P.TyTuple _ bxd l) =
@@ -1693,6 +1710,7 @@
         prettyPrec _ (P.TyInfix _ a op b) = myFsep [pretty a, pretty op, pretty b]
         prettyPrec _ (P.TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])
         prettyPrec _ (P.TyPromoted _ p) = pretty p
+        prettyPrec _ (P.TyEquals _ a b) = myFsep [pretty a, text "~", pretty b]
         prettyPrec _ (P.TySplice _ s) = pretty s
         prettyPrec _ (P.TyBang _ b u t) = pretty u <+> pretty b <> prettyPrec prec_atype t
         prettyPrec _ (P.TyWildCard _ mn) = char '_' <> maybePP pretty mn
diff --git a/src/Language/Haskell/Exts/SrcLoc.hs b/src/Language/Haskell/Exts/SrcLoc.hs
--- a/src/Language/Haskell/Exts/SrcLoc.hs
+++ b/src/Language/Haskell/Exts/SrcLoc.hs
@@ -18,6 +18,10 @@
 import Data.Data
 import GHC.Generics (Generic)
 
+showInt :: Int -> String
+showInt i | i < 0 = "(" ++ show i ++ ")"
+showInt i = show i
+
 -- | A single position in the source.
 data SrcLoc = SrcLoc
     { srcFilename :: String
@@ -29,7 +33,7 @@
 instance Show SrcLoc where
   showsPrec n (SrcLoc fn sl sc) =
     showParen (n >= 11) $
-      showString $ "SrcLoc " ++ show fn ++ " " ++ unwords (map show [sl,sc])
+      showString $ "SrcLoc " ++ show fn ++ " " ++ unwords (map showInt [sl,sc])
 
 noLoc :: SrcLoc
 noLoc = SrcLoc "" (-1) (-1)
@@ -47,7 +51,7 @@
 instance Show SrcSpan where
   showsPrec n (SrcSpan fn sl sc el ec) =
     showParen (n >= 11) $
-      showString $ "SrcSpan " ++ show fn ++ " " ++ unwords (map show [sl,sc,el,ec])
+      showString $ "SrcSpan " ++ show fn ++ " " ++ unwords (map showInt [sl,sc,el,ec])
 
 
 -- | Returns 'srcSpanStartLine' and 'srcSpanStartColumn' in a pair.
diff --git a/src/Language/Haskell/Exts/Syntax.hs b/src/Language/Haskell/Exts/Syntax.hs
--- a/src/Language/Haskell/Exts/Syntax.hs
+++ b/src/Language/Haskell/Exts/Syntax.hs
@@ -65,7 +65,7 @@
     -- * Class Assertions and Contexts
     Context(..), FunDep(..), Asst(..),
     -- * Types
-    Type(..), Boxed(..), Kind(..), TyVarBind(..), Promoted(..),
+    Type(..), Boxed(..), Kind, TyVarBind(..), Promoted(..),
     TypeEqn (..),
     -- * Expressions
     Exp(..), Stmt(..), QualStmt(..), FieldUpdate(..),
@@ -97,14 +97,14 @@
     -- ** Main function of a program
     main_name,
     -- ** Constructors
-    unit_con_name, tuple_con_name, list_cons_name, unboxed_singleton_con_name,
+    unit_con_name, tuple_con_name, list_con_name, list_cons_name, unboxed_singleton_con_name,
     unit_con, tuple_con, unboxed_singleton_con,
     -- ** Special identifiers
     as_name, qualified_name, hiding_name, minus_name, bang_name, dot_name, star_name,
     export_name, safe_name, unsafe_name, interruptible_name, threadsafe_name,
     stdcall_name, ccall_name, cplusplus_name, dotnet_name, jvm_name, js_name,
     javascript_name, capi_name, forall_name, family_name, role_name, hole_name,
-    stock_name, anyclass_name,
+    stock_name, anyclass_name, via_name,
     -- ** Type constructors
     unit_tycon_name, fun_tycon_name, list_tycon_name, tuple_tycon_name, unboxed_singleton_tycon_name,
     unit_tycon, fun_tycon, list_tycon, tuple_tycon, unboxed_singleton_tycon,
@@ -134,7 +134,7 @@
 -- data constructors.
 data SpecialCon l
     = UnitCon l             -- ^ unit type and data constructor @()@
-    | ListCon l             -- ^ list type constructor @[]@
+    | ListCon l             -- ^ list type and data constructor @[]@
     | FunCon  l             -- ^ function type constructor @->@
     | TupleCon l Boxed Int  -- ^ /n/-ary tuple type and data
                             --   constructors @(,)@ etc, possibly boxed @(\#,\#)@
@@ -241,7 +241,7 @@
 -- | An explicit import specification list.
 data ImportSpecList l
     = ImportSpecList l Bool [ImportSpec l]
-            -- A list of import specifications.
+            -- ^ A list of import specifications.
             -- The 'Bool' is 'True' if the names are excluded
             -- by @hiding@.
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
@@ -299,9 +299,13 @@
      -- ^ A declaration of default types
      | SpliceDecl   l (Exp l)
      -- ^ A Template Haskell splicing declaration
+     | TSpliceDecl  l (Exp l)
+     -- ^ A typed Template Haskell splicing declaration
      | TypeSig      l [Name l] (Type l)
      -- ^ A type signature declaration
-     | PatSynSig    l [Name l] (Maybe [TyVarBind l]) (Maybe (Context l)) (Maybe (Context l)) (Type l)
+     | PatSynSig    l [Name l] (Maybe [TyVarBind l]) (Maybe (Context l))
+                               (Maybe [TyVarBind l]) (Maybe (Context l))
+                                                     (Type l)
      -- ^ A pattern synonym signature declation
      | FunBind      l [Match l]
      -- ^ A set of function binding clauses
@@ -485,12 +489,13 @@
 
 -- | Which technique the user explicitly requested when deriving an instance.
 data DerivStrategy l
-  = DerivStock l    -- ^ GHC's \"standard\" strategy, which is to implement a
-                    --   custom instance for the data type. This only works for
-                    --   certain types that GHC knows about (e.g., 'Eq', 'Show',
-                    --   'Functor' when @-XDeriveFunctor@ is enabled, etc.)
-  | DerivAnyclass l -- ^ @-XDeriveAnyClass@
-  | DerivNewtype l  -- ^ @-XGeneralizedNewtypeDeriving@
+  = DerivStock l        -- ^ GHC's \"standard\" strategy, which is to implement a
+                        --   custom instance for the data type. This only works for
+                        --   certain types that GHC knows about (e.g., 'Eq', 'Show',
+                        --   'Functor' when @-XDeriveFunctor@ is enabled, etc.)
+  | DerivAnyclass l     -- ^ @-XDeriveAnyClass@
+  | DerivNewtype l      -- ^ @-XGeneralizedNewtypeDeriving@
+  | DerivVia l (Type l) -- ^ @-XDerivingVia@
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
 
 -- | A binding group inside a @let@ or @where@ clause.
@@ -558,7 +563,9 @@
 -- then @'Maybe' ['FieldDecl' l]@ is 'Nothing', and the whole constructor's
 -- type (such as @Int -> Bool -> Ty@) is stored in the last 'Type' field.
 data GadtDecl l
-    = GadtDecl l (Name l) (Maybe [FieldDecl l]) (Type l)
+    = GadtDecl l (Name l)
+        {-forall-} (Maybe [TyVarBind l]) {- . -} (Maybe (Context l))
+        {- => -} (Maybe [FieldDecl l]) (Type l)
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
 
 -- | Declarations inside a class declaration.
@@ -624,6 +631,7 @@
         (Maybe [TyVarBind l])
         (Maybe (Context l))
         (Type l)                                -- ^ qualified type
+     | TyStar  l                                -- ^ @*@, the type of types
      | TyFun   l (Type l) (Type l)              -- ^ function type
      | TyTuple l Boxed [Type l]                 -- ^ tuple type, possibly boxed
      | TyUnboxedSum l [Type l]                  -- ^ unboxed tuple type
@@ -669,15 +677,7 @@
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
 
 -- | An explicit kind annotation.
-data Kind l
-    = KindStar  l                    -- ^ @*@, the kind of types
-    | KindFn    l (Kind l) (Kind l)  -- ^ @->@, the kind of a type constructor
-    | KindParen l (Kind l)           -- ^ a parenthesised kind
-    | KindVar   l (QName l)          -- ^ @k@, a kind variable (-XPolyKinds)
-    | KindApp   l (Kind l) (Kind l)  -- ^ @k1 k2@
-    | KindTuple l [Kind l]           -- ^ @'(k1,k2,k3)@, a promoted tuple
-    | KindList  l (Kind l)           -- ^ @'[k1]@, a promoted list literal
-  deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
+type Kind = Type
 
 
 -- | A functional dependency, given on the form
@@ -694,17 +694,10 @@
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
 
 -- | Class assertions.
---   In Haskell 98, the argument would be a /tyvar/, but this definition
---   allows multiple parameters, and allows them to be /type/s.
---   Also extended with support for implicit parameters and equality constraints.
 data Asst l
-        = ClassA l (QName l) [Type l]           -- ^ ordinary class assertion
-        | AppA l (Name l) [Type l]              -- ^ constraint kind assertion, @Dict :: cxt a => Dict cxt@
-        | InfixA l (Type l) (QName l) (Type l)  -- ^ class assertion where the class name is given infix
+        = TypeA l (Type l)                      -- ^ type assertion
         | IParam l (IPName l) (Type l)          -- ^ implicit parameter assertion
-        | EqualP l (Type l) (Type l)            -- ^ type equality constraint
         | ParenA l (Asst l)                     -- ^ parenthesised class assertion
-        | WildCardA l (Maybe (Name l))          -- ^ Context Wildcard
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
 
 -- | /literal/
@@ -807,6 +800,7 @@
     | RightArrApp     l (Exp l) (Exp l)     -- ^ arrow application (from right): /exp/ @>-@ /exp/
     | LeftArrHighApp  l (Exp l) (Exp l)     -- ^ higher-order arrow application (from left): /exp/ @-<<@ /exp/
     | RightArrHighApp l (Exp l) (Exp l)     -- ^ higher-order arrow application (from right): /exp/ @>>-@ /exp/
+    | ArrOp           l (Exp l)             -- ^ arrow control operators: @(| /exp/ |)@
 
 -- LambdaCase
     | LCase l [Alt l]                       -- ^ @\case@ /alts/
@@ -827,6 +821,7 @@
 -- | A template haskell bracket expression.
 data Bracket l
     = ExpBracket l (Exp l)        -- ^ expression bracket: @[| ... |]@
+    | TExpBracket l (Exp l)       -- ^ typed expression bracket: @[|| ... ||]@
     | PatBracket l (Pat l)        -- ^ pattern bracket: @[p| ... |]@
     | TypeBracket l (Type l)      -- ^ type bracket: @[t| ... |]@
     | DeclBracket l [Decl l]      -- ^ declaration bracket: @[d| ... |]@
@@ -835,7 +830,9 @@
 -- | A template haskell splice expression
 data Splice l
     = IdSplice l String           -- ^ variable splice: @$var@
+    | TIdSplice l String          -- ^ typed variable splice: @$$var@
     | ParenSplice l (Exp l)       -- ^ parenthesised expression splice: @$(/exp/)@
+    | TParenSplice l (Exp l)      -- ^ parenthesised typed expression splice: @$$(/exp/)@
   deriving (Eq,Ord,Show,Typeable,Data,Foldable,Traversable,Functor,Generic)
 
 -- | The safety of a foreign function call.
@@ -1022,6 +1019,9 @@
 tuple_con_name :: l -> Boxed -> Int -> QName l
 tuple_con_name l b i = Special l (TupleCon l b (i+1))
 
+list_con_name :: l -> QName l
+list_con_name l = Special l (ListCon l)
+
 list_cons_name :: l -> QName l
 list_cons_name l = Special l (Cons l)
 
@@ -1052,7 +1052,7 @@
 export_name, safe_name, unsafe_name, interruptible_name, threadsafe_name,
   stdcall_name, ccall_name, cplusplus_name, dotnet_name,
   jvm_name, js_name, javascript_name, capi_name, forall_name,
-  family_name, role_name, stock_name, anyclass_name :: l -> Name l
+  family_name, role_name, stock_name, anyclass_name, via_name :: l -> Name l
 export_name     l = Ident l "export"
 safe_name       l = Ident l "safe"
 unsafe_name     l = Ident l "unsafe"
@@ -1071,6 +1071,7 @@
 role_name       l = Ident l "role"
 stock_name      l = Ident l "stock"
 anyclass_name   l = Ident l "anyclass"
+via_name        l = Ident l "via"
 
 unit_tycon_name, fun_tycon_name, list_tycon_name, unboxed_singleton_tycon_name :: l -> QName l
 unit_tycon_name l = unit_con_name l
@@ -1249,8 +1250,13 @@
     ann (DerivStock l)    = l
     ann (DerivAnyclass l) = l
     ann (DerivNewtype l)  = l
-    amap = fmap
+    ann (DerivVia l _)    = l
 
+    amap f (DerivStock l)    = DerivStock (f l)
+    amap f (DerivAnyclass l) = DerivAnyclass (f l)
+    amap f (DerivNewtype l)  = DerivNewtype (f l)
+    amap f (DerivVia l t)    = DerivVia (f l) t
+
 instance Annotated TypeEqn where
     ann (TypeEqn l _ _) = l
     amap f (TypeEqn l a b) = TypeEqn (f l) a b
@@ -1283,8 +1289,9 @@
         InfixDecl    l _ _ _            -> l
         DefaultDecl  l _                -> l
         SpliceDecl   l _                -> l
+        TSpliceDecl  l _                -> l
         TypeSig      l _ _              -> l
-        PatSynSig    l _ _ _ _ _        -> l
+        PatSynSig    l _ _ _ _ _ _      -> l
         FunBind      l _                -> l
         PatBind      l _ _ _            -> l
         ForImp       l _ _ _ _ _        -> l
@@ -1320,8 +1327,9 @@
         InfixDecl    l a k ops           -> InfixDecl (f l) a k ops
         DefaultDecl  l ts                -> DefaultDecl (f l) ts
         SpliceDecl   l sp                -> SpliceDecl (f l) sp
+        TSpliceDecl  l sp                -> TSpliceDecl (f l) sp
         TypeSig      l ns t              -> TypeSig (f l) ns t
-        PatSynSig    l n dh c1 c2 t      -> PatSynSig (f l) n dh c1 c2 t
+        PatSynSig    l n dh c1 dh2 c2 t      -> PatSynSig (f l) n dh c1 dh2 c2 t
         FunBind      l ms                -> FunBind (f l) ms
         PatBind      l p rhs bs          -> PatBind (f l) p rhs bs
         ForImp       l cc msf s n t      -> ForImp (f l) cc msf s n t
@@ -1434,8 +1442,8 @@
     amap f (FieldDecl l ns t) = FieldDecl (f l) ns t
 
 instance Annotated GadtDecl where
-    ann (GadtDecl l _  _ _) = l
-    amap f (GadtDecl l n t1 t2) = GadtDecl (f l) n t1 t2
+    ann (GadtDecl l _ _ _ _ _) = l
+    amap f (GadtDecl l n t1 t2 t3 t4) = GadtDecl (f l) n t1 t2 t3 t4
 
 instance Annotated ClassDecl where
     ann (ClsDecl    l _)      = l
@@ -1494,6 +1502,7 @@
 instance Annotated Type where
     ann t = case t of
       TyForall l _ _ _              -> l
+      TyStar  l                     -> l
       TyFun   l _ _                 -> l
       TyTuple l _ _                 -> l
       TyUnboxedSum l _              -> l
@@ -1513,6 +1522,7 @@
       TyQuasiQuote l _ _            -> l
     amap f t1 = case t1 of
       TyForall l mtvs mcx t         -> TyForall (f l) mtvs mcx t
+      TyStar  l                     -> TyStar (f l)
       TyFun   l t1' t2              -> TyFun (f l) t1' t2
       TyTuple l b ts                -> TyTuple (f l) b ts
       TyUnboxedSum l s              -> TyUnboxedSum (f l) s
@@ -1545,22 +1555,6 @@
     amap f (KindedVar   l n k) = KindedVar   (f l) n k
     amap f (UnkindedVar l n)   = UnkindedVar (f l) n
 
-instance Annotated Kind where
-    ann (KindStar l) = l
-    ann (KindFn   l _ _) = l
-    ann (KindParen l _)  = l
-    ann (KindVar l _)    = l
-    ann (KindApp l _ _)  = l
-    ann (KindTuple l _)  = l
-    ann (KindList  l _)  = l
-    amap f (KindStar l) = KindStar (f l)
-    amap f (KindFn   l k1 k2) = KindFn (f l) k1 k2
-    amap f (KindParen l k) = KindParen (f l) k
-    amap f (KindVar l n) = KindVar (f l) n
-    amap f (KindApp l k1 k2) = KindApp (f l) k1 k2
-    amap f (KindTuple l ks) = KindTuple (f l) ks
-    amap f (KindList  l ks) = KindList  (f l) ks
-
 instance Annotated FunDep where
     ann (FunDep l _ _) = l
     amap f (FunDep l ns1 ns2) = FunDep (f l) ns1 ns2
@@ -1575,21 +1569,13 @@
 
 instance Annotated Asst where
     ann asst = case asst of
-        ClassA l _ _     -> l
-        AppA l _ _       -> l
-        InfixA l _ _ _   -> l
+        TypeA l _        -> l
         IParam l _ _     -> l
-        EqualP l _ _     -> l
         ParenA l _       -> l
-        WildCardA l _    -> l
     amap f asst = case asst of
-        ClassA l qn ts      -> ClassA (f l) qn ts
-        AppA   l n ns       -> AppA   (f l) n ns
-        InfixA l ta qn tb   -> InfixA (f l) ta qn tb
+        TypeA l t           -> TypeA (f l) t
         IParam l ipn t      -> IParam (f l) ipn t
-        EqualP l t1 t2      -> EqualP (f l) t1 t2
         ParenA l a          -> ParenA (f l) a
-        WildCardA l mn      -> WildCardA (f l) mn
 
 instance Annotated Literal where
     ann lit = case lit of
@@ -1670,6 +1656,7 @@
         RightArrApp     l _ _  -> l
         LeftArrHighApp  l _ _  -> l
         RightArrHighApp l _ _  -> l
+        ArrOp           l _    -> l
 
         LCase l _              -> l
 
@@ -1730,6 +1717,7 @@
         RightArrApp     l e1' e2 -> RightArrApp     (f l) e1' e2
         LeftArrHighApp  l e1' e2 -> LeftArrHighApp  (f l) e1' e2
         RightArrHighApp l e1' e2 -> RightArrHighApp (f l) e1' e2
+        ArrOp           l e      -> ArrOp           (f l) e
 
         LCase l alts -> LCase (f l) alts
         MultiIf l alts -> MultiIf (f l) alts
@@ -1746,19 +1734,25 @@
 
 instance Annotated Bracket where
     ann (ExpBracket l _)  = l
+    ann (TExpBracket l _) = l
     ann (PatBracket l _)  = l
     ann (TypeBracket l _) = l
     ann (DeclBracket l _) = l
     amap f (ExpBracket l e) = ExpBracket (f l) e
+    amap f (TExpBracket l e) = TExpBracket (f l) e
     amap f (PatBracket l p) = PatBracket (f l) p
     amap f (TypeBracket l t) = TypeBracket (f l) t
     amap f (DeclBracket l ds) = DeclBracket (f l) ds
 
 instance Annotated Splice where
     ann (IdSplice l _)    = l
+    ann (TIdSplice l _)   = l
     ann (ParenSplice l _) = l
+    ann (TParenSplice l _) = l
     amap f (IdSplice l s) = IdSplice (f l) s
+    amap f (TIdSplice l s) = TIdSplice (f l) s
     amap f (ParenSplice l e) = ParenSplice (f l) e
+    amap f (TParenSplice l e) = TParenSplice (f l) e
 
 instance Annotated Safety where
     ann (PlayRisky l) = l
diff --git a/src/Language/Preprocessor/Unlit.hs b/src/Language/Preprocessor/Unlit.hs
--- a/src/Language/Preprocessor/Unlit.hs
+++ b/src/Language/Preprocessor/Unlit.hs
@@ -14,17 +14,17 @@
 classify (('\\':x):xs) | x == "begin{code}" = Blank : allProg xs
    where allProg [] = []  -- Should give an error message,
                           -- but I have no good position information.
-         allProg (('\\':x):xs) |  "end{code}"`isPrefixOf`x = Blank : classify xs
-         allProg (x:xs) = Program x:allProg xs
-classify (('>':x):xs)      = Program (' ':x) : classify xs
+         allProg (('\\':y):ys) |  "end{code}" `isPrefixOf` y = Blank : classify ys
+         allProg (y:ys) = Program y : allProg ys
+classify (('>':x):xs)      = Program (' ' : x) : classify xs
 classify (('#':x):xs)      = (case words x of
                                 (line:rest) | all isDigit line
                                    -> Include (read line) (unwords rest)
                                 _  -> Pre x
                              ) : classify xs
 --classify (x:xs) | "{-# LINE" `isPrefixOf` x = Program x: classify xs
-classify (x:xs) | all isSpace x = Blank:classify xs
-classify (x:xs)                 = Comment:classify xs
+classify (x:xs) | all isSpace x = Blank : classify xs
+classify (_:xs)                 = Comment : classify xs
 
 unclassify :: Classified -> String
 unclassify (Program s) = s
@@ -43,16 +43,16 @@
 
 adjacent :: FilePath -> Int -> Classified -> [Classified] -> [Classified]
 adjacent file 0 _             (x              :xs) = x : adjacent file 1 x xs -- force evaluation of line number
-adjacent file n y@(Program _) (x@Comment      :xs) = error (message file n "program" "comment")
-adjacent file n y@(Program _) (x@(Include i f):xs) = x: adjacent f    i     y xs
+adjacent file n   (Program _) (Comment        :_ ) = error (message file n "program" "comment")
+adjacent _    _ y@(Program _) (x@(Include i f):xs) = x: adjacent f    i     y xs
 adjacent file n y@(Program _) (x@(Pre _)      :xs) = x: adjacent file (n+1) y xs
-adjacent file n y@Comment     (x@(Program _)  :xs) = error (message file n "comment" "program")
-adjacent file n y@Comment     (x@(Include i f):xs) = x: adjacent f    i     y xs
+adjacent file n   Comment     (  (Program _)  :_ ) = error (message file n "comment" "program")
+adjacent _    _ y@Comment     (x@(Include i f):xs) = x: adjacent f    i     y xs
 adjacent file n y@Comment     (x@(Pre _)      :xs) = x: adjacent file (n+1) y xs
-adjacent file n y@Blank       (x@(Include i f):xs) = x: adjacent f    i     y xs
+adjacent _    _ y@Blank       (x@(Include i f):xs) = x: adjacent f    i     y xs
 adjacent file n y@Blank       (x@(Pre _)      :xs) = x: adjacent file (n+1) y xs
-adjacent file n _             (x@next         :xs) = x: adjacent file (n+1) x xs
-adjacent file n _             []                   = []
+adjacent file n _             (x              :xs) = x: adjacent file (n+1) x xs
+adjacent _    _ _             []                   = []
 
 message :: String -> Int -> String -> String -> String
 message "\"\"" n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n"
@@ -63,7 +63,7 @@
 -- Re-implementation of 'lines', for better efficiency (but decreased laziness).
 -- Also, importantly, accepts non-standard DOS and Mac line ending characters.
 inlines :: String -> [String]
-inlines s = lines' s id
+inlines = (`lines'` id)
   where
   lines' []             acc = [acc []]
   lines' ('\^M':'\n':s) acc = acc [] : lines' s id      -- DOS
diff --git a/tests/Extensions.hs b/tests/Extensions.hs
--- a/tests/Extensions.hs
+++ b/tests/Extensions.hs
@@ -22,12 +22,30 @@
 (~~) :: Monad m => [Extension] -> [Extension] -> Property m
 xts1 ~~ xts2 = forAll $ \lang -> ((==) `on` sort . toExtensionList lang) xts1 xts2
 
+-- arbitrary examples
+e1 :: KnownExtension
+e1 = OverlappingInstances
+
+e2 :: KnownExtension
+e2 = UndecidableInstances
+
 extensionProperties :: TestTree
 extensionProperties =
   localOption (SmallCheckDepth 2) $ testGroup "Properties of LANGUAGE extensions" $
   [ testProperty "identity" $ \x -> x ~~ x
   , testProperty "idempotence" $ \x -> x ++ x ~~ x
-  , testProperty "right bias" $ \x y -> x ++ y ++ x ~~ y ++ x
+  -- Actually, let's not exhaustively check n^2 cases
+  -- , testProperty "right bias" $ \x y -> x ++ y ++ x ~~ y ++ x
+  , testProperty "right bias - override to disabled" $
+      [EnableExtension e1, DisableExtension e1] ~~ [DisableExtension e1]
+  , testProperty "right bias - override to enabled" $
+      [DisableExtension e1, EnableExtension e1] ~~ [EnableExtension e1]
+  , testProperty "right bias - interleaved override to disabled" $
+      [EnableExtension e1, EnableExtension e2, DisableExtension e1]
+        ~~ [EnableExtension e2, DisableExtension e1]
+  , testProperty "right bias - interleaved override to enabled" $
+      [DisableExtension e1, EnableExtension e2, EnableExtension e1]
+        ~~ [EnableExtension e2, EnableExtension e1]
   , testProperty "closedness of implication" $ \x -> impliesExts (impliesExts x) == impliesExts x
   , testProperty "closedness of toExtensionList" $ \l x -> let es = toExtensionList l x in es == impliesExts es
   , testProperty "opposite extensions 1" $ \x -> [EnableExtension x, DisableExtension x] ~~ [DisableExtension x]
diff --git a/tests/Runner.hs b/tests/Runner.hs
--- a/tests/Runner.hs
+++ b/tests/Runner.hs
@@ -180,7 +180,9 @@
 readUTF8File :: FilePath -> IO String
 readUTF8File fp = openFile fp ReadMode >>= \h -> do
         hSetEncoding h utf8
-        hGetContents h
+        c <- hGetContents h >>= \s -> length s `seq` return s
+        hClose h
+        return c
 
 parseUTF8FileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment]))
 parseUTF8FileWithComments p fp = readUTF8File fp >>= (return . parseFileContentsWithComments p)
diff --git a/tests/examples/AmbiguousFixities.hs.exactprinter.golden b/tests/examples/AmbiguousFixities.hs.exactprinter.golden
--- a/tests/examples/AmbiguousFixities.hs.exactprinter.golden
+++ b/tests/examples/AmbiguousFixities.hs.exactprinter.golden
@@ -1,1 +1,1 @@
-ParseFailed (SrcLoc "" -1 -1) "Ambiguous infix expression"
+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
diff --git a/tests/examples/AmbiguousFixities.hs.prettyparser.golden b/tests/examples/AmbiguousFixities.hs.prettyparser.golden
--- a/tests/examples/AmbiguousFixities.hs.prettyparser.golden
+++ b/tests/examples/AmbiguousFixities.hs.prettyparser.golden
@@ -1,1 +1,1 @@
-ParseFailed (SrcLoc "" -1 -1) "Ambiguous infix expression"
+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
diff --git a/tests/examples/AmbiguousFixities.hs.prettyprinter.golden b/tests/examples/AmbiguousFixities.hs.prettyprinter.golden
--- a/tests/examples/AmbiguousFixities.hs.prettyprinter.golden
+++ b/tests/examples/AmbiguousFixities.hs.prettyprinter.golden
@@ -1,1 +1,1 @@
-ParseFailed (SrcLoc "" -1 -1) "Ambiguous infix expression"
+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
diff --git a/tests/examples/ArrowBrackets.hs b/tests/examples/ArrowBrackets.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/ArrowBrackets.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE Arrows #-}
+module ArrowBrackets where
+
+foo = proc (x, y) -> (| f (g -< x) |) y
+
+bar = proc (x, y) -> do
+  z <- (| f (g -< x) |) y
+  (| f (h -< z) |) y
diff --git a/tests/examples/ArrowBrackets.hs.exactprinter.golden b/tests/examples/ArrowBrackets.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/ArrowBrackets.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/ArrowBrackets.hs.parser.golden b/tests/examples/ArrowBrackets.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/ArrowBrackets.hs.parser.golden
@@ -0,0 +1,541 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 9 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 1 1
+            , SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 1
+            , SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 1
+            , SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 1
+            , SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 6 1
+            , SrcSpan "tests/examples/ArrowBrackets.hs" 9 1 9 1
+            , SrcSpan "tests/examples/ArrowBrackets.hs" 9 1 9 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 27
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 7
+                  , SrcSpan "tests/examples/ArrowBrackets.hs" 2 22 2 27
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 2 8 2 21
+                 , srcInfoPoints = []
+                 }
+               "ArrowBrackets")
+            Nothing
+            Nothing))
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 1 24
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 1 13
+                , SrcSpan "tests/examples/ArrowBrackets.hs" 1 21 1 24
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 1 14 1 20
+                , srcInfoPoints = []
+                }
+              "Arrows"
+          ]
+      ]
+      []
+      [ PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 40
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 4
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 4
+                  , srcInfoPoints = []
+                  }
+                "foo"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 5 4 40
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 5 4 6 ]
+               }
+             (Proc
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 7 4 40
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 7 4 11
+                      , SrcSpan "tests/examples/ArrowBrackets.hs" 4 19 4 21
+                      ]
+                  }
+                (PTuple
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 12 4 18
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 12 4 13
+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 4 14 4 15
+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 4 17 4 18
+                         ]
+                     }
+                   Boxed
+                   [ PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 13 4 14
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 13 4 14
+                            , srcInfoPoints = []
+                            }
+                          "x")
+                   , PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 16 4 17
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 16 4 17
+                            , srcInfoPoints = []
+                            }
+                          "y")
+                   ])
+                (App
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 22 4 40
+                     , srcInfoPoints = []
+                     }
+                   (ArrOp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 22 4 38
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 22 4 24
+                            , SrcSpan "tests/examples/ArrowBrackets.hs" 4 36 4 38
+                            ]
+                        }
+                      (App
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 35
+                           , srcInfoPoints = []
+                           }
+                         (Var
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 26
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 26
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 26
+                                    , srcInfoPoints = []
+                                    }
+                                  "f")))
+                         (Paren
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 27 4 35
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 27 4 28
+                                  , SrcSpan "tests/examples/ArrowBrackets.hs" 4 34 4 35
+                                  ]
+                              }
+                            (LeftArrApp
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 34
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 30 4 32 ]
+                                 }
+                               (Var
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 29
+                                    , srcInfoPoints = []
+                                    }
+                                  (UnQual
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 29
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 29
+                                          , srcInfoPoints = []
+                                          }
+                                        "g")))
+                               (Var
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ArrowBrackets.hs" 4 33 4 34
+                                    , srcInfoPoints = []
+                                    }
+                                  (UnQual
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ArrowBrackets.hs" 4 33 4 34
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/ArrowBrackets.hs" 4 33 4 34
+                                          , srcInfoPoints = []
+                                          }
+                                        "x")))))))
+                   (Var
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 39 4 40
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 39 4 40
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 39 4 40
+                              , srcInfoPoints = []
+                              }
+                            "y"))))))
+          Nothing
+      , PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 8 21
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 6 4
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 6 4
+                  , srcInfoPoints = []
+                  }
+                "bar"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 5 8 21
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 5 6 6 ]
+               }
+             (Proc
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 7 8 21
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 7 6 11
+                      , SrcSpan "tests/examples/ArrowBrackets.hs" 6 19 6 21
+                      ]
+                  }
+                (PTuple
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 12 6 18
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 12 6 13
+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 6 14 6 15
+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 6 17 6 18
+                         ]
+                     }
+                   Boxed
+                   [ PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 13 6 14
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 13 6 14
+                            , srcInfoPoints = []
+                            }
+                          "x")
+                   , PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 16 6 17
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 16 6 17
+                            , srcInfoPoints = []
+                            }
+                          "y")
+                   ])
+                (Do
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 22 8 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 22 6 24
+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 3
+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 3
+                         , SrcSpan "tests/examples/ArrowBrackets.hs" 9 1 9 0
+                         ]
+                     }
+                   [ Generator
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 26
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 5 7 7 ]
+                         }
+                       (PVar
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 4
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 4
+                               , srcInfoPoints = []
+                               }
+                             "z"))
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 8 7 26
+                            , srcInfoPoints = []
+                            }
+                          (ArrOp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 8 7 24
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 8 7 10
+                                   , SrcSpan "tests/examples/ArrowBrackets.hs" 7 22 7 24
+                                   ]
+                               }
+                             (App
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Var
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 12
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 12
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 12
+                                           , srcInfoPoints = []
+                                           }
+                                         "f")))
+                                (Paren
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 7 13 7 21
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 13 7 14
+                                         , SrcSpan "tests/examples/ArrowBrackets.hs" 7 20 7 21
+                                         ]
+                                     }
+                                   (LeftArrApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/ArrowBrackets.hs" 7 14 7 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 16 7 18 ]
+                                        }
+                                      (Var
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 7 14 7 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/ArrowBrackets.hs" 7 14 7 15
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/ArrowBrackets.hs" 7 14 7 15
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "g")))
+                                      (Var
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 7 19 7 20
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/ArrowBrackets.hs" 7 19 7 20
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/ArrowBrackets.hs" 7 19 7 20
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "x")))))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 25 7 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/ArrowBrackets.hs" 7 25 7 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 7 25 7 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "y"))))
+                   , Qualifier
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 21
+                         , srcInfoPoints = []
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 21
+                            , srcInfoPoints = []
+                            }
+                          (ArrOp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 19
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 5
+                                   , SrcSpan "tests/examples/ArrowBrackets.hs" 8 17 8 19
+                                   ]
+                               }
+                             (App
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Var
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 7
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 7
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 7
+                                           , srcInfoPoints = []
+                                           }
+                                         "f")))
+                                (Paren
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 8 8 8 16
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/ArrowBrackets.hs" 8 8 8 9
+                                         , SrcSpan "tests/examples/ArrowBrackets.hs" 8 15 8 16
+                                         ]
+                                     }
+                                   (LeftArrApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/ArrowBrackets.hs" 8 9 8 15
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/ArrowBrackets.hs" 8 11 8 13 ]
+                                        }
+                                      (Var
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 8 9 8 10
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/ArrowBrackets.hs" 8 9 8 10
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/ArrowBrackets.hs" 8 9 8 10
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "h")))
+                                      (Var
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/ArrowBrackets.hs" 8 14 8 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/ArrowBrackets.hs" 8 14 8 15
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/ArrowBrackets.hs" 8 14 8 15
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "z")))))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 20 8 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/ArrowBrackets.hs" 8 20 8 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/ArrowBrackets.hs" 8 20 8 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "y"))))
+                   ])))
+          Nothing
+      ]
+  , []
+  )
diff --git a/tests/examples/ArrowBrackets.hs.prettyparser.golden b/tests/examples/ArrowBrackets.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/ArrowBrackets.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/ArrowBrackets.hs.prettyprinter.golden b/tests/examples/ArrowBrackets.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/ArrowBrackets.hs.prettyprinter.golden
@@ -0,0 +1,7 @@
+{-# LANGUAGE Arrows #-}
+module ArrowBrackets where
+foo = proc (x, y) -> (| f (g -< x) |) y
+bar
+  = proc (x, y) ->
+      do z <- (| f (g -< x) |) y
+         (| f (h -< z) |) y
diff --git a/tests/examples/BlockArguments.hs b/tests/examples/BlockArguments.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/BlockArguments.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE BlockArguments #-}
+module BlockArguments where
+
+foo = when (x > 0) do
+  print x
+  exitFailure
+
+bar = withForeignPtr fptr \ptr -> c_memcpy buf ptr size
+
+baz arg1 arg2 arg3 arg4 = initialValue
+  &   someFunction arg1 arg2
+  >>= traverse \(x, y) -> do
+        a <- f x
+        b <- g y
+        h a b
+  >>= anotherFunction arg3 arg4
diff --git a/tests/examples/BlockArguments.hs.exactprinter.golden b/tests/examples/BlockArguments.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/BlockArguments.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/BlockArguments.hs.parser.golden b/tests/examples/BlockArguments.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/BlockArguments.hs.parser.golden
@@ -0,0 +1,1099 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 1 1 17 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 1
+            , SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 1
+            , SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 1
+            , SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 1
+            , SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 1
+            , SrcSpan "tests/examples/BlockArguments.hs" 10 1 10 1
+            , SrcSpan "tests/examples/BlockArguments.hs" 17 1 17 1
+            , SrcSpan "tests/examples/BlockArguments.hs" 17 1 17 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 28
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 7
+                  , SrcSpan "tests/examples/BlockArguments.hs" 2 23 2 28
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 2 8 2 22
+                 , srcInfoPoints = []
+                 }
+               "BlockArguments")
+            Nothing
+            Nothing))
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 32
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 13
+                , SrcSpan "tests/examples/BlockArguments.hs" 1 29 1 32
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/BlockArguments.hs" 1 14 1 28
+                , srcInfoPoints = []
+                }
+              "BlockArguments"
+          ]
+      ]
+      []
+      [ PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 6 14
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 4
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 4
+                  , srcInfoPoints = []
+                  }
+                "foo"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 5 6 14
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/BlockArguments.hs" 4 5 4 6 ]
+               }
+             (App
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 6 14
+                  , srcInfoPoints = []
+                  }
+                (App
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 19
+                     , srcInfoPoints = []
+                     }
+                   (Var
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11
+                              , srcInfoPoints = []
+                              }
+                            "when")))
+                   (Paren
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/BlockArguments.hs" 4 12 4 19
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/BlockArguments.hs" 4 12 4 13
+                            , SrcSpan "tests/examples/BlockArguments.hs" 4 18 4 19
+                            ]
+                        }
+                      (InfixApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 18
+                           , srcInfoPoints = []
+                           }
+                         (Var
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14
+                                    , srcInfoPoints = []
+                                    }
+                                  "x")))
+                         (QVarOp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16
+                                 , srcInfoPoints = []
+                                 }
+                               (Symbol
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16
+                                    , srcInfoPoints = []
+                                    }
+                                  ">")))
+                         (Lit
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/BlockArguments.hs" 4 17 4 18
+                              , srcInfoPoints = []
+                              }
+                            (Int
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/BlockArguments.hs" 4 17 4 18
+                                 , srcInfoPoints = []
+                                 }
+                               0
+                               "0")))))
+                (Do
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/BlockArguments.hs" 4 20 6 14
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/BlockArguments.hs" 4 20 4 22
+                         , SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 3
+                         , SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 3
+                         , SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 0
+                         ]
+                     }
+                   [ Qualifier
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 10
+                         , srcInfoPoints = []
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 10
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8
+                                     , srcInfoPoints = []
+                                     }
+                                   "print")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10
+                                     , srcInfoPoints = []
+                                     }
+                                   "x"))))
+                   , Qualifier
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14
+                         , srcInfoPoints = []
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14
+                                  , srcInfoPoints = []
+                                  }
+                                "exitFailure")))
+                   ])))
+          Nothing
+      , PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 56
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 4
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 4
+                  , srcInfoPoints = []
+                  }
+                "bar"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 5 8 56
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/BlockArguments.hs" 8 5 8 6 ]
+               }
+             (App
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 56
+                  , srcInfoPoints = []
+                  }
+                (App
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 26
+                     , srcInfoPoints = []
+                     }
+                   (Var
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21
+                              , srcInfoPoints = []
+                              }
+                            "withForeignPtr")))
+                   (Var
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26
+                              , srcInfoPoints = []
+                              }
+                            "fptr"))))
+                (Lambda
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/BlockArguments.hs" 8 27 8 56
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/BlockArguments.hs" 8 27 8 28
+                         , SrcSpan "tests/examples/BlockArguments.hs" 8 32 8 34
+                         ]
+                     }
+                   [ PVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/BlockArguments.hs" 8 28 8 31
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/BlockArguments.hs" 8 28 8 31
+                            , srcInfoPoints = []
+                            }
+                          "ptr")
+                   ]
+                   (App
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 56
+                        , srcInfoPoints = []
+                        }
+                      (App
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 51
+                           , srcInfoPoints = []
+                           }
+                         (App
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 47
+                              , srcInfoPoints = []
+                              }
+                            (Var
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43
+                                       , srcInfoPoints = []
+                                       }
+                                     "c_memcpy")))
+                            (Var
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47
+                                       , srcInfoPoints = []
+                                       }
+                                     "buf"))))
+                         (Var
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51
+                                    , srcInfoPoints = []
+                                    }
+                                  "ptr"))))
+                      (Var
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56
+                                 , srcInfoPoints = []
+                                 }
+                               "size")))))))
+          Nothing
+      , FunBind
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/BlockArguments.hs" 10 1 16 32
+            , srcInfoPoints = []
+            }
+          [ Match
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/BlockArguments.hs" 10 1 16 32
+                , srcInfoPoints = []
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/BlockArguments.hs" 10 1 10 4
+                   , srcInfoPoints = []
+                   }
+                 "baz")
+              [ PVar
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/BlockArguments.hs" 10 5 10 9
+                    , srcInfoPoints = []
+                    }
+                  (Ident
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/BlockArguments.hs" 10 5 10 9
+                       , srcInfoPoints = []
+                       }
+                     "arg1")
+              , PVar
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/BlockArguments.hs" 10 10 10 14
+                    , srcInfoPoints = []
+                    }
+                  (Ident
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/BlockArguments.hs" 10 10 10 14
+                       , srcInfoPoints = []
+                       }
+                     "arg2")
+              , PVar
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/BlockArguments.hs" 10 15 10 19
+                    , srcInfoPoints = []
+                    }
+                  (Ident
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/BlockArguments.hs" 10 15 10 19
+                       , srcInfoPoints = []
+                       }
+                     "arg3")
+              , PVar
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/BlockArguments.hs" 10 20 10 24
+                    , srcInfoPoints = []
+                    }
+                  (Ident
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/BlockArguments.hs" 10 20 10 24
+                       , srcInfoPoints = []
+                       }
+                     "arg4")
+              ]
+              (UnGuardedRhs
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/BlockArguments.hs" 10 25 16 32
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/BlockArguments.hs" 10 25 10 26 ]
+                   }
+                 (InfixApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/BlockArguments.hs" 10 27 16 32
+                      , srcInfoPoints = []
+                      }
+                    (InfixApp
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/BlockArguments.hs" 10 27 11 29
+                         , srcInfoPoints = []
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39
+                                  , srcInfoPoints = []
+                                  }
+                                "initialValue")))
+                       (QVarOp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4
+                               , srcInfoPoints = []
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4
+                                  , srcInfoPoints = []
+                                  }
+                                "&")))
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 29
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 24
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19
+                                        , srcInfoPoints = []
+                                        }
+                                      "someFunction")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "arg1"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29
+                                     , srcInfoPoints = []
+                                     }
+                                   "arg2")))))
+                    (QVarOp
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6
+                            , srcInfoPoints = []
+                            }
+                          (Symbol
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6
+                               , srcInfoPoints = []
+                               }
+                             ">>=")))
+                    (App
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/BlockArguments.hs" 12 7 16 32
+                         , srcInfoPoints = []
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15
+                                  , srcInfoPoints = []
+                                  }
+                                "traverse")))
+                       (Lambda
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/BlockArguments.hs" 12 16 16 32
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/BlockArguments.hs" 12 16 12 17
+                                , SrcSpan "tests/examples/BlockArguments.hs" 12 24 12 26
+                                ]
+                            }
+                          [ PTuple
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/BlockArguments.hs" 12 17 12 23
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/BlockArguments.hs" 12 17 12 18
+                                    , SrcSpan "tests/examples/BlockArguments.hs" 12 19 12 20
+                                    , SrcSpan "tests/examples/BlockArguments.hs" 12 22 12 23
+                                    ]
+                                }
+                              Boxed
+                              [ PVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BlockArguments.hs" 12 18 12 19
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/BlockArguments.hs" 12 18 12 19
+                                       , srcInfoPoints = []
+                                       }
+                                     "x")
+                              , PVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BlockArguments.hs" 12 21 12 22
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/BlockArguments.hs" 12 21 12 22
+                                       , srcInfoPoints = []
+                                       }
+                                     "y")
+                              ]
+                          ]
+                          (InfixApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/BlockArguments.hs" 12 27 16 32
+                               , srcInfoPoints = []
+                               }
+                             (Do
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 12 27 15 14
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/BlockArguments.hs" 12 27 12 29
+                                      , SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 9
+                                      , SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 9
+                                      , SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 9
+                                      , SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 0
+                                      ]
+                                  }
+                                [ Generator
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 17
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/BlockArguments.hs" 13 11 13 13 ]
+                                      }
+                                    (PVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 10
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/BlockArguments.hs" 13 9 13 10
+                                            , srcInfoPoints = []
+                                            }
+                                          "a"))
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/BlockArguments.hs" 13 14 13 17
+                                         , srcInfoPoints = []
+                                         }
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/BlockArguments.hs" 13 14 13 15
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/BlockArguments.hs" 13 14 13 15
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/BlockArguments.hs"
+                                                        13
+                                                        14
+                                                        13
+                                                        15
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "f")))
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/BlockArguments.hs" 13 16 13 17
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/BlockArguments.hs" 13 16 13 17
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/BlockArguments.hs"
+                                                        13
+                                                        16
+                                                        13
+                                                        17
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "x"))))
+                                , Generator
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 17
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/BlockArguments.hs" 14 11 14 13 ]
+                                      }
+                                    (PVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 10
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/BlockArguments.hs" 14 9 14 10
+                                            , srcInfoPoints = []
+                                            }
+                                          "b"))
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/BlockArguments.hs" 14 14 14 17
+                                         , srcInfoPoints = []
+                                         }
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/BlockArguments.hs" 14 14 14 15
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/BlockArguments.hs" 14 14 14 15
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/BlockArguments.hs"
+                                                        14
+                                                        14
+                                                        14
+                                                        15
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "g")))
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/BlockArguments.hs" 14 16 14 17
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/BlockArguments.hs" 14 16 14 17
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/BlockArguments.hs"
+                                                        14
+                                                        16
+                                                        14
+                                                        17
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "y"))))
+                                , Qualifier
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 14
+                                      , srcInfoPoints = []
+                                      }
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 14
+                                         , srcInfoPoints = []
+                                         }
+                                       (App
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/BlockArguments.hs" 15 9 15 12
+                                            , srcInfoPoints = []
+                                            }
+                                          (Var
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/BlockArguments.hs" 15 9 15 10
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/BlockArguments.hs"
+                                                        15
+                                                        9
+                                                        15
+                                                        10
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/BlockArguments.hs"
+                                                           15
+                                                           9
+                                                           15
+                                                           10
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "h")))
+                                          (Var
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/BlockArguments.hs" 15 11 15 12
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/BlockArguments.hs"
+                                                        15
+                                                        11
+                                                        15
+                                                        12
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/BlockArguments.hs"
+                                                           15
+                                                           11
+                                                           15
+                                                           12
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "a"))))
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/BlockArguments.hs" 15 13 15 14
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/BlockArguments.hs" 15 13 15 14
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/BlockArguments.hs"
+                                                        15
+                                                        13
+                                                        15
+                                                        14
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "b"))))
+                                ])
+                             (QVarOp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6
+                                     , srcInfoPoints = []
+                                     }
+                                   (Symbol
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6
+                                        , srcInfoPoints = []
+                                        }
+                                      ">>=")))
+                             (App
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 32
+                                  , srcInfoPoints = []
+                                  }
+                                (App
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 27
+                                     , srcInfoPoints = []
+                                     }
+                                   (Var
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 22
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 22
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/BlockArguments.hs" 16 7 16 22
+                                              , srcInfoPoints = []
+                                              }
+                                            "anotherFunction")))
+                                   (Var
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/BlockArguments.hs" 16 23 16 27
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/BlockArguments.hs" 16 23 16 27
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/BlockArguments.hs" 16 23 16 27
+                                              , srcInfoPoints = []
+                                              }
+                                            "arg3"))))
+                                (Var
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/BlockArguments.hs" 16 28 16 32
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/BlockArguments.hs" 16 28 16 32
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/BlockArguments.hs" 16 28 16 32
+                                           , srcInfoPoints = []
+                                           }
+                                         "arg4")))))))))
+              Nothing
+          ]
+      ]
+  , []
+  )
diff --git a/tests/examples/BlockArguments.hs.prettyparser.golden b/tests/examples/BlockArguments.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/BlockArguments.hs.prettyparser.golden
@@ -0,0 +1,10 @@
+Roundtrip test failed
+
+AST 1:
+
+Module () (Just (ModuleHead () (ModuleName () "BlockArguments") Nothing Nothing)) [LanguagePragma () [Ident () "BlockArguments"]] [] [PatBind () (PVar () (Ident () "foo")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "x"))) (QVarOp () (UnQual () (Symbol () ">"))) (Lit () (Int () 0 "0"))))) (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (Var () (UnQual () (Ident () "x")))),Qualifier () (Var () (UnQual () (Ident () "exitFailure")))]))) Nothing,PatBind () (PVar () (Ident () "bar")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fptr")))) (Lambda () [PVar () (Ident () "ptr")] (App () (App () (App () (Var () (UnQual () (Ident () "c_memcpy"))) (Var () (UnQual () (Ident () "buf")))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "size"))))))) Nothing,FunBind () [Match () (Ident () "baz") [PVar () (Ident () "arg1"),PVar () (Ident () "arg2"),PVar () (Ident () "arg3"),PVar () (Ident () "arg4")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "initialValue"))) (QVarOp () (UnQual () (Symbol () "&"))) (App () (App () (Var () (UnQual () (Ident () "someFunction"))) (Var () (UnQual () (Ident () "arg1")))) (Var () (UnQual () (Ident () "arg2"))))) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (Var () (UnQual () (Ident () "traverse"))) (Lambda () [PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "y")]] (InfixApp () (Do () [Generator () (PVar () (Ident () "a")) (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "x")))),Generator () (PVar () (Ident () "b")) (App () (Var () (UnQual () (Ident () "g"))) (Var () (UnQual () (Ident () "y")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "h"))) (Var () (UnQual () (Ident () "a")))) (Var () (UnQual () (Ident () "b"))))]) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (App () (Var () (UnQual () (Ident () "anotherFunction"))) (Var () (UnQual () (Ident () "arg3")))) (Var () (UnQual () (Ident () "arg4"))))))))) Nothing]]
+
+AST 2:
+
+Module () (Just (ModuleHead () (ModuleName () "BlockArguments") Nothing Nothing)) [LanguagePragma () [Ident () "BlockArguments"]] [] [PatBind () (PVar () (Ident () "foo")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "x"))) (QVarOp () (UnQual () (Symbol () ">"))) (Lit () (Int () 0 "0"))))) (Paren () (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (Var () (UnQual () (Ident () "x")))),Qualifier () (Var () (UnQual () (Ident () "exitFailure")))])))) Nothing,PatBind () (PVar () (Ident () "bar")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fptr")))) (Paren () (Lambda () [PVar () (Ident () "ptr")] (App () (App () (App () (Var () (UnQual () (Ident () "c_memcpy"))) (Var () (UnQual () (Ident () "buf")))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "size")))))))) Nothing,FunBind () [Match () (Ident () "baz") [PVar () (Ident () "arg1"),PVar () (Ident () "arg2"),PVar () (Ident () "arg3"),PVar () (Ident () "arg4")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "initialValue"))) (QVarOp () (UnQual () (Symbol () "&"))) (App () (App () (Var () (UnQual () (Ident () "someFunction"))) (Var () (UnQual () (Ident () "arg1")))) (Var () (UnQual () (Ident () "arg2"))))) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (Var () (UnQual () (Ident () "traverse"))) (Paren () (Lambda () [PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "y")]] (InfixApp () (Do () [Generator () (PVar () (Ident () "a")) (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "x")))),Generator () (PVar () (Ident () "b")) (App () (Var () (UnQual () (Ident () "g"))) (Var () (UnQual () (Ident () "y")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "h"))) (Var () (UnQual () (Ident () "a")))) (Var () (UnQual () (Ident () "b"))))]) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (App () (Var () (UnQual () (Ident () "anotherFunction"))) (Var () (UnQual () (Ident () "arg3")))) (Var () (UnQual () (Ident () "arg4")))))))))) Nothing]]
+
diff --git a/tests/examples/BlockArguments.hs.prettyprinter.golden b/tests/examples/BlockArguments.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/BlockArguments.hs.prettyprinter.golden
@@ -0,0 +1,15 @@
+{-# LANGUAGE BlockArguments #-}
+module BlockArguments where
+foo
+  = when (x > 0)
+      (do print x
+          exitFailure)
+bar = withForeignPtr fptr (\ ptr -> c_memcpy buf ptr size)
+baz arg1 arg2 arg3 arg4
+  = initialValue & someFunction arg1 arg2 >>=
+      traverse
+        (\ (x, y) ->
+           do a <- f x
+              b <- g y
+              h a b
+             >>= anotherFunction arg3 arg4)
diff --git a/tests/examples/BracketInstanceHead.hs.parser.golden b/tests/examples/BracketInstanceHead.hs.parser.golden
--- a/tests/examples/BracketInstanceHead.hs.parser.golden
+++ b/tests/examples/BracketInstanceHead.hs.parser.golden
@@ -51,40 +51,53 @@
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18
-                              , srcInfoPoints = []
+                                  SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18
+                                     SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 23
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/BracketInstanceHead.hs" 1 21 1 23 ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/BracketInstanceHead.hs" 1 11 1 18
+                                       , srcInfoPoints = []
+                                       }
+                                     "Bounded")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20
                                  , srcInfoPoints = []
                                  }
-                               "Bounded"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ])))
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/BracketInstanceHead.hs" 1 19 1 20
+                                    , srcInfoPoints = []
+                                    }
+                                  "a"))))))
                 (IHApp
                    SrcSpanInfo
                      { srcInfoSpan =
diff --git a/tests/examples/ClassContext.hs.parser.golden b/tests/examples/ClassContext.hs.parser.golden
--- a/tests/examples/ClassContext.hs.parser.golden
+++ b/tests/examples/ClassContext.hs.parser.golden
@@ -40,67 +40,80 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9
-                           , srcInfoPoints = []
+                           { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9
-                              , srcInfoPoints = []
+                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 20
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ClassContext.hs" 1 18 1 20 ]
                               }
-                            "Ord"))
-                      [ TyParen
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 10 1 17
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/ClassContext.hs" 1 10 1 11
-                                , SrcSpan "tests/examples/ClassContext.hs" 1 16 1 17
-                                ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 11 1 16
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12
-                                     , srcInfoPoints = []
-                                     }
-                                   "i"))
-                             (TyCon
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
-                                  , srcInfoPoints = []
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
-                                        , srcInfoPoints = []
-                                        }
-                                      "Int"))))
-                      ])))
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 6 1 9
+                                    , srcInfoPoints = []
+                                    }
+                                  "Ord")))
+                         (TyParen
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 10 1 17
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ClassContext.hs" 1 10 1 11
+                                  , SrcSpan "tests/examples/ClassContext.hs" 1 16 1 17
+                                  ]
+                              }
+                            (TyApp
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 11 1 16
+                                 , srcInfoPoints = []
+                                 }
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ClassContext.hs" 1 11 1 12
+                                       , srcInfoPoints = []
+                                       }
+                                     "i"))
+                               (TyCon
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
+                                    , srcInfoPoints = []
+                                    }
+                                  (UnQual
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/ClassContext.hs" 1 13 1 16
+                                          , srcInfoPoints = []
+                                          }
+                                        "Int")))))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/ClassContext.hs" 1 21 1 35
diff --git a/tests/examples/ConstraintKinds.hs.parser.golden b/tests/examples/ConstraintKinds.hs.parser.golden
--- a/tests/examples/ConstraintKinds.hs.parser.golden
+++ b/tests/examples/ConstraintKinds.hs.parser.golden
@@ -342,53 +342,73 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
                            }
-                         (Ident
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15
+                                  SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 22
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/ConstraintKinds.hs" 9 20 9 22 ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ConstraintKinds.hs" 9 8 9 15
+                                       , srcInfoPoints = []
+                                       }
+                                     "Bazable")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19
                               , srcInfoPoints = []
                               }
-                            "Bazable"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ConstraintKinds.hs" 9 16 9 17
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      , TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19
-                               , srcInfoPoints = []
-                               }
-                             "b")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ConstraintKinds.hs" 9 18 9 19
+                                 , srcInfoPoints = []
+                                 }
+                               "b"))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/ConstraintKinds2.hs.parser.golden b/tests/examples/ConstraintKinds2.hs.parser.golden
--- a/tests/examples/ConstraintKinds2.hs.parser.golden
+++ b/tests/examples/ConstraintKinds2.hs.parser.golden
@@ -133,6 +133,8 @@
                    }
                  "Dict")
               Nothing
+              Nothing
+              Nothing
               (TyForall
                  SrcSpanInfo
                    { srcInfoSpan =
@@ -148,21 +150,27 @@
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]
                          }
-                       (AppA
+                       (TypeA
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]
                             }
-                          (Ident
+                          (TyVar
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 14
-                               , srcInfoPoints = []
+                                   SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 17
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/ConstraintKinds2.hs" 6 15 6 17 ]
                                }
-                             "p")
-                          [])))
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/ConstraintKinds2.hs" 6 13 6 14
+                                  , srcInfoPoints = []
+                                  }
+                                "p")))))
                  (TyApp
                     SrcSpanInfo
                       { srcInfoSpan =
diff --git a/tests/examples/ConstraintKinds3.hs.parser.golden b/tests/examples/ConstraintKinds3.hs.parser.golden
--- a/tests/examples/ConstraintKinds3.hs.parser.golden
+++ b/tests/examples/ConstraintKinds3.hs.parser.golden
@@ -165,34 +165,48 @@
                                       , SrcSpan "tests/examples/ConstraintKinds3.hs" 6 16 6 18
                                       ]
                                   }
-                                (AppA
+                                (TypeA
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 14
                                      , srcInfoPoints = []
                                      }
-                                   (Ident
+                                   (TyApp
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 12
+                                            SrcSpan "tests/examples/ConstraintKinds3.hs" 6 11 6 14
                                         , srcInfoPoints = []
                                         }
-                                      "c")
-                                   [ TyVar
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/ConstraintKinds3.hs" 6 13 6 14
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan
-                                                  "tests/examples/ConstraintKinds3.hs" 6 13 6 14
-                                            , srcInfoPoints = []
-                                            }
-                                          "a")
-                                   ]))))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/ConstraintKinds3.hs" 6 11 6 14
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/ConstraintKinds3.hs" 6 11 6 12
+                                              , srcInfoPoints = []
+                                              }
+                                            "c"))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/ConstraintKinds3.hs" 6 13 6 14
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/ConstraintKinds3.hs" 6 13 6 14
+                                              , srcInfoPoints = []
+                                              }
+                                            "a")))))))
                        (TyFun
                           SrcSpanInfo
                             { srcInfoSpan =
diff --git a/tests/examples/ConstructorAndClassOperators.hs.parser.golden b/tests/examples/ConstructorAndClassOperators.hs.parser.golden
--- a/tests/examples/ConstructorAndClassOperators.hs.parser.golden
+++ b/tests/examples/ConstructorAndClassOperators.hs.parser.golden
@@ -76,7 +76,7 @@
                              "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
                          ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20
@@ -85,53 +85,97 @@
                                 "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
                             ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 13
+                               SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20
                            , srcInfoPoints =
-                               [ SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 9
-                               , SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 9 3 12
-                               , SrcSpan
-                                   "tests/examples/ConstructorAndClassOperators.hs" 3 12 3 13
+                               [ SrcSpan
+                                   "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
                                ]
                            }
-                         (Symbol
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 9 3 12
+                                  SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20
+                              , srcInfoPoints =
+                                  [ SrcSpan
+                                      "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
+                                  ]
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 20
+                                 , srcInfoPoints =
+                                     [ SrcSpan
+                                         "tests/examples/ConstructorAndClassOperators.hs" 3 18 3 20
+                                     ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan
+                                          "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 13
+                                    , srcInfoPoints =
+                                        [ SrcSpan
+                                            "tests/examples/ConstructorAndClassOperators.hs" 3 8 3 9
+                                        , SrcSpan
+                                            "tests/examples/ConstructorAndClassOperators.hs"
+                                            3
+                                            9
+                                            3
+                                            12
+                                        , SrcSpan
+                                            "tests/examples/ConstructorAndClassOperators.hs"
+                                            3
+                                            12
+                                            3
+                                            13
+                                        ]
+                                    }
+                                  (Symbol
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/ConstructorAndClassOperators.hs"
+                                             3
+                                             9
+                                             3
+                                             12
+                                       , srcInfoPoints = []
+                                       }
+                                     ":=>")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan
+                                          "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15
+                                    , srcInfoPoints = []
+                                    }
+                                  "b")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17
                               , srcInfoPoints = []
                               }
-                            ":=>"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan
-                                     "tests/examples/ConstructorAndClassOperators.hs" 3 14 3 15
-                               , srcInfoPoints = []
-                               }
-                             "b")
-                      , TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan
-                                     "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17
-                               , srcInfoPoints = []
-                               }
-                             "h")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/ConstructorAndClassOperators.hs" 3 16 3 17
+                                 , srcInfoPoints = []
+                                 }
+                               "h"))))))
              (TyInfix
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/ContextOrdering.hs.parser.golden b/tests/examples/ContextOrdering.hs.parser.golden
--- a/tests/examples/ContextOrdering.hs.parser.golden
+++ b/tests/examples/ContextOrdering.hs.parser.golden
@@ -92,46 +92,63 @@
                             , SrcSpan "tests/examples/ContextOrdering.hs" 4 16 4 18
                             ]
                         }
-                      (AppA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14
                            , srcInfoPoints = []
                            }
-                         (Ident
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 10
+                                  SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14
                               , srcInfoPoints = []
                               }
-                            "x")
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12
-                                  , srcInfoPoints = []
-                                  }
-                                "m")
-                         , TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                            (TyApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14
+                                 , srcInfoPoints = []
+                                 }
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 14
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ContextOrdering.hs" 4 9 4 10
+                                       , srcInfoPoints = []
+                                       }
+                                     "x"))
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/ContextOrdering.hs" 4 11 4 12
+                                       , srcInfoPoints = []
+                                       }
+                                     "m")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ContextOrdering.hs" 4 13 4 14
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyCon
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/CxtWhitespace.hs.parser.golden b/tests/examples/CxtWhitespace.hs.parser.golden
--- a/tests/examples/CxtWhitespace.hs.parser.golden
+++ b/tests/examples/CxtWhitespace.hs.parser.golden
@@ -46,35 +46,46 @@
                             , SrcSpan "tests/examples/CxtWhitespace.hs" 2 18 2 20
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14
+                              { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14
+                                 { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 16
                                  , srcInfoPoints = []
                                  }
-                               "Eq"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16
-                                  , srcInfoPoints = []
-                                  }
-                                "h")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/CxtWhitespace.hs" 2 12 2 14
+                                       , srcInfoPoints = []
+                                       }
+                                     "Eq")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/CxtWhitespace.hs" 2 15 2 16
+                                    , srcInfoPoints = []
+                                    }
+                                  "h")))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 2 21 2 25
@@ -132,62 +143,86 @@
                          , SrcSpan "tests/examples/CxtWhitespace.hs" 5 24 5 26
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14
+                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14
+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 16
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16
-                                , srcInfoPoints = []
-                                }
-                              "h")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/CxtWhitespace.hs" 5 12 5 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 15 5 16
+                                  , srcInfoPoints = []
+                                  }
+                                "h")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20
+                            { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20
+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 22
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22
-                                , srcInfoPoints = []
-                                }
-                              "h")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/CxtWhitespace.hs" 5 18 5 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/CxtWhitespace.hs" 5 21 5 22
+                                  , srcInfoPoints = []
+                                  }
+                                "h")))
                    ]))
              (IHApp
                 SrcSpanInfo
diff --git a/tests/examples/DataKinds.hs.parser.golden b/tests/examples/DataKinds.hs.parser.golden
--- a/tests/examples/DataKinds.hs.parser.golden
+++ b/tests/examples/DataKinds.hs.parser.golden
@@ -118,7 +118,7 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindVar
+                (TyCon
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 5 16 5 20
                      , srcInfoPoints = []
@@ -240,7 +240,7 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindList
+                (TyList
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 16 8 21
                      , srcInfoPoints =
@@ -248,7 +248,7 @@
                          , SrcSpan "tests/examples/DataKinds.hs" 8 20 8 21
                          ]
                      }
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 8 18 8 19
                         , srcInfoPoints = []
@@ -381,7 +381,7 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindList
+                (TyList
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 16 13 28
                      , srcInfoPoints =
@@ -389,7 +389,7 @@
                          , SrcSpan "tests/examples/DataKinds.hs" 13 27 13 28
                          ]
                      }
-                   (KindTuple
+                   (TyTuple
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 17 13 27
                         , srcInfoPoints =
@@ -398,7 +398,8 @@
                             , SrcSpan "tests/examples/DataKinds.hs" 13 26 13 27
                             ]
                         }
-                      [ KindVar
+                      Boxed
+                      [ TyCon
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 18 13 21
                             , srcInfoPoints = []
@@ -414,7 +415,7 @@
                                   , srcInfoPoints = []
                                   }
                                 "Baz"))
-                      , KindVar
+                      , TyCon
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 13 23 13 26
                             , srcInfoPoints = []
@@ -471,7 +472,7 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindParen
+                (TyParen
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 16 15 21
                      , srcInfoPoints =
@@ -479,7 +480,7 @@
                          , SrcSpan "tests/examples/DataKinds.hs" 15 20 15 21
                          ]
                      }
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 15 18 15 19
                         , srcInfoPoints = []
@@ -524,17 +525,17 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindApp
+                (TyApp
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 27
                      , srcInfoPoints = []
                      }
-                   (KindApp
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 23
                         , srcInfoPoints = []
                         }
-                      (KindVar
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 16 18 19
                            , srcInfoPoints = []
@@ -550,38 +551,28 @@
                                  , srcInfoPoints = []
                                  }
                                "App")))
-                      (KindVar
+                      (TyVar
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 20 18 23
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 20 18 23
                               , srcInfoPoints = []
                               }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 20 18 23
-                                 , srcInfoPoints = []
-                                 }
-                               "foo"))))
-                   (KindVar
+                            "foo")))
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 24 18 27
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 24 18 27
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 18 24 18 27
-                              , srcInfoPoints = []
-                              }
-                            "baz"))))))
+                         "baz")))))
           []
           Nothing
       , ClassDecl
@@ -622,7 +613,7 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindParen
+                (TyParen
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 16 20 24
                      , srcInfoPoints =
@@ -630,22 +621,17 @@
                          , SrcSpan "tests/examples/DataKinds.hs" 20 23 20 24
                          ]
                      }
-                   (KindVar
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 17 20 23
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 17 20 23
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 20 17 20 23
-                              , srcInfoPoints = []
-                              }
-                            "parens"))))))
+                         "parens")))))
           []
           Nothing
       , DataDecl
@@ -690,7 +676,7 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindList
+                (TyList
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 14 22 17
                      , srcInfoPoints =
@@ -698,7 +684,7 @@
                          , SrcSpan "tests/examples/DataKinds.hs" 22 16 22 17
                          ]
                      }
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 22 15 22 16
                         , srcInfoPoints = []
@@ -968,7 +954,7 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindTuple
+                (TyTuple
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 14 27 23
                      , srcInfoPoints =
@@ -977,12 +963,13 @@
                          , SrcSpan "tests/examples/DataKinds.hs" 27 22 27 23
                          ]
                      }
-                   [ KindStar
+                   Boxed
+                   [ TyStar
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 15 27 16
                          , srcInfoPoints = []
                          }
-                   , KindVar
+                   , TyCon
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/DataKinds.hs" 27 18 27 22
                          , srcInfoPoints = []
diff --git a/tests/examples/DefaultSignatures.hs.parser.golden b/tests/examples/DefaultSignatures.hs.parser.golden
--- a/tests/examples/DefaultSignatures.hs.parser.golden
+++ b/tests/examples/DefaultSignatures.hs.parser.golden
@@ -205,39 +205,53 @@
                                    , SrcSpan "tests/examples/DefaultSignatures.hs" 4 25 4 27
                                    ]
                                }
-                             (ClassA
+                             (TypeA
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23
                                   , srcInfoPoints = []
                                   }
-                                (UnQual
+                                (TyApp
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 21
+                                         SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23
                                      , srcInfoPoints = []
                                      }
-                                   (Ident
+                                   (TyCon
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 21
+                                            SrcSpan "tests/examples/DefaultSignatures.hs" 4 19 4 23
                                         , srcInfoPoints = []
                                         }
-                                      "Eq"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/DefaultSignatures.hs" 4 22 4 23
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/DefaultSignatures.hs" 4 22 4 23
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ]))))
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/DefaultSignatures.hs" 4 19 4 21
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DefaultSignatures.hs" 4 19 4 21
+                                              , srcInfoPoints = []
+                                              }
+                                            "Eq")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DefaultSignatures.hs" 4 22 4 23
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan
+                                                 "tests/examples/DefaultSignatures.hs" 4 22 4 23
+                                           , srcInfoPoints = []
+                                           }
+                                         "a")))))))
                     (TyFun
                        SrcSpanInfo
                          { srcInfoSpan =
diff --git a/tests/examples/DerivingStrategies.hs.parser.golden b/tests/examples/DerivingStrategies.hs.parser.golden
--- a/tests/examples/DerivingStrategies.hs.parser.golden
+++ b/tests/examples/DerivingStrategies.hs.parser.golden
@@ -477,40 +477,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29
+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 34
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingStrategies.hs" 16 32 16 34 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingStrategies.hs" 16 25 16 29
+                                    , srcInfoPoints = []
+                                    }
+                                  "Read")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31
                               , srcInfoPoints = []
                               }
-                            "Read"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 16 30 16 31
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -615,40 +628,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30
+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 35
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingStrategies.hs" 17 33 17 35 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingStrategies.hs" 17 27 17 30
+                                    , srcInfoPoints = []
+                                    }
+                                  "Num")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32
                               , srcInfoPoints = []
                               }
-                            "Num"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingStrategies.hs" 17 31 17 32
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/DerivingVia.hs b/tests/examples/DerivingVia.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia.hs
@@ -0,0 +1,459 @@
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DerivingVia #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE InstanceSigs #-}
+{-# LANGUAGE TypeInType #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE MultiWayIf #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE UndecidableInstances #-}
+module DerivingVia where
+
+import Data.Void
+import Data.Complex
+import Data.Functor.Const
+import Data.Functor.Identity
+import Data.Ratio
+import Control.Monad.Reader
+import Control.Monad.State
+import Control.Monad.Writer
+import Control.Applicative hiding (WrappedMonad(..))
+
+import Data.Bifunctor
+import Data.Monoid
+import Data.Kind
+
+type f ~> g = forall xx. f xx -> g xx
+
+-----
+-- Simple example
+-----
+
+data Foo a = MkFoo a a
+  deriving Show
+       via (Identity (Foo a))
+
+-----
+-- Eta reduction at work
+-----
+
+newtype Flip p a b = Flip { runFlip :: p b a }
+
+instance Bifunctor p => Bifunctor (Flip p) where
+  bimap f g = Flip . bimap g f . runFlip
+
+instance Bifunctor p => Functor (Flip p a) where
+  fmap f = Flip . first f . runFlip
+
+newtype Bar a = MkBar (Either a Int)
+  deriving Functor
+       via (Flip Either Int)
+
+-----
+-- Monad transformers
+-----
+
+type MTrans = (Type -> Type) -> (Type -> Type)
+
+-- From `constraints'
+data Dict c where
+  Dict :: c => Dict c
+
+newtype a :- b = Sub (a => Dict b)
+
+infixl 1 \\
+(\\) :: a => (b => r) -> (a :- b) -> r
+r \\ Sub Dict = r
+
+-- With `-XQuantifiedConstraints' this just becomes
+--
+--    type Lifting cls  trans = forall mm. cls mm => cls (trans mm)
+--
+--    type LiftingMonad trans = Lifting Monad trans
+--
+class LiftingMonad (trans :: MTrans) where
+  proof :: Monad m :- Monad (trans m)
+
+instance LiftingMonad (StateT s :: MTrans) where
+  proof :: Monad m :- Monad (StateT s m)
+  proof = Sub Dict
+
+instance Monoid w => LiftingMonad (WriterT w :: MTrans) where
+  proof :: Monad m :- Monad (WriterT w m)
+  proof = Sub Dict
+
+instance (LiftingMonad trans, LiftingMonad trans') => LiftingMonad (ComposeT trans trans' :: MTrans) where
+  proof :: forall m. Monad m :- Monad (ComposeT trans trans' m)
+  proof = Sub (Dict \\ proof @trans @(trans' m) \\ proof @trans' @m)
+
+newtype Stack :: MTrans where
+  Stack :: ReaderT Int (StateT Bool (WriterT String m)) a -> Stack m a
+  deriving newtype
+    ( Functor
+    , Applicative
+    , Monad
+    , MonadReader Int
+    , MonadState Bool
+    , MonadWriter String
+    )
+  deriving (MonadTrans, MFunctor)
+       via (ReaderT Int `ComposeT` StateT Bool `ComposeT` WriterT String)
+
+class MFunctor (trans :: MTrans) where
+  hoist :: Monad m => (m ~> m') -> (trans m ~> trans m')
+
+instance MFunctor (ReaderT r :: MTrans) where
+  hoist :: Monad m => (m ~> m') -> (ReaderT r m ~> ReaderT r m')
+  hoist nat = ReaderT . fmap nat . runReaderT
+
+instance MFunctor (StateT s :: MTrans) where
+  hoist :: Monad m => (m ~> m') -> (StateT s m ~> StateT s m')
+  hoist nat = StateT . fmap nat . runStateT
+
+instance MFunctor (WriterT w :: MTrans) where
+  hoist :: Monad m => (m ~> m') -> (WriterT w m ~> WriterT w m')
+  hoist nat = WriterT . nat . runWriterT
+
+infixr 9 `ComposeT`
+newtype ComposeT :: MTrans -> MTrans -> MTrans where
+  ComposeT :: { getComposeT :: f (g m) a } -> ComposeT f g m a
+  deriving newtype (Functor, Applicative, Monad)
+
+instance (MonadTrans f, MonadTrans g, LiftingMonad g) => MonadTrans (ComposeT f g) where
+  lift :: forall m. Monad m => m ~> ComposeT f g m
+  lift = ComposeT . lift . lift
+    \\ proof @g @m
+
+instance (MFunctor f, MFunctor g, LiftingMonad g) => MFunctor (ComposeT f g) where
+  hoist :: forall m m'. Monad m => (m ~> m') -> (ComposeT f g m ~> ComposeT f g m')
+  hoist f = ComposeT . hoist (hoist f) . getComposeT
+    \\ proof @g @m
+
+-----
+-- Using tuples in a `via` type
+-----
+
+newtype X a = X (a, a)
+  deriving (Semigroup, Monoid)
+       via (Product a, Sum a)
+
+  deriving (Show, Eq)
+       via (a, a)
+
+-----
+-- Abstract data types
+-----
+
+class C f where
+  c :: f a -> Int
+
+newtype X2 f a = X2 (f a)
+
+instance C (X2 f) where
+  c = const 0
+
+deriving via (X2 IO) instance C IO
+
+----
+-- Testing parser
+----
+
+newtype P0 a = P0 a             deriving Show via a
+newtype P1 a = P1 [a]           deriving Show via [a]
+newtype P2 a = P2 (a, a)        deriving Show via (a, a)
+newtype P3 a = P3 (Maybe a)     deriving Show via (First a)
+newtype P4 a = P4 (Maybe a)     deriving Show via (First $ a)
+newtype P5 a = P5 a             deriving Show via (Identity $ a)
+newtype P6 a = P6 [a]           deriving Show via ([] $ a)
+newtype P7 a = P7 (a, a)        deriving Show via (Identity $ (a, a))
+newtype P8 a = P8 (Either () a) deriving Functor via (($) (Either ()))
+
+newtype f $ a = APP (f a) deriving newtype Show deriving newtype Functor
+
+----
+-- From Baldur's notes
+----
+
+----
+-- 1
+----
+newtype WrapApplicative f a = WrappedApplicative (f a)
+  deriving (Functor, Applicative)
+
+instance (Applicative f, Num a) => Num (WrapApplicative f a) where
+  (+)         = liftA2 (+)
+  (*)         = liftA2 (*)
+  negate      = fmap negate
+  fromInteger = pure . fromInteger
+  abs         = fmap abs
+  signum      = fmap signum
+
+instance (Applicative f, Fractional a) => Fractional (WrapApplicative f a) where
+  recip        = fmap recip
+  fromRational = pure . fromRational
+
+instance (Applicative f, Floating a) => Floating (WrapApplicative f a) where
+  pi    = pure pi
+  sqrt  = fmap sqrt
+  exp   = fmap exp
+  log   = fmap log
+  sin   = fmap sin
+  cos   = fmap cos
+  asin  = fmap asin
+  atan  = fmap atan
+  acos  = fmap acos
+  sinh  = fmap sinh
+  cosh  = fmap cosh
+  asinh = fmap asinh
+  atanh = fmap atanh
+  acosh = fmap acosh
+
+instance (Applicative f, Semigroup s) => Semigroup (WrapApplicative f s) where
+  (<>) = liftA2 (<>)
+
+instance (Applicative f, Monoid m) => Monoid (WrapApplicative f m) where
+  mempty = pure mempty
+
+----
+-- 2
+----
+class Pointed p where
+  pointed :: a -> p a
+
+newtype WrapMonad f a = WrappedMonad (f a)
+  deriving newtype (Pointed, Monad)
+
+instance (Monad m, Pointed m) => Functor (WrapMonad m) where
+  fmap = liftM
+
+instance (Monad m, Pointed m) => Applicative (WrapMonad m) where
+  pure  = pointed
+  (<*>) = ap
+
+-- data
+data Sorted a = Sorted a a a
+  deriving (Functor, Applicative)
+    via (WrapMonad Sorted)
+  deriving (Num, Fractional, Floating, Semigroup, Monoid)
+    via (WrapApplicative Sorted a)
+
+
+instance Monad Sorted where
+  (>>=) :: Sorted a -> (a -> Sorted b) -> Sorted b
+  Sorted a b c >>= f = Sorted a' b' c' where
+    Sorted a' _  _  = f a
+    Sorted _  b' _  = f b
+    Sorted _  _  c' = f c
+
+instance Pointed Sorted where
+  pointed :: a -> Sorted a
+  pointed a = Sorted a a a
+
+----
+-- 3
+----
+class IsZero a where
+  isZero :: a -> Bool
+
+newtype WrappedNumEq  a = WrappedNumEq a
+newtype WrappedShow   a = WrappedShow  a
+newtype WrappedNumEq2 a = WrappedNumEq2 a
+
+instance (Num a, Eq a) => IsZero (WrappedNumEq a) where
+  isZero :: WrappedNumEq a -> Bool
+  isZero (WrappedNumEq a) = 0 == a
+
+instance Show a => IsZero (WrappedShow a) where
+  isZero :: WrappedShow a -> Bool
+  isZero (WrappedShow a) = "0" == show a
+
+instance (Num a, Eq a) => IsZero (WrappedNumEq2 a) where
+  isZero :: WrappedNumEq2 a -> Bool
+  isZero (WrappedNumEq2 a) = a + a == a
+
+newtype INT = INT Int
+  deriving newtype Show
+  deriving IsZero via (WrappedNumEq Int)
+
+newtype VOID = VOID Void deriving IsZero via (WrappedShow Void)
+
+----
+-- 4
+----
+class Bifunctor p => Biapplicative p where
+  bipure :: a -> b -> p a b
+
+  biliftA2
+    :: (a  -> b  -> c)
+    -> (a' -> b' -> c')
+    -> p a a'
+    -> p b b'
+    -> p c c'
+
+instance Biapplicative (,) where
+  bipure = (,)
+
+  biliftA2 f f' (a, a') (b, b') =
+    (f a b, f' a' b')
+
+newtype WrapBiapp p a b = WrapBiap (p a b)
+  deriving newtype (Bifunctor, Biapplicative, Eq)
+
+instance (Biapplicative p, Num a, Num b) => Num (WrapBiapp p a b) where
+  (+) = biliftA2 (+) (+)
+  (-) = biliftA2 (*) (*)
+  (*) = biliftA2 (*) (*)
+  negate = bimap negate negate
+  abs = bimap abs abs
+  signum = bimap signum signum
+  fromInteger n = fromInteger n `bipure` fromInteger n
+
+newtype INT2 = INT2 (Int, Int)
+  deriving IsZero via (WrappedNumEq2 (WrapBiapp (,) Int Int))
+
+----
+-- 5
+----
+class Monoid a => MonoidNull a where
+  null :: a -> Bool
+
+newtype WrpMonNull a = WRM a deriving (Eq, Semigroup, Monoid)
+
+instance (Eq a, Monoid a) => MonoidNull (WrpMonNull a) where
+  null :: WrpMonNull a -> Bool
+  null = (== mempty)
+
+deriving via (WrpMonNull Any) instance MonoidNull Any
+deriving via ()               instance MonoidNull ()
+deriving via Ordering         instance MonoidNull Ordering
+
+----
+-- 6
+----
+-- https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635
+
+class Lattice a where
+  sup   :: a -> a -> a
+  (.>=) :: a -> a -> Bool
+  (.>)  :: a -> a -> Bool
+
+newtype WrapOrd a = WrappedOrd a
+  deriving newtype (Eq, Ord)
+
+instance Ord a => Lattice (WrapOrd a) where
+  sup   = max
+  (.>=) = (>=)
+  (.>)  = (>)
+
+deriving via [a]    instance Ord a          => Lattice [a]
+deriving via (a, b) instance (Ord a, Ord b) => Lattice (a, b)
+--mkLattice_(Bool)
+deriving via Bool instance Lattice Bool
+--mkLattice_(Char)
+deriving via Char instance Lattice Char
+--mkLattice_(Int)
+deriving via Int instance Lattice Int
+--mkLattice_(Integer)
+deriving via Integer instance Lattice Integer
+--mkLattice_(Float)
+deriving via Float instance Lattice Float
+--mkLattice_(Double)
+deriving via Double instance Lattice Double
+--mkLattice_(Rational)
+deriving via Rational instance Lattice Rational
+
+----
+-- 7
+----
+-- https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html
+
+class Functor f => Additive f where
+  zero :: Num a => f a
+  (^+^) :: Num a => f a -> f a -> f a
+  (^+^) = liftU2 (+)
+  (^-^) :: Num a => f a -> f a -> f a
+  x ^-^ y = x ^+^ fmap negate y
+  liftU2 :: (a -> a -> a) -> f a -> f a -> f a
+
+instance Additive [] where
+  zero = []
+  liftU2 f = go where
+    go (x:xs) (y:ys) = f x y : go xs ys
+    go [] ys = ys
+    go xs [] = xs
+
+instance Additive Maybe where
+  zero = Nothing
+  liftU2 f (Just a) (Just b) = Just (f a b)
+  liftU2 _ Nothing ys = ys
+  liftU2 _ xs Nothing = xs
+
+instance Applicative f => Additive (WrapApplicative f) where
+  zero   = pure 0
+  liftU2 = liftA2
+
+deriving via (WrapApplicative ((->) a)) instance Additive ((->) a)
+deriving via (WrapApplicative Complex)  instance Additive Complex
+deriving via (WrapApplicative Identity) instance Additive Identity
+
+instance Additive ZipList where
+  zero = ZipList []
+  liftU2 f (ZipList xs) (ZipList ys) = ZipList (liftU2 f xs ys)
+
+class Additive (Diff p) => Affine p where
+  type Diff p :: Type -> Type
+
+  (.-.) :: Num a => p a -> p a -> Diff p a
+  (.+^) :: Num a => p a -> Diff p a -> p a
+  (.-^) :: Num a => p a -> Diff p a -> p a
+  p .-^ v = p .+^ fmap negate v
+
+-- #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \
+--   (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \
+--   (.-^) = (^-^) ; {-# INLINE (.-^) #-}
+-- #define ADDITIVE(T) ADDITIVEC((), T)
+newtype WrapAdditive f a = WrappedAdditive (f a)
+
+instance Additive f => Affine (WrapAdditive f) where
+  type Diff (WrapAdditive f) = f
+
+  WrappedAdditive a .-. WrappedAdditive b = a ^-^ b
+  WrappedAdditive a .+^ b = WrappedAdditive (a ^+^ b)
+  WrappedAdditive a .-^ b = WrappedAdditive (a ^-^ b)
+
+-- ADDITIVE(((->) a))
+deriving via (WrapAdditive ((->) a)) instance Affine ((->) a)
+-- ADDITIVE([])
+deriving via (WrapAdditive [])       instance Affine []
+-- ADDITIVE(Complex)
+deriving via (WrapAdditive Complex)  instance Affine Complex
+-- ADDITIVE(Maybe)
+deriving via (WrapAdditive Maybe)    instance Affine Maybe
+-- ADDITIVE(ZipList)
+deriving via (WrapAdditive ZipList)  instance Affine ZipList
+-- ADDITIVE(Identity)
+deriving via (WrapAdditive Identity) instance Affine Identity
+
+----
+-- 8
+----
+
+class C2 a b c where
+  c2 :: a -> b -> c
+
+instance C2 a b (Const a b) where
+  c2 x _ = Const x
+
+newtype Fweemp a = Fweemp a
+  deriving (C2 a b)
+       via (Const a (b :: Type))
diff --git a/tests/examples/DerivingVia.hs.exactprinter.golden b/tests/examples/DerivingVia.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia.hs.exactprinter.golden
@@ -0,0 +1,460 @@
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DerivingVia #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE InstanceSigs #-}
+{-# LANGUAGE TypeInType #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE MultiWayIf #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE UndecidableInstances #-}
+module DerivingVia where
+
+import Data.Void
+import Data.Complex
+import Data.Functor.Const
+import Data.Functor.Identity
+import Data.Ratio
+import Control.Monad.Reader
+import Control.Monad.State
+import Control.Monad.Writer
+import Control.Applicative hiding (WrappedMonad(..))
+
+import Data.Bifunctor
+import Data.Monoid
+import Data.Kind
+
+type f ~> g = forall xx. f xx -> g xx
+
+-----
+-- Simple example
+-----
+
+data Foo a = MkFoo a a
+  deriving
+       via( Identity (Foo a))Show
+
+-----
+-- Eta reduction at work
+-----
+
+newtype Flip p a b = Flip { runFlip :: p b a }
+
+instance Bifunctor p => Bifunctor (Flip p) where
+  bimap f g = Flip . bimap g f . runFlip
+
+instance Bifunctor p => Functor (Flip p a) where
+  fmap f = Flip . first f . runFlip
+
+newtype Bar a = MkBar (Either a Int)
+  deriving
+       via( Flip Either Int)Functor
+
+-----
+-- Monad transformers
+-----
+
+type MTrans = (Type -> Type) -> (Type -> Type)
+
+-- From `constraints'
+data Dict c where
+  Dict :: c => Dict c
+
+newtype a :- b = Sub (a => Dict b)
+
+infixl 1 \\
+(\\) :: a => (b => r) -> (a :- b) -> r
+r \\ Sub Dict = r
+
+-- With `-XQuantifiedConstraints' this just becomes
+--
+--    type Lifting cls  trans = forall mm. cls mm => cls (trans mm)
+--
+--    type LiftingMonad trans = Lifting Monad trans
+--
+class LiftingMonad (trans :: MTrans) where
+  proof :: Monad m :- Monad (trans m)
+
+instance LiftingMonad (StateT s :: MTrans) where
+  proof :: Monad m :- Monad (StateT s m)
+  proof = Sub Dict
+
+instance Monoid w => LiftingMonad (WriterT w :: MTrans) where
+  proof :: Monad m :- Monad (WriterT w m)
+  proof = Sub Dict
+
+instance (LiftingMonad trans, LiftingMonad trans') => LiftingMonad (ComposeT trans trans' :: MTrans) where
+  proof :: forall m. Monad m :- Monad (ComposeT trans trans' m)
+  proof = Sub (Dict \\ proof @trans @(trans' m) \\ proof @trans' @m)
+
+newtype Stack :: MTrans where
+  Stack :: ReaderT Int (StateT Bool (WriterT String m)) a -> Stack m a
+  deriving newtype
+    ( Functor
+    , Applicative
+    , Monad
+    , MonadReader Int
+    , MonadState Bool
+    , MonadWriter String
+    )
+  deriving
+       via( ReaderT Int `ComposeT` StateT Bool `ComposeT` WriterT String)(MonadTrans,MFunctor)
+
+class MFunctor (trans :: MTrans) where
+  hoist :: Monad m => (m ~> m') -> (trans m ~> trans m')
+
+instance MFunctor (ReaderT r :: MTrans) where
+  hoist :: Monad m => (m ~> m') -> (ReaderT r m ~> ReaderT r m')
+  hoist nat = ReaderT . fmap nat . runReaderT
+
+instance MFunctor (StateT s :: MTrans) where
+  hoist :: Monad m => (m ~> m') -> (StateT s m ~> StateT s m')
+  hoist nat = StateT . fmap nat . runStateT
+
+instance MFunctor (WriterT w :: MTrans) where
+  hoist :: Monad m => (m ~> m') -> (WriterT w m ~> WriterT w m')
+  hoist nat = WriterT . nat . runWriterT
+
+infixr 9 `ComposeT`
+newtype ComposeT :: MTrans -> MTrans -> MTrans where
+  ComposeT :: { getComposeT :: f (g m) a } -> ComposeT f g m a
+  deriving newtype (Functor, Applicative, Monad)
+
+instance (MonadTrans f, MonadTrans g, LiftingMonad g) => MonadTrans (ComposeT f g) where
+  lift :: forall m. Monad m => m ~> ComposeT f g m
+  lift = ComposeT . lift . lift
+    \\ proof @g @m
+
+instance (MFunctor f, MFunctor g, LiftingMonad g) => MFunctor (ComposeT f g) where
+  hoist :: forall m m'. Monad m => (m ~> m') -> (ComposeT f g m ~> ComposeT f g m')
+  hoist f = ComposeT . hoist (hoist f) . getComposeT
+    \\ proof @g @m
+
+-----
+-- Using tuples in a `via` type
+-----
+
+newtype X a = X (a, a)
+  deriving
+       via (Product a, Sum a)(Semigroup,Monoid)
+
+  deriving
+       via (a, a)(Show,Eq)
+
+-----
+-- Abstract data types
+-----
+
+class C f where
+  c :: f a -> Int
+
+newtype X2 f a = X2 (f a)
+
+instance C (X2 f) where
+  c = const 0
+
+deriving via( X2 IO) instance C IO
+
+----
+-- Testing parser
+----
+
+newtype P0 a = P0 a             deriving      viaaShow
+newtype P1 a = P1 [a]           deriving      via[ a]Show
+newtype P2 a = P2 (a, a)        deriving      via (a, a)Show
+newtype P3 a = P3 (Maybe a)     deriving      via( First a)Show
+newtype P4 a = P4 (Maybe a)     deriving      via( First $ a)Show
+newtype P5 a = P5 a             deriving      via( Identity $ a)Show
+newtype P6 a = P6 [a]           deriving      via( [] $ a)Show
+newtype P7 a = P7 (a, a)        deriving      via( Identity $ (a, a))Show
+newtype P8 a = P8 (Either () a) deriving         via( ($) (Either ()))Functor
+
+newtype f $ a = APP (f a) deriving newtype Show deriving newtype Functor
+
+----
+-- From Baldur's notes
+----
+
+----
+-- 1
+----
+newtype WrapApplicative f a = WrappedApplicative (f a)
+  deriving (Functor, Applicative)
+
+instance (Applicative f, Num a) => Num (WrapApplicative f a) where
+  (+)         = liftA2 (+)
+  (*)         = liftA2 (*)
+  negate      = fmap negate
+  fromInteger = pure . fromInteger
+  abs         = fmap abs
+  signum      = fmap signum
+
+instance (Applicative f, Fractional a) => Fractional (WrapApplicative f a) where
+  recip        = fmap recip
+  fromRational = pure . fromRational
+
+instance (Applicative f, Floating a) => Floating (WrapApplicative f a) where
+  pi    = pure pi
+  sqrt  = fmap sqrt
+  exp   = fmap exp
+  log   = fmap log
+  sin   = fmap sin
+  cos   = fmap cos
+  asin  = fmap asin
+  atan  = fmap atan
+  acos  = fmap acos
+  sinh  = fmap sinh
+  cosh  = fmap cosh
+  asinh = fmap asinh
+  atanh = fmap atanh
+  acosh = fmap acosh
+
+instance (Applicative f, Semigroup s) => Semigroup (WrapApplicative f s) where
+  (<>) = liftA2 (<>)
+
+instance (Applicative f, Monoid m) => Monoid (WrapApplicative f m) where
+  mempty = pure mempty
+
+----
+-- 2
+----
+class Pointed p where
+  pointed :: a -> p a
+
+newtype WrapMonad f a = WrappedMonad (f a)
+  deriving newtype (Pointed, Monad)
+
+instance (Monad m, Pointed m) => Functor (WrapMonad m) where
+  fmap = liftM
+
+instance (Monad m, Pointed m) => Applicative (WrapMonad m) where
+  pure  = pointed
+  (<*>) = ap
+
+-- data
+data Sorted a = Sorted a a a
+  deriving
+    via( WrapMonad Sorted)(Functor,Applicative)
+  deriving
+    via( WrapApplicative Sorted a)(Num,Fractional,Floating,Semigroup,Monoid)
+
+
+instance Monad Sorted where
+  (>>=) :: Sorted a -> (a -> Sorted b) -> Sorted b
+  Sorted a b c >>= f = Sorted a' b' c' where
+    Sorted a' _  _  = f a
+    Sorted _  b' _  = f b
+    Sorted _  _  c' = f c
+
+instance Pointed Sorted where
+  pointed :: a -> Sorted a
+  pointed a = Sorted a a a
+
+----
+-- 3
+----
+class IsZero a where
+  isZero :: a -> Bool
+
+newtype WrappedNumEq  a = WrappedNumEq a
+newtype WrappedShow   a = WrappedShow  a
+newtype WrappedNumEq2 a = WrappedNumEq2 a
+
+instance (Num a, Eq a) => IsZero (WrappedNumEq a) where
+  isZero :: WrappedNumEq a -> Bool
+  isZero (WrappedNumEq a) = 0 == a
+
+instance Show a => IsZero (WrappedShow a) where
+  isZero :: WrappedShow a -> Bool
+  isZero (WrappedShow a) = "0" == show a
+
+instance (Num a, Eq a) => IsZero (WrappedNumEq2 a) where
+  isZero :: WrappedNumEq2 a -> Bool
+  isZero (WrappedNumEq2 a) = a + a == a
+
+newtype INT = INT Int
+  deriving newtype Show
+  deriving        via( WrappedNumEq Int)IsZero
+
+newtype VOID = VOID Void deriving        via( WrappedShow Void)IsZero
+
+----
+-- 4
+----
+class Bifunctor p => Biapplicative p where
+  bipure :: a -> b -> p a b
+
+  biliftA2
+    :: (a  -> b  -> c)
+    -> (a' -> b' -> c')
+    -> p a a'
+    -> p b b'
+    -> p c c'
+
+instance Biapplicative (,) where
+  bipure = (,)
+
+  biliftA2 f f' (a, a') (b, b') =
+    (f a b, f' a' b')
+
+newtype WrapBiapp p a b = WrapBiap (p a b)
+  deriving newtype (Bifunctor, Biapplicative, Eq)
+
+instance (Biapplicative p, Num a, Num b) => Num (WrapBiapp p a b) where
+  (+) = biliftA2 (+) (+)
+  (-) = biliftA2 (*) (*)
+  (*) = biliftA2 (*) (*)
+  negate = bimap negate negate
+  abs = bimap abs abs
+  signum = bimap signum signum
+  fromInteger n = fromInteger n `bipure` fromInteger n
+
+newtype INT2 = INT2 (Int, Int)
+  deriving        via( WrappedNumEq2 (WrapBiapp (,) Int Int))IsZero
+
+----
+-- 5
+----
+class Monoid a => MonoidNull a where
+  null :: a -> Bool
+
+newtype WrpMonNull a = WRM a deriving (Eq, Semigroup, Monoid)
+
+instance (Eq a, Monoid a) => MonoidNull (WrpMonNull a) where
+  null :: WrpMonNull a -> Bool
+  null = (== mempty)
+
+deriving via( WrpMonNull Any) instance MonoidNull Any
+deriving via ()               instance MonoidNull ()
+deriving viaOrdering          instance MonoidNull Ordering
+
+----
+-- 6
+----
+-- https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635
+
+class Lattice a where
+  sup   :: a -> a -> a
+  (.>=) :: a -> a -> Bool
+  (.>)  :: a -> a -> Bool
+
+newtype WrapOrd a = WrappedOrd a
+  deriving newtype (Eq, Ord)
+
+instance Ord a => Lattice (WrapOrd a) where
+  sup   = max
+  (.>=) = (>=)
+  (.>)  = (>)
+
+deriving via[ a]    instance Ord a          => Lattice [a]
+deriving via (a, b) instance (Ord a, Ord b) => Lattice (a, b)
+--mkLattice_(Bool)
+deriving viaBool  instance Lattice Bool
+--mkLattice_(Char)
+deriving viaChar  instance Lattice Char
+--mkLattice_(Int)
+deriving viaInt  instance Lattice Int
+--mkLattice_(Integer)
+deriving viaInteger  instance Lattice Integer
+--mkLattice_(Float)
+deriving viaFloat  instance Lattice Float
+--mkLattice_(Double)
+deriving viaDouble  instance Lattice Double
+--mkLattice_(Rational)
+deriving viaRational  instance Lattice Rational
+
+----
+-- 7
+----
+-- https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html
+
+class Functor f => Additive f where
+  zero :: Num a => f a
+  (^+^) :: Num a => f a -> f a -> f a
+  (^+^) = liftU2 (+)
+  (^-^) :: Num a => f a -> f a -> f a
+  x ^-^ y = x ^+^ fmap negate y
+  liftU2 :: (a -> a -> a) -> f a -> f a -> f a
+
+instance Additive [] where
+  zero = []
+  liftU2 f = go where
+    go (x:xs) (y:ys) = f x y : go xs ys
+    go [] ys = ys
+    go xs [] = xs
+
+instance Additive Maybe where
+  zero = Nothing
+  liftU2 f (Just a) (Just b) = Just (f a b)
+  liftU2 _ Nothing ys = ys
+  liftU2 _ xs Nothing = xs
+
+instance Applicative f => Additive (WrapApplicative f) where
+  zero   = pure 0
+  liftU2 = liftA2
+
+deriving via( WrapApplicative ((->) a)) instance Additive ((->) a)
+deriving via( WrapApplicative Complex)  instance Additive Complex
+deriving via( WrapApplicative Identity) instance Additive Identity
+
+instance Additive ZipList where
+  zero = ZipList []
+  liftU2 f (ZipList xs) (ZipList ys) = ZipList (liftU2 f xs ys)
+
+class Additive (Diff p) => Affine p where
+  type Diff p :: Type -> Type
+
+  (.-.) :: Num a => p a -> p a -> Diff p a
+  (.+^) :: Num a => p a -> Diff p a -> p a
+  (.-^) :: Num a => p a -> Diff p a -> p a
+  p .-^ v = p .+^ fmap negate v
+
+-- #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \
+--   (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \
+--   (.-^) = (^-^) ; {-# INLINE (.-^) #-}
+-- #define ADDITIVE(T) ADDITIVEC((), T)
+newtype WrapAdditive f a = WrappedAdditive (f a)
+
+instance Additive f => Affine (WrapAdditive f) where
+  type Diff (WrapAdditive f) = f
+
+  WrappedAdditive a .-. WrappedAdditive b = a ^-^ b
+  WrappedAdditive a .+^ b = WrappedAdditive (a ^+^ b)
+  WrappedAdditive a .-^ b = WrappedAdditive (a ^-^ b)
+
+-- ADDITIVE(((->) a))
+deriving via( WrapAdditive ((->) a)) instance Affine ((->) a)
+-- ADDITIVE([])
+deriving via( WrapAdditive [])       instance Affine []
+-- ADDITIVE(Complex)
+deriving via( WrapAdditive Complex)  instance Affine Complex
+-- ADDITIVE(Maybe)
+deriving via( WrapAdditive Maybe)    instance Affine Maybe
+-- ADDITIVE(ZipList)
+deriving via( WrapAdditive ZipList)  instance Affine ZipList
+-- ADDITIVE(Identity)
+deriving via( WrapAdditive Identity) instance Affine Identity
+
+----
+-- 8
+----
+
+class C2 a b c where
+  c2 :: a -> b -> c
+
+instance C2 a b (Const a b) where
+  c2 x _ = Const x
+
+newtype Fweemp a = Fweemp a
+  deriving
+       via( Const a (b :: Type))(C2ab)
+
diff --git a/tests/examples/DerivingVia.hs.parser.golden b/tests/examples/DerivingVia.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia.hs.parser.golden
@@ -0,0 +1,32882 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 1 460 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 42 1 42 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 52 1 52 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 451 1 451 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 460 1 460 1
+            , SrcSpan "tests/examples/DerivingVia.hs" 460 1 460 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 25
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/DerivingVia.hs" 20 1 20 7
+                  , SrcSpan "tests/examples/DerivingVia.hs" 20 20 20 25
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 20 8 20 19
+                 , srcInfoPoints = []
+                 }
+               "DerivingVia")
+            Nothing
+            Nothing))
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 36
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 1 1 1 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 1 33 1 36
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 1 14 1 32
+                , srcInfoPoints = []
+                }
+              "DerivingStrategies"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 29
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 2 1 2 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 2 26 2 29
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 2 14 2 25
+                , srcInfoPoints = []
+                }
+              "DerivingVia"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 44
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 3 1 3 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 3 41 3 44
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 3 14 3 40
+                , srcInfoPoints = []
+                }
+              "GeneralizedNewtypeDeriving"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 32
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 4 1 4 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 4 29 4 32
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 4 14 4 28
+                , srcInfoPoints = []
+                }
+              "KindSignatures"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 28
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 5 1 5 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 5 25 5 28
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 5 14 5 24
+                , srcInfoPoints = []
+                }
+              "RankNTypes"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 36
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 6 1 6 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 6 33 6 36
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 6 14 6 32
+                , srcInfoPoints = []
+                }
+              "StandaloneDeriving"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 30
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 7 1 7 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 7 27 7 30
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 7 14 7 26
+                , srcInfoPoints = []
+                }
+              "InstanceSigs"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 28
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 8 1 8 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 8 25 8 28
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 8 14 8 24
+                , srcInfoPoints = []
+                }
+              "TypeInType"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 23
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 9 1 9 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 9 20 9 23
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 9 14 9 19
+                , srcInfoPoints = []
+                }
+              "GADTs"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 34
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 10 1 10 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 10 31 10 34
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 10 14 10 30
+                , srcInfoPoints = []
+                }
+              "TypeApplications"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 33
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 11 1 11 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 11 30 11 33
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 11 14 11 29
+                , srcInfoPoints = []
+                }
+              "ConstraintKinds"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 12 1 12 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 12 36 12 39
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 12 14 12 35
+                , srcInfoPoints = []
+                }
+              "MultiParamTypeClasses"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 28
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 13 1 13 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 13 25 13 28
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 13 14 13 24
+                , srcInfoPoints = []
+                }
+              "MultiWayIf"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 31
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 14 1 14 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 14 28 14 31
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 14 14 14 27
+                , srcInfoPoints = []
+                }
+              "TypeOperators"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 37
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 15 1 15 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 15 34 15 37
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 15 14 15 33
+                , srcInfoPoints = []
+                }
+              "ScopedTypeVariables"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 35
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 16 1 16 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 16 32 16 35
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 16 14 16 31
+                , srcInfoPoints = []
+                }
+              "FlexibleInstances"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 30
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 17 1 17 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 17 27 17 30
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 17 14 17 26
+                , srcInfoPoints = []
+                }
+              "TypeFamilies"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 34
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 18 1 18 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 18 31 18 34
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 18 14 18 30
+                , srcInfoPoints = []
+                }
+              "FlexibleContexts"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 38
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 19 1 19 13
+                , SrcSpan "tests/examples/DerivingVia.hs" 19 35 19 38
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 19 14 19 34
+                , srcInfoPoints = []
+                }
+              "UndecidableInstances"
+          ]
+      ]
+      [ ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 17
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 22 1 22 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 22 8 22 17
+                  , srcInfoPoints = []
+                  }
+                "Data.Void"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 20
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 23 1 23 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 23 8 23 20
+                  , srcInfoPoints = []
+                  }
+                "Data.Complex"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 26
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 24 1 24 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 24 8 24 26
+                  , srcInfoPoints = []
+                  }
+                "Data.Functor.Const"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 29
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 25 1 25 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 25 8 25 29
+                  , srcInfoPoints = []
+                  }
+                "Data.Functor.Identity"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 18
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 26 1 26 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 26 8 26 18
+                  , srcInfoPoints = []
+                  }
+                "Data.Ratio"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 28
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 27 1 27 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 27 8 27 28
+                  , srcInfoPoints = []
+                  }
+                "Control.Monad.Reader"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 28 1 28 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 28 8 28 27
+                  , srcInfoPoints = []
+                  }
+                "Control.Monad.State"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 28
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 29 1 29 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 29 8 29 28
+                  , srcInfoPoints = []
+                  }
+                "Control.Monad.Writer"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 53
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 30 1 30 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 8 30 27
+                  , srcInfoPoints = []
+                  }
+                "Control.Applicative"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs =
+              Just
+                (ImportSpecList
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 28 30 53
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 30 28 30 34
+                         , SrcSpan "tests/examples/DerivingVia.hs" 30 35 30 36
+                         , SrcSpan "tests/examples/DerivingVia.hs" 30 52 30 53
+                         ]
+                     }
+                   True
+                   [ IThingAll
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 36 30 52
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 30 48 30 49
+                             , SrcSpan "tests/examples/DerivingVia.hs" 30 49 30 51
+                             , SrcSpan "tests/examples/DerivingVia.hs" 30 51 30 52
+                             ]
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 30 36 30 48
+                            , srcInfoPoints = []
+                            }
+                          "WrappedMonad")
+                   ])
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 22
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 32 1 32 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 32 8 32 22
+                  , srcInfoPoints = []
+                  }
+                "Data.Bifunctor"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 19
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 33 1 33 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 33 8 33 19
+                  , srcInfoPoints = []
+                  }
+                "Data.Monoid"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 17
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 34 1 34 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 34 8 34 17
+                  , srcInfoPoints = []
+                  }
+                "Data.Kind"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      ]
+      [ TypeDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 38
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 36 1 36 5
+                , SrcSpan "tests/examples/DerivingVia.hs" 36 13 36 14
+                ]
+            }
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 12
+               , srcInfoPoints = []
+               }
+             (DHInfix
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 12
+                  , srcInfoPoints = []
+                  }
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 7
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 6 36 7
+                        , srcInfoPoints = []
+                        }
+                      "f"))
+                (Symbol
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 8 36 10
+                     , srcInfoPoints = []
+                     }
+                   "~>"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 11 36 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 11 36 12
+                     , srcInfoPoints = []
+                     }
+                   "g")))
+          (TyForall
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 15 36 38
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/DerivingVia.hs" 36 15 36 21
+                   , SrcSpan "tests/examples/DerivingVia.hs" 36 24 36 25
+                   ]
+               }
+             (Just
+                [ UnkindedVar
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 22 36 24
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 22 36 24
+                         , srcInfoPoints = []
+                         }
+                       "xx")
+                ])
+             Nothing
+             (TyFun
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 38
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 36 31 36 33 ]
+                  }
+                (TyApp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 30
+                     , srcInfoPoints = []
+                     }
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 27
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 26 36 27
+                           , srcInfoPoints = []
+                           }
+                         "f"))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 28 36 30
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 28 36 30
+                           , srcInfoPoints = []
+                           }
+                         "xx")))
+                (TyApp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 38
+                     , srcInfoPoints = []
+                     }
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 35
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 34 36 35
+                           , srcInfoPoints = []
+                           }
+                         "g"))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 36 36 38
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 36 36 36 38
+                           , srcInfoPoints = []
+                           }
+                         "xx")))))
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 1 43 16
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 42 12 42 13 ]
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 1 42 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 11
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 9
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 6 42 9
+                     , srcInfoPoints = []
+                     }
+                   "Foo"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 10 42 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 10 42 11
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 23
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 23
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 14 42 19
+                      , srcInfoPoints = []
+                      }
+                    "MkFoo")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 20 42 21
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 20 42 21
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 , TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 22 42 23
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 42 22 42 23
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 3 43 16
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 43 3 43 11 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 8 44 11
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 12 44 30
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 44 12 44 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 44 29 44 30
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 29
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 44 13 44 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "Identity")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 44 22 44 29
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 44 22 44 23
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 44 28 44 29
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 28
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 44 23 44 26
+                                           , srcInfoPoints = []
+                                           }
+                                         "Foo")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 44 27 44 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 44 27 44 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "a"))))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 43 12 43 16
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 47
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 50 20 50 21 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 1 50 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 19
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 17
+                  , srcInfoPoints = []
+                  }
+                (DHApp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 15
+                     , srcInfoPoints = []
+                     }
+                   (DHead
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 13
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 9 50 13
+                           , srcInfoPoints = []
+                           }
+                         "Flip"))
+                   (UnkindedVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 14 50 15
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 14 50 15
+                           , srcInfoPoints = []
+                           }
+                         "p")))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 16 50 17
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 16 50 17
+                        , srcInfoPoints = []
+                        }
+                      "a")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 18 50 19
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 18 50 19
+                     , srcInfoPoints = []
+                     }
+                   "b")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 47
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 50 27 50 28
+                    , SrcSpan "tests/examples/DerivingVia.hs" 50 46 50 47
+                    ]
+                }
+              Nothing
+              Nothing
+              (RecDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 47
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 50 27 50 28
+                       , SrcSpan "tests/examples/DerivingVia.hs" 50 46 50 47
+                       ]
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 22 50 26
+                      , srcInfoPoints = []
+                      }
+                    "Flip")
+                 [ FieldDecl
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 29 50 45
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 50 37 50 39 ]
+                       }
+                     [ Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 29 50 36
+                           , srcInfoPoints = []
+                           }
+                         "runFlip"
+                     ]
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 45
+                          , srcInfoPoints = []
+                          }
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 43
+                             , srcInfoPoints = []
+                             }
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 41
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 50 40 50 41
+                                   , srcInfoPoints = []
+                                   }
+                                 "p"))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 42 50 43
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 50 42 50 43
+                                   , srcInfoPoints = []
+                                   }
+                                 "b")))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 44 50 45
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 50 44 50 45
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          []
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 1 55 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 52 1 52 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 52 44 52 49
+                , SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 43
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 24
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 52 22 52 24 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 52 10 52 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "Bifunctor")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 20 52 21
+                                 , srcInfoPoints = []
+                                 }
+                               "p"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 43
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 25 52 34
+                           , srcInfoPoints = []
+                           }
+                         "Bifunctor")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 43
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 52 35 52 36
+                         , SrcSpan "tests/examples/DerivingVia.hs" 52 42 52 43
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 42
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 36 52 40
+                                 , srcInfoPoints = []
+                                 }
+                               "Flip")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 52 41 52 42
+                              , srcInfoPoints = []
+                              }
+                            "p"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 3 53 8
+                             , srcInfoPoints = []
+                             }
+                           "bimap")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 9 53 10
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        , PVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 11 53 12
+                                 , srcInfoPoints = []
+                                 }
+                               "g")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 41
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 53 13 53 14 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 41
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 15 53 19
+                                         , srcInfoPoints = []
+                                         }
+                                       "Flip")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 20 53 21
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 41
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 31
+                                      , srcInfoPoints = []
+                                      }
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 29
+                                         , srcInfoPoints = []
+                                         }
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 22 53 27
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 53 22 53 27
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs" 53 22 53 27
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "bimap")))
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 28 53 29
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 53 28 53 29
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs" 53 28 53 29
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "g"))))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 30 53 31
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 53 30 53 31
+                                               , srcInfoPoints = []
+                                               }
+                                             "f"))))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 32 53 33
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 53 34 53 41
+                                            , srcInfoPoints = []
+                                            }
+                                          "runFlip"))))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 1 58 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 55 1 55 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 55 44 55 49
+                , SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 43
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 24
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 55 22 55 24 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 55 10 55 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "Bifunctor")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 20 55 21
+                                 , srcInfoPoints = []
+                                 }
+                               "p"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 43
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 25 55 32
+                           , srcInfoPoints = []
+                           }
+                         "Functor")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 43
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 55 33 55 34
+                         , SrcSpan "tests/examples/DerivingVia.hs" 55 42 55 43
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 42
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 40
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 55 34 55 38
+                                    , srcInfoPoints = []
+                                    }
+                                  "Flip")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 39 55 40
+                                 , srcInfoPoints = []
+                                 }
+                               "p")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 55 41 55 42
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 36
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 3 56 7
+                             , srcInfoPoints = []
+                             }
+                           "fmap")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 8 56 9
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 36
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 56 10 56 11 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 36
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 12 56 16
+                                         , srcInfoPoints = []
+                                         }
+                                       "Flip")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 17 56 18
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 36
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 26
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 19 56 24
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 56 19 56 24
+                                               , srcInfoPoints = []
+                                               }
+                                             "first")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 25 56 26
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 56 25 56 26
+                                               , srcInfoPoints = []
+                                               }
+                                             "f"))))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 27 56 28
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 56 29 56 36
+                                            , srcInfoPoints = []
+                                            }
+                                          "runFlip"))))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 59 19
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 58 15 58 16 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 1 58 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 14
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 9 58 12
+                     , srcInfoPoints = []
+                     }
+                   "Bar"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 13 58 14
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 37
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 17 58 22
+                      , srcInfoPoints = []
+                      }
+                    "MkBar")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 37
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 58 23 58 24
+                           , SrcSpan "tests/examples/DerivingVia.hs" 58 36 58 37
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 36
+                          , srcInfoPoints = []
+                          }
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 32
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 58 24 58 30
+                                      , srcInfoPoints = []
+                                      }
+                                    "Either")))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 58 31 58 32
+                                   , srcInfoPoints = []
+                                   }
+                                 "a")))
+                        (TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 58 33 58 36
+                                   , srcInfoPoints = []
+                                   }
+                                 "Int"))))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 19
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 59 3 59 11 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 8 60 11
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 29
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 60 12 60 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 60 28 60 29
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 28
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 24
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 60 13 60 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "Flip")))
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 60 18 60 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "Either"))))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 60 25 60 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "Int")))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 59 12 59 19
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              ]
+          ]
+      , TypeDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 47
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 66 1 66 5
+                , SrcSpan "tests/examples/DerivingVia.hs" 66 13 66 14
+                ]
+            }
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 6 66 12
+                  , srcInfoPoints = []
+                  }
+                "MTrans"))
+          (TyFun
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 47
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/DerivingVia.hs" 66 30 66 32 ]
+               }
+             (TyParen
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 29
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 15 66 16
+                      , SrcSpan "tests/examples/DerivingVia.hs" 66 28 66 29
+                      ]
+                  }
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 28
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 21 66 23 ]
+                     }
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 16 66 20
+                              , srcInfoPoints = []
+                              }
+                            "Type")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 24 66 28
+                              , srcInfoPoints = []
+                              }
+                            "Type")))))
+             (TyParen
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 47
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 66 33 66 34
+                      , SrcSpan "tests/examples/DerivingVia.hs" 66 46 66 47
+                      ]
+                  }
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 46
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 66 39 66 41 ]
+                     }
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 34 66 38
+                              , srcInfoPoints = []
+                              }
+                            "Type")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 66 42 66 46
+                              , srcInfoPoints = []
+                              }
+                            "Type"))))))
+      , GDataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 72 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 69 13 69 18
+                , SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 0
+                ]
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 1 69 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 12
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 6 69 10
+                     , srcInfoPoints = []
+                     }
+                   "Dict"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 69 11 69 12
+                     , srcInfoPoints = []
+                     }
+                   "c")))
+          Nothing
+          [ GadtDecl
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 22
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 70 8 70 10 ]
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 3 70 7
+                   , srcInfoPoints = []
+                   }
+                 "Dict")
+              Nothing
+              Nothing
+              Nothing
+              (TyForall
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 22
+                   , srcInfoPoints = []
+                   }
+                 Nothing
+                 (Just
+                    (CxSingle
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
+                         }
+                       (TypeA
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 15
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 70 13 70 15 ]
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 70 11 70 12
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))))
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 22
+                      , srcInfoPoints = []
+                      }
+                    (TyCon
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 16 70 20
+                               , srcInfoPoints = []
+                               }
+                             "Dict")))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 70 21 70 22
+                            , srcInfoPoints = []
+                            }
+                          "c"))))
+          ]
+          []
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 35
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 72 16 72 17 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 1 72 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15
+               , srcInfoPoints = []
+               }
+             (DHInfix
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 15
+                  , srcInfoPoints = []
+                  }
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 9 72 10
+                        , srcInfoPoints = []
+                        }
+                      "a"))
+                (Symbol
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 11 72 13
+                     , srcInfoPoints = []
+                     }
+                   ":-"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 14 72 15
+                     , srcInfoPoints = []
+                     }
+                   "b")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 35
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 18 72 21
+                      , srcInfoPoints = []
+                      }
+                    "Sub")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 35
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 72 22 72 23
+                           , SrcSpan "tests/examples/DerivingVia.hs" 72 34 72 35
+                           ]
+                       }
+                     (TyForall
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 34
+                          , srcInfoPoints = []
+                          }
+                        Nothing
+                        (Just
+                           (CxSingle
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
+                                }
+                              (TypeA
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
+                                   }
+                                 (TyVar
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 27
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 72 25 72 27 ]
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 72 23 72 24
+                                         , srcInfoPoints = []
+                                         }
+                                       "a")))))
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 34
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 72 28 72 32
+                                      , srcInfoPoints = []
+                                      }
+                                    "Dict")))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 72 33 72 34
+                                   , srcInfoPoints = []
+                                   }
+                                 "b"))))
+                 ])
+          ]
+          []
+      , InfixDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 12
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 74 8 74 9 ]
+            }
+          (AssocLeft
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 1 74 7
+               , srcInfoPoints = []
+               })
+          (Just 1)
+          [ VarOp
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12
+                , srcInfoPoints = []
+                }
+              (Symbol
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 74 10 74 12
+                   , srcInfoPoints = []
+                   }
+                 "\\\\")
+          ]
+      , TypeSig
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 75 6 75 8 ]
+            }
+          [ Symbol
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 5
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 75 1 75 2
+                    , SrcSpan "tests/examples/DerivingVia.hs" 75 2 75 4
+                    , SrcSpan "tests/examples/DerivingVia.hs" 75 4 75 5
+                    ]
+                }
+              "\\\\"
+          ]
+          (TyForall
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 39
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
+                        }
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 13
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 75 11 75 13 ]
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 9 75 10
+                              , srcInfoPoints = []
+                              }
+                            "a")))))
+             (TyFun
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 39
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 75 23 75 25 ]
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 22
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 14 75 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 75 21 75 22
+                         ]
+                     }
+                   (TyForall
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 21
+                        , srcInfoPoints = []
+                        }
+                      Nothing
+                      (Just
+                         (CxSingle
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
+                              }
+                            (TypeA
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
+                                 }
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 19
+                                    , srcInfoPoints =
+                                        [ SrcSpan "tests/examples/DerivingVia.hs" 75 17 75 19 ]
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 75 15 75 16
+                                       , srcInfoPoints = []
+                                       }
+                                     "b")))))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 20 75 21
+                              , srcInfoPoints = []
+                              }
+                            "r"))))
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 39
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 75 35 75 37 ]
+                     }
+                   (TyParen
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 34
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 75 26 75 27
+                            , SrcSpan "tests/examples/DerivingVia.hs" 75 33 75 34
+                            ]
+                        }
+                      (TyInfix
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 33
+                           , srcInfoPoints = []
+                           }
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 27 75 28
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))
+                         (UnpromotedName
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
+                                 , srcInfoPoints = []
+                                 }
+                               (Symbol
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 75 29 75 31
+                                    , srcInfoPoints = []
+                                    }
+                                  ":-")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 32 75 33
+                                 , srcInfoPoints = []
+                                 }
+                               "b"))))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 75 38 75 39
+                           , srcInfoPoints = []
+                           }
+                         "r")))))
+      , FunBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18
+            , srcInfoPoints = []
+            }
+          [ InfixMatch
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 18
+                , srcInfoPoints = []
+                }
+              (PVar
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 1 76 2
+                      , srcInfoPoints = []
+                      }
+                    "r"))
+              (Symbol
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 3 76 5
+                   , srcInfoPoints = []
+                   }
+                 "\\\\")
+              [ PApp
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 14
+                    , srcInfoPoints = []
+                    }
+                  (UnQual
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 6 76 9
+                          , srcInfoPoints = []
+                          }
+                        "Sub"))
+                  [ PApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 10 76 14
+                              , srcInfoPoints = []
+                              }
+                            "Dict"))
+                      []
+                  ]
+              ]
+              (UnGuardedRhs
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 18
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 76 15 76 16 ]
+                   }
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 76 17 76 18
+                            , srcInfoPoints = []
+                            }
+                          "r"))))
+              Nothing
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 1 85 38
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 84 1 84 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 84 38 84 43
+                , SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 37
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 7 84 19
+                     , srcInfoPoints = []
+                     }
+                   "LiftingMonad"))
+             (KindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 37
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 84 20 84 21
+                      , SrcSpan "tests/examples/DerivingVia.hs" 84 27 84 29
+                      , SrcSpan "tests/examples/DerivingVia.hs" 84 36 84 37
+                      ]
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 21 84 26
+                     , srcInfoPoints = []
+                     }
+                   "trans")
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 84 30 84 36
+                           , srcInfoPoints = []
+                           }
+                         "MTrans")))))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 38
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 85 9 85 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 3 85 8
+                          , srcInfoPoints = []
+                          }
+                        "proof"
+                    ]
+                    (TyInfix
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 38
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 19
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 12 85 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 18 85 19
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                       (UnpromotedName
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
+                               , srcInfoPoints = []
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 20 85 22
+                                  , srcInfoPoints = []
+                                  }
+                                ":-")))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 38
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 23 85 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 38
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 85 29 85 30
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 85 37 85 38
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 37
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 85 30 85 35
+                                        , srcInfoPoints = []
+                                        }
+                                      "trans"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 85 36 85 37
+                                        , srcInfoPoints = []
+                                        }
+                                      "m")))))))
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 1 91 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 87 1 87 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 87 44 87 49
+                , SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 43
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 10 87 22
+                           , srcInfoPoints = []
+                           }
+                         "LiftingMonad")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 43
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 87 23 87 24
+                         , SrcSpan "tests/examples/DerivingVia.hs" 87 33 87 35
+                         , SrcSpan "tests/examples/DerivingVia.hs" 87 42 87 43
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 32
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 24 87 30
+                                 , srcInfoPoints = []
+                                 }
+                               "StateT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 31 87 32
+                              , srcInfoPoints = []
+                              }
+                            "s")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 87 36 87 42
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 41
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 88 9 88 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 3 88 8
+                          , srcInfoPoints = []
+                          }
+                        "proof"
+                    ]
+                    (TyInfix
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 41
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 19
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 12 88 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 18 88 19
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                       (UnpromotedName
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
+                               , srcInfoPoints = []
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 20 88 22
+                                  , srcInfoPoints = []
+                                  }
+                                ":-")))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 41
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 23 88 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 41
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 88 29 88 30
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 88 40 88 41
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 40
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 88 30 88 36
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 88 30 88 36
+                                              , srcInfoPoints = []
+                                              }
+                                            "StateT")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 88 37 88 38
+                                           , srcInfoPoints = []
+                                           }
+                                         "s")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 88 39 88 40
+                                        , srcInfoPoints = []
+                                        }
+                                      "m")))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 3 89 8
+                            , srcInfoPoints = []
+                            }
+                          "proof"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 89 9 89 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 19
+                            , srcInfoPoints = []
+                            }
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 89 11 89 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sub")))
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 89 15 89 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "Dict")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 1 95 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 91 1 91 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 91 57 91 62
+                , SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 56
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 21
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 91 19 91 21 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 91 10 91 16
+                                    , srcInfoPoints = []
+                                    }
+                                  "Monoid")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 17 91 18
+                                 , srcInfoPoints = []
+                                 }
+                               "w"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 56
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 22 91 34
+                           , srcInfoPoints = []
+                           }
+                         "LiftingMonad")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 56
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 91 35 91 36
+                         , SrcSpan "tests/examples/DerivingVia.hs" 91 46 91 48
+                         , SrcSpan "tests/examples/DerivingVia.hs" 91 55 91 56
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 45
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 36 91 43
+                                 , srcInfoPoints = []
+                                 }
+                               "WriterT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 44 91 45
+                              , srcInfoPoints = []
+                              }
+                            "w")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 91 49 91 55
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 42
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 92 9 92 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 3 92 8
+                          , srcInfoPoints = []
+                          }
+                        "proof"
+                    ]
+                    (TyInfix
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 42
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 19
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 12 92 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 18 92 19
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                       (UnpromotedName
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
+                               , srcInfoPoints = []
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 20 92 22
+                                  , srcInfoPoints = []
+                                  }
+                                ":-")))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 42
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 23 92 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 42
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 92 29 92 30
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 92 41 92 42
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 41
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 39
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 92 30 92 37
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 92 30 92 37
+                                              , srcInfoPoints = []
+                                              }
+                                            "WriterT")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 92 38 92 39
+                                           , srcInfoPoints = []
+                                           }
+                                         "w")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 92 40 92 41
+                                        , srcInfoPoints = []
+                                        }
+                                      "m")))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 3 93 8
+                            , srcInfoPoints = []
+                            }
+                          "proof"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 93 9 93 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 19
+                            , srcInfoPoints = []
+                            }
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 93 11 93 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sub")))
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 93 15 93 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "Dict")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 1 99 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 95 1 95 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 95 102 95 107
+                , SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 101
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 54
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 10 95 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 29 95 30
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 50 95 51
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 52 95 54
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 29
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 95 11 95 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "LiftingMonad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 24 95 29
+                                  , srcInfoPoints = []
+                                  }
+                                "trans")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 50
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 95 31 95 43
+                                     , srcInfoPoints = []
+                                     }
+                                   "LiftingMonad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 95 44 95 50
+                                  , srcInfoPoints = []
+                                  }
+                                "trans'")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 101
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 55 95 67
+                           , srcInfoPoints = []
+                           }
+                         "LiftingMonad")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 101
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 95 68 95 69
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 91 95 93
+                         , SrcSpan "tests/examples/DerivingVia.hs" 95 100 95 101
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 90
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 83
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 95 69 95 77
+                                    , srcInfoPoints = []
+                                    }
+                                  "ComposeT")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 78 95 83
+                                 , srcInfoPoints = []
+                                 }
+                               "trans")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 95 84 95 90
+                              , srcInfoPoints = []
+                              }
+                            "trans'")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 95 94 95 100
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 64
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 96 9 96 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 3 96 8
+                          , srcInfoPoints = []
+                          }
+                        "proof"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 64
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 96 12 96 18
+                             , SrcSpan "tests/examples/DerivingVia.hs" 96 20 96 21
+                             ]
+                         }
+                       (Just
+                          [ UnkindedVar
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 96 19 96 20
+                                   , srcInfoPoints = []
+                                   }
+                                 "m")
+                          ])
+                       Nothing
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 64
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 29
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 22 96 27
+                                        , srcInfoPoints = []
+                                        }
+                                      "Monad")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 28 96 29
+                                     , srcInfoPoints = []
+                                     }
+                                   "m")))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 30 96 32
+                                     , srcInfoPoints = []
+                                     }
+                                   ":-")))
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 64
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 33 96 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "Monad")))
+                             (TyParen
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 64
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 96 39 96 40
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 96 63 96 64
+                                      ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 63
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 61
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 96 40 96 54
+                                           , srcInfoPoints = []
+                                           }
+                                         (TyCon
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 96 40 96 48
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 96 40 96 48
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          96
+                                                          40
+                                                          96
+                                                          48
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "ComposeT")))
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 96 49 96 54
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 96 49 96 54
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "trans")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 96 55 96 61
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 96 55 96 61
+                                              , srcInfoPoints = []
+                                              }
+                                            "trans'")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 96 62 96 63
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 69
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 3 97 8
+                            , srcInfoPoints = []
+                            }
+                          "proof"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 69
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 97 9 97 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 69
+                            , srcInfoPoints = []
+                            }
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 11 97 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sub")))
+                          (Paren
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 69
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 97 15 97 16
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 97 68 97 69
+                                   ]
+                               }
+                             (InfixApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 68
+                                  , srcInfoPoints = []
+                                  }
+                                (InfixApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 48
+                                     , srcInfoPoints = []
+                                     }
+                                   (Con
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 16 97 20
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 16 97 20
+                                              , srcInfoPoints = []
+                                              }
+                                            "Dict")))
+                                   (QVarOp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 21 97 23
+                                           , srcInfoPoints = []
+                                           }
+                                         (Symbol
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 21 97 23
+                                              , srcInfoPoints = []
+                                              }
+                                            "\\\\")))
+                                   (App
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 48
+                                        , srcInfoPoints = []
+                                        }
+                                      (App
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 24 97 36
+                                           , srcInfoPoints = []
+                                           }
+                                         (Var
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 24 97 29
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 24 97 29
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          97
+                                                          24
+                                                          97
+                                                          29
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "proof")))
+                                         (TypeApp
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 30 97 36
+                                              , srcInfoPoints =
+                                                  [ SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 97 30 97 31
+                                                  ]
+                                              }
+                                            (TyVar
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 31 97 36
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          97
+                                                          31
+                                                          97
+                                                          36
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "trans"))))
+                                      (TypeApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 48
+                                           , srcInfoPoints =
+                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 37 97 38
+                                               ]
+                                           }
+                                         (TyParen
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 38 97 48
+                                              , srcInfoPoints =
+                                                  [ SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 97 38 97 39
+                                                  , SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 97 47 97 48
+                                                  ]
+                                              }
+                                            (TyApp
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 39 97 47
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (TyVar
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          97
+                                                          39
+                                                          97
+                                                          45
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Ident
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             97
+                                                             39
+                                                             97
+                                                             45
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     "trans'"))
+                                               (TyVar
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          97
+                                                          46
+                                                          97
+                                                          47
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Ident
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             97
+                                                             46
+                                                             97
+                                                             47
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     "m")))))))
+                                (QVarOp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 49 97 51
+                                           , srcInfoPoints = []
+                                           }
+                                         "\\\\")))
+                                (App
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 68
+                                     , srcInfoPoints = []
+                                     }
+                                   (App
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 65
+                                        , srcInfoPoints = []
+                                        }
+                                      (Var
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 52 97 57
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 52 97 57
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 52 97 57
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "proof")))
+                                      (TypeApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 65
+                                           , srcInfoPoints =
+                                               [ SrcSpan "tests/examples/DerivingVia.hs" 97 58 97 59
+                                               ]
+                                           }
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 59 97 65
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 97 59 97 65
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "trans'"))))
+                                   (TypeApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 68
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 97 66 97 67 ]
+                                        }
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 97 67 97 68
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 97 67 97 68
+                                              , srcInfoPoints = []
+                                              }
+                                            "m"))))))))
+                    Nothing)
+             ])
+      , GDataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 109 34
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 99 15 99 17
+                , SrcSpan "tests/examples/DerivingVia.hs" 99 25 99 30
+                , SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 3
+                ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 1 99 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 9 99 14
+                  , srcInfoPoints = []
+                  }
+                "Stack"))
+          (Just
+             (TyCon
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
+                  , srcInfoPoints = []
+                  }
+                (UnQual
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 99 18 99 24
+                        , srcInfoPoints = []
+                        }
+                      "MTrans"))))
+          [ GadtDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 71
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 100 9 100 11 ]
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 100 3 100 8
+                   , srcInfoPoints = []
+                   }
+                 "Stack")
+              Nothing
+              Nothing
+              Nothing
+              (TyFun
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 71
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 100 59 100 61 ]
+                   }
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 58
+                      , srcInfoPoints = []
+                      }
+                    (TyApp
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 56
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 23
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 12 100 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "ReaderT")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 20 100 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "Int"))))
+                       (TyParen
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 56
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 100 24 100 25
+                                , SrcSpan "tests/examples/DerivingVia.hs" 100 55 100 56
+                                ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 55
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 36
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 25 100 31
+                                           , srcInfoPoints = []
+                                           }
+                                         "StateT")))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 32 100 36
+                                           , srcInfoPoints = []
+                                           }
+                                         "Bool"))))
+                             (TyParen
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 55
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 100 37 100 38
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 100 54 100 55
+                                      ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 54
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 52
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 38 100 45
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 100 38 100 45
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 100 38 100 45
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "WriterT")))
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 46 100 52
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 100 46 100 52
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 100 46 100 52
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "String"))))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 100 53 100 54
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))))))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 57 100 58
+                            , srcInfoPoints = []
+                            }
+                          "a")))
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 71
+                      , srcInfoPoints = []
+                      }
+                    (TyApp
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 69
+                         , srcInfoPoints = []
+                         }
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 100 62 100 67
+                                  , srcInfoPoints = []
+                                  }
+                                "Stack")))
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 100 68 100 69
+                               , srcInfoPoints = []
+                               }
+                             "m")))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 100 70 100 71
+                            , srcInfoPoints = []
+                            }
+                          "a"))))
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 101 3 108 6
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 101 3 101 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 102 5 102 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 103 5 103 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 104 5 104 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 105 5 105 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 106 5 106 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 107 5 107 6
+                    , SrcSpan "tests/examples/DerivingVia.hs" 108 5 108 6
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 101 12 101 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 102 7 102 14
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 103 7 103 18
+                             , srcInfoPoints = []
+                             }
+                           "Applicative")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 104 7 104 12
+                             , srcInfoPoints = []
+                             }
+                           "Monad")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHApp
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 22
+                       , srcInfoPoints = []
+                       }
+                     (IHCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 105 7 105 18
+                                , srcInfoPoints = []
+                                }
+                              "MonadReader")))
+                     (TyCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 105 19 105 22
+                                , srcInfoPoints = []
+                                }
+                              "Int"))))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHApp
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 22
+                       , srcInfoPoints = []
+                       }
+                     (IHCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 106 7 106 17
+                                , srcInfoPoints = []
+                                }
+                              "MonadState")))
+                     (TyCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 106 18 106 22
+                                , srcInfoPoints = []
+                                }
+                              "Bool"))))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHApp
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 25
+                       , srcInfoPoints = []
+                       }
+                     (IHCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 107 7 107 18
+                                , srcInfoPoints = []
+                                }
+                              "MonadWriter")))
+                     (TyCon
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 107 19 107 25
+                                , srcInfoPoints = []
+                                }
+                              "String"))))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 34
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 109 3 109 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 109 12 109 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 109 23 109 24
+                    , SrcSpan "tests/examples/DerivingVia.hs" 109 33 109 34
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 110 8 110 11
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 74
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 110 12 110 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 110 73 110 74
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 73
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 24
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 13 110 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "ReaderT")))
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 21 110 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "Int"))))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 35
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 25 110 26
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 34 110 35
+                                      ]
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 26 110 34
+                                     , srcInfoPoints = []
+                                     }
+                                   "ComposeT")))
+                          (TyInfix
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 73
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 47
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 36 110 42
+                                           , srcInfoPoints = []
+                                           }
+                                         "StateT")))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 43 110 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "Bool"))))
+                             (UnpromotedName
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58
+                                      ]
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 58
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 110 48 110 49
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 110 57 110 58
+                                         ]
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 49 110 57
+                                        , srcInfoPoints = []
+                                        }
+                                      "ComposeT")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 73
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 59 110 66
+                                           , srcInfoPoints = []
+                                           }
+                                         "WriterT")))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 110 67 110 73
+                                           , srcInfoPoints = []
+                                           }
+                                         "String")))))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 109 13 109 23
+                             , srcInfoPoints = []
+                             }
+                           "MonadTrans")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 109 25 109 33
+                             , srcInfoPoints = []
+                             }
+                           "MFunctor")))
+              ]
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 112 1 113 57
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 112 1 112 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 112 34 112 39
+                , SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 33
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 112 7 112 15
+                     , srcInfoPoints = []
+                     }
+                   "MFunctor"))
+             (KindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 33
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 112 16 112 17
+                      , SrcSpan "tests/examples/DerivingVia.hs" 112 23 112 25
+                      , SrcSpan "tests/examples/DerivingVia.hs" 112 32 112 33
+                      ]
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 112 17 112 22
+                     , srcInfoPoints = []
+                     }
+                   "trans")
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 112 26 112 32
+                           , srcInfoPoints = []
+                           }
+                         "MTrans")))))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 57
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 113 9 113 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 113 3 113 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 57
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 22
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 113 20 113 22
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 12 113 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 113 12 113 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 18 113 19
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 57
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 113 33 113 35 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 32
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 23 113 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 31 113 32
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 24 113 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 26 113 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 29 113 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 57
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 113 36 113 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 113 56 113 57
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 56
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 44
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 37 113 42
+                                           , srcInfoPoints = []
+                                           }
+                                         "trans"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 43 113 44
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 45 113 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 56
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 48 113 53
+                                           , srcInfoPoints = []
+                                           }
+                                         "trans"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 113 54 113 56
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 115 1 119 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 115 1 115 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 115 41 115 46
+                , SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 40
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 115 10 115 18
+                           , srcInfoPoints = []
+                           }
+                         "MFunctor")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 115 19 115 20
+                         , SrcSpan "tests/examples/DerivingVia.hs" 115 30 115 32
+                         , SrcSpan "tests/examples/DerivingVia.hs" 115 39 115 40
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 29
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 115 20 115 27
+                                 , srcInfoPoints = []
+                                 }
+                               "ReaderT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 115 28 115 29
+                              , srcInfoPoints = []
+                              }
+                            "r")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 115 33 115 39
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 65
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 116 9 116 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 116 3 116 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 65
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 22
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 116 20 116 22
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 12 116 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 12 116 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 18 116 19
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 65
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 116 33 116 35 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 32
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 23 116 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 31 116 32
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 24 116 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 26 116 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 29 116 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 65
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 116 36 116 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 116 64 116 65
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 64
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 48
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 46
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 37 116 44
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 37 116 44
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 116 37 116 44
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "ReaderT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 45 116 46
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 45 116 46
+                                              , srcInfoPoints = []
+                                              }
+                                            "r")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 47 116 48
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 49 116 51
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 64
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 61
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 52 116 59
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 52 116 59
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 116 52 116 59
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "ReaderT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 60 116 61
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 116 60 116 61
+                                              , srcInfoPoints = []
+                                              }
+                                            "r")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 116 62 116 64
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 117 3 117 8
+                             , srcInfoPoints = []
+                             }
+                           "hoist")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 117 9 117 12
+                                 , srcInfoPoints = []
+                                 }
+                               "nat")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 46
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 117 13 117 14 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 46
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 15 117 22
+                                         , srcInfoPoints = []
+                                         }
+                                       "ReaderT")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 23 117 24
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 46
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 25 117 29
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 117 25 117 29
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 117 25 117 29
+                                               , srcInfoPoints = []
+                                               }
+                                             "fmap")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 30 117 33
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 117 30 117 33
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 117 30 117 33
+                                               , srcInfoPoints = []
+                                               }
+                                             "nat"))))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 34 117 35
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 117 34 117 35
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 117 36 117 46
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 117 36 117 46
+                                            , srcInfoPoints = []
+                                            }
+                                          "runReaderT"))))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 119 1 123 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 119 1 119 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 119 40 119 45
+                , SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 39
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 119 10 119 18
+                           , srcInfoPoints = []
+                           }
+                         "MFunctor")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 39
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 119 19 119 20
+                         , SrcSpan "tests/examples/DerivingVia.hs" 119 29 119 31
+                         , SrcSpan "tests/examples/DerivingVia.hs" 119 38 119 39
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 28
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 119 20 119 26
+                                 , srcInfoPoints = []
+                                 }
+                               "StateT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 119 27 119 28
+                              , srcInfoPoints = []
+                              }
+                            "s")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 119 32 119 38
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 63
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 120 9 120 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 120 3 120 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 63
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 22
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 120 20 120 22
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 12 120 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 12 120 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 18 120 19
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 63
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 120 33 120 35 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 32
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 23 120 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 31 120 32
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 24 120 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 26 120 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 29 120 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 63
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 120 36 120 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 120 62 120 63
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 62
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 45
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 37 120 43
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 37 120 43
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 120 37 120 43
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "StateT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 44 120 45
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 44 120 45
+                                              , srcInfoPoints = []
+                                              }
+                                            "s")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 46 120 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 48 120 50
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 62
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 59
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 51 120 57
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 51 120 57
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 120 51 120 57
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "StateT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 58 120 59
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 120 58 120 59
+                                              , srcInfoPoints = []
+                                              }
+                                            "s")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 120 60 120 62
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 44
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 121 3 121 8
+                             , srcInfoPoints = []
+                             }
+                           "hoist")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 121 9 121 12
+                                 , srcInfoPoints = []
+                                 }
+                               "nat")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 44
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 121 13 121 14 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 44
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 15 121 21
+                                         , srcInfoPoints = []
+                                         }
+                                       "StateT")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 22 121 23
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 44
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 24 121 28
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 121 24 121 28
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 121 24 121 28
+                                               , srcInfoPoints = []
+                                               }
+                                             "fmap")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 29 121 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 121 29 121 32
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 121 29 121 32
+                                               , srcInfoPoints = []
+                                               }
+                                             "nat"))))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 33 121 34
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 121 33 121 34
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 121 35 121 44
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 121 35 121 44
+                                            , srcInfoPoints = []
+                                            }
+                                          "runStateT"))))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 123 1 127 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 123 1 123 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 123 41 123 46
+                , SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 40
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 123 10 123 18
+                           , srcInfoPoints = []
+                           }
+                         "MFunctor")))
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 123 19 123 20
+                         , SrcSpan "tests/examples/DerivingVia.hs" 123 30 123 32
+                         , SrcSpan "tests/examples/DerivingVia.hs" 123 39 123 40
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 29
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 123 20 123 27
+                                 , srcInfoPoints = []
+                                 }
+                               "WriterT")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 123 28 123 29
+                              , srcInfoPoints = []
+                              }
+                            "w")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 123 33 123 39
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 65
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 124 9 124 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 124 3 124 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 65
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 22
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 124 20 124 22
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 12 124 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 12 124 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 18 124 19
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 65
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 124 33 124 35 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 32
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 23 124 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 31 124 32
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 24 124 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 26 124 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 29 124 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 65
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 124 36 124 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 124 64 124 65
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 64
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 48
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 46
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 37 124 44
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 37 124 44
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 124 37 124 44
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "WriterT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 45 124 46
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 45 124 46
+                                              , srcInfoPoints = []
+                                              }
+                                            "w")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 47 124 48
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 49 124 51
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 64
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 61
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 52 124 59
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 52 124 59
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 124 52 124 59
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "WriterT")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 60 124 61
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 124 60 124 61
+                                              , srcInfoPoints = []
+                                              }
+                                            "w")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 124 62 124 64
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 125 3 125 8
+                             , srcInfoPoints = []
+                             }
+                           "hoist")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 125 9 125 12
+                                 , srcInfoPoints = []
+                                 }
+                               "nat")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 41
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 125 13 125 14 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 41
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 15 125 22
+                                         , srcInfoPoints = []
+                                         }
+                                       "WriterT")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 23 125 24
+                                         , srcInfoPoints = []
+                                         }
+                                       ".")))
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 41
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 25 125 28
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 125 25 125 28
+                                            , srcInfoPoints = []
+                                            }
+                                          "nat")))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 29 125 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 125 29 125 30
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 125 31 125 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 125 31 125 41
+                                            , srcInfoPoints = []
+                                            }
+                                          "runWriterT"))))))
+                        Nothing
+                    ])
+             ])
+      , InfixDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 20
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 127 8 127 9 ]
+            }
+          (AssocRight
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 127 1 127 7
+               , srcInfoPoints = []
+               })
+          (Just 9)
+          [ ConOp
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19
+                    , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20
+                    ]
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 20
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 127 10 127 11
+                       , SrcSpan "tests/examples/DerivingVia.hs" 127 11 127 19
+                       , SrcSpan "tests/examples/DerivingVia.hs" 127 19 127 20
+                       ]
+                   }
+                 "ComposeT")
+          ]
+      , GDataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 128 1 130 49
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 128 18 128 20
+                , SrcSpan "tests/examples/DerivingVia.hs" 128 48 128 53
+                , SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 3
+                ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 128 1 128 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 128 9 128 17
+                  , srcInfoPoints = []
+                  }
+                "ComposeT"))
+          (Just
+             (TyFun
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 47
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 128 28 128 30 ]
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 128 21 128 27
+                           , srcInfoPoints = []
+                           }
+                         "MTrans")))
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 47
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 128 38 128 40 ]
+                     }
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 128 31 128 37
+                              , srcInfoPoints = []
+                              }
+                            "MTrans")))
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 128 41 128 47
+                              , srcInfoPoints = []
+                              }
+                            "MTrans"))))))
+          [ GadtDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 63
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 12 129 14
+                    , SrcSpan "tests/examples/DerivingVia.hs" 129 15 129 16
+                    , SrcSpan "tests/examples/DerivingVia.hs" 129 42 129 43
+                    , SrcSpan "tests/examples/DerivingVia.hs" 129 44 129 46
+                    ]
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 129 3 129 11
+                   , srcInfoPoints = []
+                   }
+                 "ComposeT")
+              Nothing
+              Nothing
+              (Just
+                 [ FieldDecl
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 41
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 129 29 129 31 ]
+                       }
+                     [ Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 129 17 129 28
+                           , srcInfoPoints = []
+                           }
+                         "getComposeT"
+                     ]
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 41
+                          , srcInfoPoints = []
+                          }
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 39
+                             , srcInfoPoints = []
+                             }
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 129 32 129 33
+                                   , srcInfoPoints = []
+                                   }
+                                 "f"))
+                           (TyParen
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 39
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 129 34 129 35
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 129 38 129 39
+                                    ]
+                                }
+                              (TyApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 38
+                                   , srcInfoPoints = []
+                                   }
+                                 (TyVar
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 129 35 129 36
+                                         , srcInfoPoints = []
+                                         }
+                                       "g"))
+                                 (TyVar
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 129 37 129 38
+                                         , srcInfoPoints = []
+                                         }
+                                       "m")))))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 129 40 129 41
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+              (TyApp
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 63
+                   , srcInfoPoints = []
+                   }
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 61
+                      , srcInfoPoints = []
+                      }
+                    (TyApp
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 59
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 57
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 129 47 129 55
+                                     , srcInfoPoints = []
+                                     }
+                                   "ComposeT")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 129 56 129 57
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 129 58 129 59
+                               , srcInfoPoints = []
+                               }
+                             "g")))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 129 60 129 61
+                            , srcInfoPoints = []
+                            }
+                          "m")))
+                 (TyVar
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 129 62 129 63
+                         , srcInfoPoints = []
+                         }
+                       "a")))
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 49
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 130 3 130 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 20 130 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 28 130 29
+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 41 130 42
+                    , SrcSpan "tests/examples/DerivingVia.hs" 130 48 130 49
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 130 12 130 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 130 21 130 28
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 130 30 130 41
+                             , srcInfoPoints = []
+                             }
+                           "Applicative")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 130 43 130 48
+                             , srcInfoPoints = []
+                             }
+                           "Monad")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 132 1 137 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 132 1 132 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 132 84 132 89
+                , SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 83
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 57
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 10 132 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 23 132 24
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 37 132 38
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 53 132 54
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 55 132 57
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 132 11 132 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "MonadTrans")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 22 132 23
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 37
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 132 25 132 35
+                                     , srcInfoPoints = []
+                                     }
+                                   "MonadTrans")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 36 132 37
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 53
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 132 39 132 51
+                                     , srcInfoPoints = []
+                                     }
+                                   "LiftingMonad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 132 52 132 53
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 83
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 132 58 132 68
+                           , srcInfoPoints = []
+                           }
+                         "MonadTrans")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 83
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 132 69 132 70
+                         , SrcSpan "tests/examples/DerivingVia.hs" 132 82 132 83
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 82
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 80
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 132 70 132 78
+                                    , srcInfoPoints = []
+                                    }
+                                  "ComposeT")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 132 79 132 80
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 132 81 132 82
+                              , srcInfoPoints = []
+                              }
+                            "g"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 51
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 133 8 133 10 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 133 3 133 7
+                          , srcInfoPoints = []
+                          }
+                        "lift"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 51
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 133 11 133 17
+                             , SrcSpan "tests/examples/DerivingVia.hs" 133 19 133 20
+                             ]
+                         }
+                       (Just
+                          [ UnkindedVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 133 18 133 19
+                                   , srcInfoPoints = []
+                                   }
+                                 "m")
+                          ])
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 31
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 133 29 133 31
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 21 133 26
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 133 21 133 26
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 27 133 28
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 51
+                            , srcInfoPoints = []
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 32 133 33
+                                  , srcInfoPoints = []
+                                  }
+                                "m"))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 34 133 36
+                                     , srcInfoPoints = []
+                                     }
+                                   "~>")))
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 51
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 49
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 37 133 45
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 133 37 133 45
+                                              , srcInfoPoints = []
+                                              }
+                                            "ComposeT")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 133 46 133 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "f")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 133 48 133 49
+                                        , srcInfoPoints = []
+                                        }
+                                      "g")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 133 50 133 51
+                                     , srcInfoPoints = []
+                                     }
+                                   "m"))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 134 3 135 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 134 3 134 7
+                            , srcInfoPoints = []
+                            }
+                          "lift"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 134 8 135 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 134 8 134 9 ]
+                         }
+                       (InfixApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 134 10 135 19
+                            , srcInfoPoints = []
+                            }
+                          (InfixApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 32
+                               , srcInfoPoints = []
+                               }
+                             (Con
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 10 134 18
+                                        , srcInfoPoints = []
+                                        }
+                                      "ComposeT")))
+                             (QVarOp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
+                                     , srcInfoPoints = []
+                                     }
+                                   (Symbol
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 19 134 20
+                                        , srcInfoPoints = []
+                                        }
+                                      ".")))
+                             (InfixApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 32
+                                  , srcInfoPoints = []
+                                  }
+                                (Var
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 134 21 134 25
+                                           , srcInfoPoints = []
+                                           }
+                                         "lift")))
+                                (QVarOp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 134 26 134 27
+                                           , srcInfoPoints = []
+                                           }
+                                         ".")))
+                                (Var
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 134 28 134 32
+                                           , srcInfoPoints = []
+                                           }
+                                         "lift")))))
+                          (QVarOp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 5 135 7
+                                     , srcInfoPoints = []
+                                     }
+                                   "\\\\")))
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 19
+                               , srcInfoPoints = []
+                               }
+                             (App
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Var
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 135 8 135 13
+                                           , srcInfoPoints = []
+                                           }
+                                         "proof")))
+                                (TypeApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 16
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 135 14 135 15 ]
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 135 15 135 16
+                                           , srcInfoPoints = []
+                                           }
+                                         "g"))))
+                             (TypeApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 19
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 135 17 135 18 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 135 18 135 19
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 137 1 146 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 137 1 137 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 137 78 137 83
+                , SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 77
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 53
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 10 137 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 21 137 22
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 33 137 34
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 49 137 50
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 51 137 53
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 137 11 137 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "MFunctor")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 20 137 21
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 33
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 137 23 137 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "MFunctor")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 32 137 33
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 49
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 137 35 137 47
+                                     , srcInfoPoints = []
+                                     }
+                                   "LiftingMonad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 137 48 137 49
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 77
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 137 54 137 62
+                           , srcInfoPoints = []
+                           }
+                         "MFunctor")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 77
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 137 63 137 64
+                         , SrcSpan "tests/examples/DerivingVia.hs" 137 76 137 77
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 76
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 74
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 137 64 137 72
+                                    , srcInfoPoints = []
+                                    }
+                                  "ComposeT")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 137 73 137 74
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 137 75 137 76
+                              , srcInfoPoints = []
+                              }
+                            "g"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 84
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 138 9 138 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 138 3 138 8
+                          , srcInfoPoints = []
+                          }
+                        "hoist"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 84
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 138 12 138 18
+                             , SrcSpan "tests/examples/DerivingVia.hs" 138 23 138 24
+                             ]
+                         }
+                       (Just
+                          [ UnkindedVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 138 19 138 20
+                                   , srcInfoPoints = []
+                                   }
+                                 "m")
+                          , UnkindedVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 138 21 138 23
+                                   , srcInfoPoints = []
+                                   }
+                                 "m'")
+                          ])
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 35
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 138 33 138 35
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 25 138 30
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 25 138 30
+                                              , srcInfoPoints = []
+                                              }
+                                            "Monad")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 31 138 32
+                                           , srcInfoPoints = []
+                                           }
+                                         "m"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 84
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 138 46 138 48 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 45
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 36 138 37
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 44 138 45
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 44
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 37 138 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 39 138 41
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 42 138 44
+                                        , srcInfoPoints = []
+                                        }
+                                      "m'"))))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 84
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 138 49 138 50
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 138 83 138 84
+                                   ]
+                               }
+                             (TyInfix
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 83
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 64
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 62
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 50 138 60
+                                           , srcInfoPoints = []
+                                           }
+                                         (TyCon
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 50 138 58
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 138 50 138 58
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          138
+                                                          50
+                                                          138
+                                                          58
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "ComposeT")))
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 59 138 60
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 138 59 138 60
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "f")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 61 138 62
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 61 138 62
+                                              , srcInfoPoints = []
+                                              }
+                                            "g")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 63 138 64
+                                           , srcInfoPoints = []
+                                           }
+                                         "m")))
+                                (UnpromotedName
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
+                                        , srcInfoPoints = []
+                                        }
+                                      (Symbol
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 65 138 67
+                                           , srcInfoPoints = []
+                                           }
+                                         "~>")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 83
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 80
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 68 138 78
+                                           , srcInfoPoints = []
+                                           }
+                                         (TyCon
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 68 138 76
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 138 68 138 76
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          138
+                                                          68
+                                                          138
+                                                          76
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "ComposeT")))
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 77 138 78
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 138 77 138 78
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "f")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 79 138 80
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 138 79 138 80
+                                              , srcInfoPoints = []
+                                              }
+                                            "g")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 138 81 138 83
+                                           , srcInfoPoints = []
+                                           }
+                                         "m'"))))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 139 3 140 19
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 139 3 139 8
+                             , srcInfoPoints = []
+                             }
+                           "hoist")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 139 9 139 10
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 139 11 140 19
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 139 11 139 12 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 139 13 140 19
+                                , srcInfoPoints = []
+                                }
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 53
+                                   , srcInfoPoints = []
+                                   }
+                                 (Con
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 13 139 21
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 13 139 21
+                                            , srcInfoPoints = []
+                                            }
+                                          "ComposeT")))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 22 139 23
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 22 139 23
+                                            , srcInfoPoints = []
+                                            }
+                                          ".")))
+                                 (InfixApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 53
+                                      , srcInfoPoints = []
+                                      }
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 24 139 39
+                                         , srcInfoPoints = []
+                                         }
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 24 139 29
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 139 24 139 29
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        139
+                                                        24
+                                                        139
+                                                        29
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "hoist")))
+                                       (Paren
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 30 139 39
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 139 30 139 31
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 139 38 139 39
+                                                ]
+                                            }
+                                          (App
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 139 31 139 38
+                                               , srcInfoPoints = []
+                                               }
+                                             (Var
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        139
+                                                        31
+                                                        139
+                                                        36
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (UnQual
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           139
+                                                           31
+                                                           139
+                                                           36
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   (Ident
+                                                      SrcSpanInfo
+                                                        { srcInfoSpan =
+                                                            SrcSpan
+                                                              "tests/examples/DerivingVia.hs"
+                                                              139
+                                                              31
+                                                              139
+                                                              36
+                                                        , srcInfoPoints = []
+                                                        }
+                                                      "hoist")))
+                                             (Var
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        139
+                                                        37
+                                                        139
+                                                        38
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (UnQual
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           139
+                                                           37
+                                                           139
+                                                           38
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   (Ident
+                                                      SrcSpanInfo
+                                                        { srcInfoSpan =
+                                                            SrcSpan
+                                                              "tests/examples/DerivingVia.hs"
+                                                              139
+                                                              37
+                                                              139
+                                                              38
+                                                        , srcInfoPoints = []
+                                                        }
+                                                      "f"))))))
+                                    (QVarOp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 40 139 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 40 139 41
+                                            , srcInfoPoints = []
+                                            }
+                                          (Symbol
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 139 40 139 41
+                                               , srcInfoPoints = []
+                                               }
+                                             ".")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 139 42 139 53
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 139 42 139 53
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 139 42 139 53
+                                               , srcInfoPoints = []
+                                               }
+                                             "getComposeT")))))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 5 140 7
+                                         , srcInfoPoints = []
+                                         }
+                                       "\\\\")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 19
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 16
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 140 8 140 13
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 140 8 140 13
+                                               , srcInfoPoints = []
+                                               }
+                                             "proof")))
+                                    (TypeApp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 16
+                                         , srcInfoPoints =
+                                             [ SrcSpan "tests/examples/DerivingVia.hs" 140 14 140 15
+                                             ]
+                                         }
+                                       (TyVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 140 15 140 16
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 140 15 140 16
+                                               , srcInfoPoints = []
+                                               }
+                                             "g"))))
+                                 (TypeApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 19
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 140 17 140 18 ]
+                                      }
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 140 18 140 19
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 140 18 140 19
+                                            , srcInfoPoints = []
+                                            }
+                                          "m"))))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 146 1 150 22
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 146 13 146 14 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 146 1 146 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 12
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 146 9 146 10
+                     , srcInfoPoints = []
+                     }
+                   "X"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 146 11 146 12
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 23
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 146 15 146 16
+                      , srcInfoPoints = []
+                      }
+                    "X")
+                 [ TyTuple
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 23
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 146 17 146 18
+                           , SrcSpan "tests/examples/DerivingVia.hs" 146 19 146 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 146 22 146 23
+                           ]
+                       }
+                     Boxed
+                     [ TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 146 18 146 19
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     , TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 146 21 146 22
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     ]
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 31
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 147 3 147 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 147 12 147 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 147 22 147 23
+                    , SrcSpan "tests/examples/DerivingVia.hs" 147 30 147 31
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 148 8 148 11
+                      , srcInfoPoints = []
+                      }
+                    (TyTuple
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 30
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 148 12 148 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 148 22 148 23
+                             , SrcSpan "tests/examples/DerivingVia.hs" 148 29 148 30
+                             ]
+                         }
+                       Boxed
+                       [ TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 22
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 148 13 148 20
+                                      , srcInfoPoints = []
+                                      }
+                                    "Product")))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 21 148 22
+                                   , srcInfoPoints = []
+                                   }
+                                 "a"))
+                       , TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 29
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 148 24 148 27
+                                      , srcInfoPoints = []
+                                      }
+                                    "Sum")))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 148 28 148 29
+                                   , srcInfoPoints = []
+                                   }
+                                 "a"))
+                       ])))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 147 13 147 22
+                             , srcInfoPoints = []
+                             }
+                           "Semigroup")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 147 24 147 30
+                             , srcInfoPoints = []
+                             }
+                           "Monoid")))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 22
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 150 3 150 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 150 12 150 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 150 17 150 18
+                    , SrcSpan "tests/examples/DerivingVia.hs" 150 21 150 22
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 151 8 151 11
+                      , srcInfoPoints = []
+                      }
+                    (TyTuple
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 151 12 151 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 151 14 151 15
+                             , SrcSpan "tests/examples/DerivingVia.hs" 151 17 151 18
+                             ]
+                         }
+                       Boxed
+                       [ TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 151 13 151 14
+                                , srcInfoPoints = []
+                                }
+                              "a")
+                       , TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 151 16 151 17
+                                , srcInfoPoints = []
+                                }
+                              "a")
+                       ])))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 150 13 150 17
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 150 19 150 21
+                             , srcInfoPoints = []
+                             }
+                           "Eq")))
+              ]
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 157 1 158 18
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 157 1 157 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 157 11 157 16
+                , SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 10
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 157 7 157 8
+                     , srcInfoPoints = []
+                     }
+                   "C"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 157 9 157 10
+                     , srcInfoPoints = []
+                     }
+                   "f")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 18
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 158 5 158 7 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 3 158 4
+                          , srcInfoPoints = []
+                          }
+                        "c"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 158 12 158 14 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 11
+                            , srcInfoPoints = []
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 158 8 158 9
+                                  , srcInfoPoints = []
+                                  }
+                                "f"))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 158 10 158 11
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 158 15 158 18
+                                  , srcInfoPoints = []
+                                  }
+                                "Int")))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 26
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 160 16 160 17 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 160 1 160 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 15
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 13
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 160 9 160 11
+                        , srcInfoPoints = []
+                        }
+                      "X2"))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 160 12 160 13
+                        , srcInfoPoints = []
+                        }
+                      "f")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 160 14 160 15
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 26
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 160 18 160 20
+                      , srcInfoPoints = []
+                      }
+                    "X2")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 26
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 160 21 160 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 160 25 160 26
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 25
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 160 22 160 23
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 160 24 160 25
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          []
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 162 1 165 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 162 1 162 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 162 19 162 24
+                , SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 18
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 162 10 162 11
+                           , srcInfoPoints = []
+                           }
+                         "C")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 18
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 162 12 162 13
+                         , SrcSpan "tests/examples/DerivingVia.hs" 162 17 162 18
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 17
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 162 13 162 15
+                                 , srcInfoPoints = []
+                                 }
+                               "X2")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 162 16 162 17
+                              , srcInfoPoints = []
+                              }
+                            "f"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 14
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 163 3 163 4
+                            , srcInfoPoints = []
+                            }
+                          "c"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 14
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 163 5 163 6 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 14
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 163 7 163 12
+                                     , srcInfoPoints = []
+                                     }
+                                   "const")))
+                          (Lit
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14
+                               , srcInfoPoints = []
+                               }
+                             (Int
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 163 13 163 14
+                                  , srcInfoPoints = []
+                                  }
+                                0
+                                "0"))))
+                    Nothing)
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 35
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 165 1 165 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 165 22 165 30
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 165 10 165 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 165 14 165 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 165 20 165 21
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 20
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 165 15 165 17
+                                 , srcInfoPoints = []
+                                 }
+                               "X2")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 165 18 165 20
+                                 , srcInfoPoints = []
+                                 }
+                               "IO")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 35
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 165 31 165 32
+                           , srcInfoPoints = []
+                           }
+                         "C")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 165 33 165 35
+                           , srcInfoPoints = []
+                           }
+                         "IO")))))
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 171 14 171 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 171 1 171 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 171 9 171 11
+                     , srcInfoPoints = []
+                     }
+                   "P0"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 171 12 171 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 20
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 171 16 171 18
+                      , srcInfoPoints = []
+                      }
+                    "P0")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 171 19 171 20
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 171 33 171 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 171 47 171 50
+                      , srcInfoPoints = []
+                      }
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 171 51 171 52
+                            , srcInfoPoints = []
+                            }
+                          "a"))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 171 42 171 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 172 14 172 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 172 1 172 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 172 9 172 11
+                     , srcInfoPoints = []
+                     }
+                   "P1"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 172 12 172 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 22
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 172 16 172 18
+                      , srcInfoPoints = []
+                      }
+                    "P1")
+                 [ TyList
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 22
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 172 19 172 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 172 21 172 22
+                           ]
+                       }
+                     (TyVar
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 172 20 172 21
+                             , srcInfoPoints = []
+                             }
+                           "a"))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 172 33 172 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 172 47 172 50
+                      , srcInfoPoints = []
+                      }
+                    (TyList
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 54
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 172 51 172 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 172 53 172 54
+                             ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 172 52 172 53
+                               , srcInfoPoints = []
+                               }
+                             "a")))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 172 42 172 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 173 14 173 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 173 1 173 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 173 9 173 11
+                     , srcInfoPoints = []
+                     }
+                   "P2"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 173 12 173 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 25
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 173 16 173 18
+                      , srcInfoPoints = []
+                      }
+                    "P2")
+                 [ TyTuple
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 25
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 173 19 173 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 173 21 173 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 173 24 173 25
+                           ]
+                       }
+                     Boxed
+                     [ TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 173 20 173 21
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     , TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 173 23 173 24
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     ]
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 173 33 173 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 173 47 173 50
+                      , srcInfoPoints = []
+                      }
+                    (TyTuple
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 57
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 173 51 173 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 173 53 173 54
+                             , SrcSpan "tests/examples/DerivingVia.hs" 173 56 173 57
+                             ]
+                         }
+                       Boxed
+                       [ TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 173 52 173 53
+                                , srcInfoPoints = []
+                                }
+                              "a")
+                       , TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 173 55 173 56
+                                , srcInfoPoints = []
+                                }
+                              "a")
+                       ])))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 173 42 173 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 174 14 174 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 174 1 174 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 174 9 174 11
+                     , srcInfoPoints = []
+                     }
+                   "P3"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 174 12 174 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 28
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 174 16 174 18
+                      , srcInfoPoints = []
+                      }
+                    "P3")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 28
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 174 19 174 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 174 27 174 28
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 27
+                          , srcInfoPoints = []
+                          }
+                        (TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 174 20 174 25
+                                   , srcInfoPoints = []
+                                   }
+                                 "Maybe")))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 174 26 174 27
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 174 33 174 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 174 47 174 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 60
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 174 51 174 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 174 59 174 60
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 59
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 174 52 174 57
+                                     , srcInfoPoints = []
+                                     }
+                                   "First")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 174 58 174 59
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 174 42 174 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 175 14 175 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 175 1 175 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 175 9 175 11
+                     , srcInfoPoints = []
+                     }
+                   "P4"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 175 12 175 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 28
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 175 16 175 18
+                      , srcInfoPoints = []
+                      }
+                    "P4")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 28
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 175 19 175 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 175 27 175 28
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 27
+                          , srcInfoPoints = []
+                          }
+                        (TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 175 20 175 25
+                                   , srcInfoPoints = []
+                                   }
+                                 "Maybe")))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 175 26 175 27
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 175 33 175 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 175 47 175 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 62
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 175 51 175 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 175 61 175 62
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 61
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 175 52 175 57
+                                     , srcInfoPoints = []
+                                     }
+                                   "First")))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 175 58 175 59
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 175 60 175 61
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 175 42 175 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 176 14 176 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 176 1 176 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 176 9 176 11
+                     , srcInfoPoints = []
+                     }
+                   "P5"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 176 12 176 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 20
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 176 16 176 18
+                      , srcInfoPoints = []
+                      }
+                    "P5")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 176 19 176 20
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 176 33 176 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 176 47 176 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 65
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 176 51 176 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 176 64 176 65
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 64
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 176 52 176 60
+                                     , srcInfoPoints = []
+                                     }
+                                   "Identity")))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 176 61 176 62
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 176 63 176 64
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 176 42 176 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 177 14 177 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 177 1 177 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 177 9 177 11
+                     , srcInfoPoints = []
+                     }
+                   "P6"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 177 12 177 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 22
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 177 16 177 18
+                      , srcInfoPoints = []
+                      }
+                    "P6")
+                 [ TyList
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 22
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 177 19 177 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 177 21 177 22
+                           ]
+                       }
+                     (TyVar
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 177 20 177 21
+                             , srcInfoPoints = []
+                             }
+                           "a"))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 177 33 177 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 177 47 177 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 59
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 177 51 177 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 177 58 177 59
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 58
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
+                                   ]
+                               }
+                             (Special
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
+                                      ]
+                                  }
+                                (ListCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 54
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 177 52 177 53
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 177 53 177 54
+                                         ]
+                                     })))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 177 55 177 56
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 177 57 177 58
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 177 42 177 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 178 14 178 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 178 1 178 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 178 9 178 11
+                     , srcInfoPoints = []
+                     }
+                   "P7"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 178 12 178 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 25
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 178 16 178 18
+                      , srcInfoPoints = []
+                      }
+                    "P7")
+                 [ TyTuple
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 25
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 178 19 178 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 178 21 178 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 178 24 178 25
+                           ]
+                       }
+                     Boxed
+                     [ TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 178 20 178 21
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     , TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 178 23 178 24
+                              , srcInfoPoints = []
+                              }
+                            "a")
+                     ]
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 46
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 178 33 178 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 178 47 178 50
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 70
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 178 51 178 52
+                             , SrcSpan "tests/examples/DerivingVia.hs" 178 69 178 70
+                             ]
+                         }
+                       (TyInfix
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 69
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 178 52 178 60
+                                     , srcInfoPoints = []
+                                     }
+                                   "Identity")))
+                          (UnpromotedName
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 178 61 178 62
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyTuple
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 69
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 178 63 178 64
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 65 178 66
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 178 68 178 69
+                                   ]
+                               }
+                             Boxed
+                             [ TyVar
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 178 64 178 65
+                                      , srcInfoPoints = []
+                                      }
+                                    "a")
+                             , TyVar
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 178 67 178 68
+                                      , srcInfoPoints = []
+                                      }
+                                    "a")
+                             ])))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 178 42 178 46
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 49
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 179 14 179 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 179 1 179 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 13
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 179 9 179 11
+                     , srcInfoPoints = []
+                     }
+                   "P8"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 179 12 179 13
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 32
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 179 16 179 18
+                      , srcInfoPoints = []
+                      }
+                    "P8")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 32
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 179 19 179 20
+                           , SrcSpan "tests/examples/DerivingVia.hs" 179 31 179 32
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 31
+                          , srcInfoPoints = []
+                          }
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 29
+                             , srcInfoPoints = []
+                             }
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 179 20 179 26
+                                      , srcInfoPoints = []
+                                      }
+                                    "Either")))
+                           (TyCon
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
+                                    ]
+                                }
+                              (Special
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
+                                       ]
+                                   }
+                                 (UnitCon
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 29
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 179 27 179 28
+                                          , SrcSpan "tests/examples/DerivingVia.hs" 179 28 179 29
+                                          ]
+                                      }))))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 179 30 179 31
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 49
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 179 33 179 41 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 179 50 179 53
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 71
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 179 54 179 55
+                             , SrcSpan "tests/examples/DerivingVia.hs" 179 70 179 71
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 70
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 58
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 179 55 179 56
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 179 57 179 58
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 179 56 179 57
+                                     , srcInfoPoints = []
+                                     }
+                                   "$")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 70
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 179 59 179 60
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 179 69 179 70
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 69
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 179 60 179 66
+                                           , srcInfoPoints = []
+                                           }
+                                         "Either")))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69
+                                         ]
+                                     }
+                                   (Special
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 68
+                                            , SrcSpan "tests/examples/DerivingVia.hs" 179 68 179 69
+                                            ]
+                                        }
+                                      (UnitCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 179 67 179 69
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 179 67 179 68
+                                               , SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 179 68 179 69
+                                               ]
+                                           })))))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 179 42 179 49
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 73
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 181 15 181 16 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 181 1 181 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14
+               , srcInfoPoints = []
+               }
+             (DHInfix
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 14
+                  , srcInfoPoints = []
+                  }
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 181 9 181 10
+                        , srcInfoPoints = []
+                        }
+                      "f"))
+                (Symbol
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 181 11 181 12
+                     , srcInfoPoints = []
+                     }
+                   "$"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 181 13 181 14
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 26
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 181 17 181 20
+                      , srcInfoPoints = []
+                      }
+                    "APP")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 26
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 181 21 181 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 181 25 181 26
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 25
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 181 22 181 23
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 181 24 181 25
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 48
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 27 181 35 ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 181 36 181 43
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 44 181 48
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 73
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 181 49 181 57 ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 181 58 181 65
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 181 66 181 73
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 190 1 191 34
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 190 29 190 30 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 190 1 190 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 28
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 26
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 190 9 190 24
+                        , srcInfoPoints = []
+                        }
+                      "WrapApplicative"))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 190 25 190 26
+                        , srcInfoPoints = []
+                        }
+                      "f")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 190 27 190 28
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 55
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 190 31 190 49
+                      , srcInfoPoints = []
+                      }
+                    "WrappedApplicative")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 55
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 190 50 190 51
+                           , SrcSpan "tests/examples/DerivingVia.hs" 190 54 190 55
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 54
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 190 51 190 52
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 190 53 190 54
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 34
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 191 3 191 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 191 12 191 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 191 20 191 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 191 33 191 34
+                    ]
+                }
+              Nothing
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 191 13 191 20
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 191 22 191 33
+                             , srcInfoPoints = []
+                             }
+                           "Applicative")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 193 1 201 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 193 1 193 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 193 62 193 67
+                , SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 61
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 35
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 10 193 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 24 193 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 31 193 32
+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 33 193 35
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 193 11 193 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 23 193 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 31
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 193 26 193 29
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 193 30 193 31
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 61
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 193 36 193 39
+                           , srcInfoPoints = []
+                           }
+                         "Num")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 61
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 193 40 193 41
+                         , SrcSpan "tests/examples/DerivingVia.hs" 193 60 193 61
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 60
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 58
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 193 41 193 56
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 193 57 193 58
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 193 59 193 60
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 27
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 3 194 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 194 5 194 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 194 4 194 5
+                            , srcInfoPoints = []
+                            }
+                          "+"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 194 15 194 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 27
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 194 17 194 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "liftA2")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 27
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 194 24 194 25
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 194 26 194 27
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 194 25 194 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "+")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 27
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 3 195 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 195 5 195 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 195 4 195 5
+                            , srcInfoPoints = []
+                            }
+                          "*"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 195 15 195 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 27
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 195 17 195 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "liftA2")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 27
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 195 24 195 25
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 195 26 195 27
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 195 25 195 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "*")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 28
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 196 3 196 9
+                            , srcInfoPoints = []
+                            }
+                          "negate"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 28
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 196 15 196 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 28
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 196 17 196 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 196 22 196 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "negate")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 35
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 197 3 197 14
+                            , srcInfoPoints = []
+                            }
+                          "fromInteger"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 35
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 197 15 197 16 ]
+                         }
+                       (InfixApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 35
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 197 17 197 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (QVarOp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 197 22 197 23
+                                     , srcInfoPoints = []
+                                     }
+                                   ".")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 197 24 197 35
+                                     , srcInfoPoints = []
+                                     }
+                                   "fromInteger")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 25
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 198 3 198 6
+                            , srcInfoPoints = []
+                            }
+                          "abs"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 25
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 198 15 198 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 25
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 198 17 198 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 198 22 198 25
+                                     , srcInfoPoints = []
+                                     }
+                                   "abs")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 28
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 199 3 199 9
+                            , srcInfoPoints = []
+                            }
+                          "signum"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 28
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 199 15 199 16 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 28
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 199 17 199 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 199 22 199 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "signum")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 201 1 205 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 201 1 201 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 201 76 201 81
+                , SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 75
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 42
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 10 201 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 24 201 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 38 201 39
+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 40 201 42
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 201 11 201 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 23 201 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 38
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 201 26 201 36
+                                     , srcInfoPoints = []
+                                     }
+                                   "Fractional")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 201 37 201 38
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 75
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 201 43 201 53
+                           , srcInfoPoints = []
+                           }
+                         "Fractional")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 75
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 201 54 201 55
+                         , SrcSpan "tests/examples/DerivingVia.hs" 201 74 201 75
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 74
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 72
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 201 55 201 70
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 201 71 201 72
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 201 73 201 74
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 28
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 202 3 202 8
+                            , srcInfoPoints = []
+                            }
+                          "recip"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 28
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 202 16 202 17 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 28
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 202 18 202 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 202 23 202 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "recip")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 37
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 203 3 203 15
+                            , srcInfoPoints = []
+                            }
+                          "fromRational"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 37
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 203 16 203 17 ]
+                         }
+                       (InfixApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 37
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 203 18 203 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (QVarOp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 203 23 203 24
+                                     , srcInfoPoints = []
+                                     }
+                                   ".")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 203 25 203 37
+                                     , srcInfoPoints = []
+                                     }
+                                   "fromRational")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 205 1 221 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 205 1 205 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 205 72 205 77
+                , SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 71
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 10 205 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 24 205 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 36 205 37
+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 38 205 40
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 205 11 205 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 23 205 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 36
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 205 26 205 34
+                                     , srcInfoPoints = []
+                                     }
+                                   "Floating")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 205 35 205 36
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 71
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 205 41 205 49
+                           , srcInfoPoints = []
+                           }
+                         "Floating")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 71
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 205 50 205 51
+                         , SrcSpan "tests/examples/DerivingVia.hs" 205 70 205 71
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 70
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 68
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 205 51 205 66
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 205 67 205 68
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 205 69 205 70
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 206 3 206 5
+                            , srcInfoPoints = []
+                            }
+                          "pi"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 206 9 206 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 18
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 206 11 206 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 206 16 206 18
+                                     , srcInfoPoints = []
+                                     }
+                                   "pi")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 207 3 207 7
+                            , srcInfoPoints = []
+                            }
+                          "sqrt"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 207 9 207 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 207 11 207 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 207 16 207 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "sqrt")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 208 3 208 6
+                            , srcInfoPoints = []
+                            }
+                          "exp"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 208 9 208 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 19
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 208 11 208 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 208 16 208 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "exp")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 209 3 209 6
+                            , srcInfoPoints = []
+                            }
+                          "log"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 209 9 209 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 19
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 209 11 209 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 209 16 209 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "log")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 210 3 210 6
+                            , srcInfoPoints = []
+                            }
+                          "sin"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 210 9 210 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 19
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 210 11 210 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 210 16 210 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "sin")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 19
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 211 3 211 6
+                            , srcInfoPoints = []
+                            }
+                          "cos"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 19
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 211 9 211 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 19
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 211 11 211 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 211 16 211 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "cos")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 212 3 212 7
+                            , srcInfoPoints = []
+                            }
+                          "asin"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 212 9 212 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 212 11 212 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 212 16 212 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "asin")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 213 3 213 7
+                            , srcInfoPoints = []
+                            }
+                          "atan"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 213 9 213 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 213 11 213 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 213 16 213 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "atan")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 214 3 214 7
+                            , srcInfoPoints = []
+                            }
+                          "acos"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 214 9 214 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 214 11 214 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 214 16 214 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "acos")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 215 3 215 7
+                            , srcInfoPoints = []
+                            }
+                          "sinh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 215 9 215 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 215 11 215 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 215 16 215 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "sinh")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 216 3 216 7
+                            , srcInfoPoints = []
+                            }
+                          "cosh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 216 9 216 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 20
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 216 11 216 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 216 16 216 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "cosh")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 217 3 217 8
+                            , srcInfoPoints = []
+                            }
+                          "asinh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 217 9 217 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 217 11 217 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 217 16 217 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "asinh")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 218 3 218 8
+                            , srcInfoPoints = []
+                            }
+                          "atanh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 218 9 218 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 218 11 218 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 218 16 218 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "atanh")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 219 3 219 8
+                            , srcInfoPoints = []
+                            }
+                          "acosh"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 219 9 219 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 219 11 219 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "fmap")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 219 16 219 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "acosh")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 221 1 224 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 221 1 221 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 221 74 221 79
+                , SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 73
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 41
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 10 221 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 24 221 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 37 221 38
+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 39 221 41
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 221 11 221 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 23 221 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 37
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 221 26 221 35
+                                     , srcInfoPoints = []
+                                     }
+                                   "Semigroup")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 221 36 221 37
+                                  , srcInfoPoints = []
+                                  }
+                                "s")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 73
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 221 42 221 51
+                           , srcInfoPoints = []
+                           }
+                         "Semigroup")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 73
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 221 52 221 53
+                         , SrcSpan "tests/examples/DerivingVia.hs" 221 72 221 73
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 72
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 70
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 221 53 221 68
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 221 69 221 70
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 221 71 221 72
+                              , srcInfoPoints = []
+                              }
+                            "s"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 7
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 3 222 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6
+                             , SrcSpan "tests/examples/DerivingVia.hs" 222 6 222 7
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 222 4 222 6
+                            , srcInfoPoints = []
+                            }
+                          "<>"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 222 8 222 9 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 222 10 222 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "liftA2")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 222 17 222 18
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 222 20 222 21
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 222 18 222 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "<>")))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 224 1 230 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 224 1 224 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 224 68 224 73
+                , SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 67
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 38
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 10 224 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 24 224 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 34 224 35
+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 36 224 38
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 224 11 224 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 23 224 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 34
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 224 26 224 32
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monoid")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 224 33 224 34
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 67
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 224 39 224 45
+                           , srcInfoPoints = []
+                           }
+                         "Monoid")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 67
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 224 46 224 47
+                         , SrcSpan "tests/examples/DerivingVia.hs" 224 66 224 67
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 66
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 64
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 224 47 224 62
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrapApplicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 224 63 224 64
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 224 65 224 66
+                              , srcInfoPoints = []
+                              }
+                            "m"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 23
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 225 3 225 9
+                            , srcInfoPoints = []
+                            }
+                          "mempty"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 23
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 225 10 225 11 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 23
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 225 12 225 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 225 17 225 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "mempty")))))
+                    Nothing)
+             ])
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 230 1 231 22
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 230 1 230 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 230 17 230 22
+                , SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 16
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 230 7 230 14
+                     , srcInfoPoints = []
+                     }
+                   "Pointed"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 230 15 230 16
+                     , srcInfoPoints = []
+                     }
+                   "p")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 22
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 231 11 231 13 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 231 3 231 10
+                          , srcInfoPoints = []
+                          }
+                        "pointed"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 22
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 231 16 231 18 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 231 14 231 15
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 22
+                            , srcInfoPoints = []
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 231 19 231 20
+                                  , srcInfoPoints = []
+                                  }
+                                "p"))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 231 21 231 22
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 233 1 234 36
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 233 23 233 24 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 233 1 233 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 22
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 20
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 233 9 233 18
+                        , srcInfoPoints = []
+                        }
+                      "WrapMonad"))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 233 19 233 20
+                        , srcInfoPoints = []
+                        }
+                      "f")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 233 21 233 22
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 43
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 233 25 233 37
+                      , srcInfoPoints = []
+                      }
+                    "WrappedMonad")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 43
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 233 38 233 39
+                           , SrcSpan "tests/examples/DerivingVia.hs" 233 42 233 43
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 42
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 233 39 233 40
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 233 41 233 42
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 36
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 234 3 234 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 234 20 234 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 234 28 234 29
+                    , SrcSpan "tests/examples/DerivingVia.hs" 234 35 234 36
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 234 12 234 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 234 21 234 28
+                             , srcInfoPoints = []
+                             }
+                           "Pointed")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 234 30 234 35
+                             , srcInfoPoints = []
+                             }
+                           "Monad")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 236 1 239 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 236 1 236 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 236 56 236 61
+                , SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 55
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 33
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 10 236 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 18 236 19
+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 29 236 30
+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 31 236 33
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 18
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 236 11 236 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 17 236 18
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 29
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 236 20 236 27
+                                     , srcInfoPoints = []
+                                     }
+                                   "Pointed")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 236 28 236 29
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 55
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 236 34 236 41
+                           , srcInfoPoints = []
+                           }
+                         "Functor")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 55
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 236 42 236 43
+                         , SrcSpan "tests/examples/DerivingVia.hs" 236 54 236 55
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 54
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 236 43 236 52
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapMonad")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 236 53 236 54
+                              , srcInfoPoints = []
+                              }
+                            "m"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 15
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 237 3 237 7
+                            , srcInfoPoints = []
+                            }
+                          "fmap"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 15
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 237 8 237 9 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 237 10 237 15
+                                  , srcInfoPoints = []
+                                  }
+                                "liftM"))))
+                    Nothing)
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 239 1 244 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 239 1 239 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 239 60 239 65
+                , SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 59
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 33
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 10 239 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 18 239 19
+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 29 239 30
+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 31 239 33
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 18
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 239 11 239 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monad")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 17 239 18
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 29
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 239 20 239 27
+                                     , srcInfoPoints = []
+                                     }
+                                   "Pointed")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 239 28 239 29
+                                  , srcInfoPoints = []
+                                  }
+                                "m")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 59
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 239 34 239 45
+                           , srcInfoPoints = []
+                           }
+                         "Applicative")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 59
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 239 46 239 47
+                         , SrcSpan "tests/examples/DerivingVia.hs" 239 58 239 59
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 58
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 239 47 239 56
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapMonad")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 239 57 239 58
+                              , srcInfoPoints = []
+                              }
+                            "m"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 240 3 240 7
+                            , srcInfoPoints = []
+                            }
+                          "pure"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 240 9 240 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 240 11 240 18
+                                  , srcInfoPoints = []
+                                  }
+                                "pointed"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 13
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 8
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 3 241 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7
+                             , SrcSpan "tests/examples/DerivingVia.hs" 241 7 241 8
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 241 4 241 7
+                            , srcInfoPoints = []
+                            }
+                          "<*>"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 13
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 241 9 241 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 241 11 241 13
+                                  , srcInfoPoints = []
+                                  }
+                                "ap"))))
+                    Nothing)
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 244 1 247 58
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 244 15 244 16 ]
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 244 1 244 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 14
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 244 6 244 12
+                     , srcInfoPoints = []
+                     }
+                   "Sorted"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 244 13 244 14
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 29
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 244 17 244 23
+                      , srcInfoPoints = []
+                      }
+                    "Sorted")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 244 24 244 25
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 , TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 244 26 244 27
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 , TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 244 28 244 29
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 34
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 245 3 245 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 245 12 245 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 245 20 245 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 245 33 245 34
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 246 5 246 8
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 246 9 246 10
+                             , SrcSpan "tests/examples/DerivingVia.hs" 246 26 246 27
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 26
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 246 10 246 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrapMonad")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 246 20 246 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sorted")))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 245 13 245 20
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 245 22 245 33
+                             , srcInfoPoints = []
+                             }
+                           "Applicative")))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 58
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 247 3 247 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 12 247 13
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 16 247 17
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 28 247 29
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 38 247 39
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 49 247 50
+                    , SrcSpan "tests/examples/DerivingVia.hs" 247 57 247 58
+                    ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 248 5 248 8
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 35
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 248 9 248 10
+                             , SrcSpan "tests/examples/DerivingVia.hs" 248 34 248 35
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 34
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 32
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 248 10 248 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "WrapApplicative")))
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 248 26 248 32
+                                        , srcInfoPoints = []
+                                        }
+                                      "Sorted"))))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 248 33 248 34
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 13 247 16
+                             , srcInfoPoints = []
+                             }
+                           "Num")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 18 247 28
+                             , srcInfoPoints = []
+                             }
+                           "Fractional")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 30 247 38
+                             , srcInfoPoints = []
+                             }
+                           "Floating")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 40 247 49
+                             , srcInfoPoints = []
+                             }
+                           "Semigroup")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 247 51 247 57
+                             , srcInfoPoints = []
+                             }
+                           "Monoid")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 251 1 258 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 251 1 251 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 251 23 251 28
+                , SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 22
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 251 10 251 15
+                           , srcInfoPoints = []
+                           }
+                         "Monad")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 251 16 251 22
+                           , srcInfoPoints = []
+                           }
+                         "Sorted")))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 51
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 252 9 252 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 252 3 252 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 252 4 252 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 252 7 252 8
+                              ]
+                          }
+                        ">>="
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 51
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 252 21 252 23 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 20
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 12 252 18
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sorted")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 19 252 20
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 51
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 252 40 252 42 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 39
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 252 24 252 25
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 252 38 252 39
+                                   ]
+                               }
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 38
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 252 27 252 29 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 25 252 26
+                                        , srcInfoPoints = []
+                                        }
+                                      "a"))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 252 30 252 36
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 252 30 252 36
+                                              , srcInfoPoints = []
+                                              }
+                                            "Sorted")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 252 37 252 38
+                                           , srcInfoPoints = []
+                                           }
+                                         "b")))))
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 51
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 252 43 252 49
+                                        , srcInfoPoints = []
+                                        }
+                                      "Sorted")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 252 50 252 51
+                                     , srcInfoPoints = []
+                                     }
+                                   "b"))))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
+                      }
+                    [ InfixMatch
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 253 3 256 26
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 253 40 253 45 ]
+                          }
+                        (PApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 15
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 253 3 253 9
+                                   , srcInfoPoints = []
+                                   }
+                                 "Sorted"))
+                           [ PVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 253 10 253 11
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")
+                           , PVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 253 12 253 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "b")
+                           , PVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 253 14 253 15
+                                    , srcInfoPoints = []
+                                    }
+                                  "c")
+                           ])
+                        (Symbol
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 253 16 253 19
+                             , srcInfoPoints = []
+                             }
+                           ">>=")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 253 20 253 21
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 39
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 253 22 253 23 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 39
+                                , srcInfoPoints = []
+                                }
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 36
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (Con
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 24 253 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 253 24 253 30
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 253 24 253 30
+                                               , srcInfoPoints = []
+                                               }
+                                             "Sorted")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 31 253 33
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 253 31 253 33
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 253 31 253 33
+                                               , srcInfoPoints = []
+                                               }
+                                             "a'"))))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 34 253 36
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 253 34 253 36
+                                            , srcInfoPoints = []
+                                            }
+                                          "b'"))))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 253 37 253 39
+                                         , srcInfoPoints = []
+                                         }
+                                       "c'")))))
+                        (Just
+                           (BDecls
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 254 5 256 26
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 0
+                                    ]
+                                }
+                              [ PatBind
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 26
+                                    , srcInfoPoints = []
+                                    }
+                                  (PApp
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 19
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 254 5 254 11
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 254 5 254 11
+                                             , srcInfoPoints = []
+                                             }
+                                           "Sorted"))
+                                     [ PVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 254 12 254 14
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 254 12 254 14
+                                              , srcInfoPoints = []
+                                              }
+                                            "a'")
+                                     , PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 254 15 254 16
+                                           , srcInfoPoints = []
+                                           }
+                                     , PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 254 18 254 19
+                                           , srcInfoPoints = []
+                                           }
+                                     ])
+                                  (UnGuardedRhs
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 26
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 254 21 254 22 ]
+                                       }
+                                     (App
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 254 23 254 26
+                                          , srcInfoPoints = []
+                                          }
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 254 23 254 24
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 254 23 254 24
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         254
+                                                         23
+                                                         254
+                                                         24
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "f")))
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 254 25 254 26
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 254 25 254 26
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         254
+                                                         25
+                                                         254
+                                                         26
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "a")))))
+                                  Nothing
+                              , PatBind
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 26
+                                    , srcInfoPoints = []
+                                    }
+                                  (PApp
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 19
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 255 5 255 11
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 255 5 255 11
+                                             , srcInfoPoints = []
+                                             }
+                                           "Sorted"))
+                                     [ PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 255 12 255 13
+                                           , srcInfoPoints = []
+                                           }
+                                     , PVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 255 15 255 17
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 255 15 255 17
+                                              , srcInfoPoints = []
+                                              }
+                                            "b'")
+                                     , PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 255 18 255 19
+                                           , srcInfoPoints = []
+                                           }
+                                     ])
+                                  (UnGuardedRhs
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 26
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 255 21 255 22 ]
+                                       }
+                                     (App
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 255 23 255 26
+                                          , srcInfoPoints = []
+                                          }
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 255 23 255 24
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 255 23 255 24
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         255
+                                                         23
+                                                         255
+                                                         24
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "f")))
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 255 25 255 26
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 255 25 255 26
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         255
+                                                         25
+                                                         255
+                                                         26
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "b")))))
+                                  Nothing
+                              , PatBind
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 26
+                                    , srcInfoPoints = []
+                                    }
+                                  (PApp
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 20
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 256 5 256 11
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 256 5 256 11
+                                             , srcInfoPoints = []
+                                             }
+                                           "Sorted"))
+                                     [ PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 256 12 256 13
+                                           , srcInfoPoints = []
+                                           }
+                                     , PWildCard
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 256 15 256 16
+                                           , srcInfoPoints = []
+                                           }
+                                     , PVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 256 18 256 20
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 256 18 256 20
+                                              , srcInfoPoints = []
+                                              }
+                                            "c'")
+                                     ])
+                                  (UnGuardedRhs
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 26
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 256 21 256 22 ]
+                                       }
+                                     (App
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 256 23 256 26
+                                          , srcInfoPoints = []
+                                          }
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 256 23 256 24
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 256 23 256 24
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         256
+                                                         23
+                                                         256
+                                                         24
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "f")))
+                                        (Var
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 256 25 256 26
+                                             , srcInfoPoints = []
+                                             }
+                                           (UnQual
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 256 25 256 26
+                                                , srcInfoPoints = []
+                                                }
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         256
+                                                         25
+                                                         256
+                                                         26
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "c")))))
+                                  Nothing
+                              ]))
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 258 1 265 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 258 1 258 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 258 25 258 30
+                , SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 24
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 258 10 258 17
+                           , srcInfoPoints = []
+                           }
+                         "Pointed")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 258 18 258 24
+                           , srcInfoPoints = []
+                           }
+                         "Sorted")))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 27
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 259 11 259 13 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 259 3 259 10
+                          , srcInfoPoints = []
+                          }
+                        "pointed"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 259 16 259 18 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 259 14 259 15
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 27
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 259 19 259 25
+                                     , srcInfoPoints = []
+                                     }
+                                   "Sorted")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 259 26 259 27
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 27
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 260 3 260 10
+                             , srcInfoPoints = []
+                             }
+                           "pointed")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 260 11 260 12
+                                 , srcInfoPoints = []
+                                 }
+                               "a")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 27
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 260 13 260 14 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 27
+                                , srcInfoPoints = []
+                                }
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 25
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 23
+                                      , srcInfoPoints = []
+                                      }
+                                    (Con
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 15 260 21
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 260 15 260 21
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 260 15 260 21
+                                               , srcInfoPoints = []
+                                               }
+                                             "Sorted")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 22 260 23
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 260 22 260 23
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 260 22 260 23
+                                               , srcInfoPoints = []
+                                               }
+                                             "a"))))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 24 260 25
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 260 24 260 25
+                                            , srcInfoPoints = []
+                                            }
+                                          "a"))))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 260 26 260 27
+                                         , srcInfoPoints = []
+                                         }
+                                       "a")))))
+                        Nothing
+                    ])
+             ])
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 265 1 266 22
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 265 1 265 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 265 16 265 21
+                , SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 15
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 265 7 265 13
+                     , srcInfoPoints = []
+                     }
+                   "IsZero"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 265 14 265 15
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 22
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 266 10 266 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 266 3 266 9
+                          , srcInfoPoints = []
+                          }
+                        "isZero"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 22
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 266 15 266 17 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 266 13 266 14
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 266 18 266 22
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 41
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 268 25 268 26 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 268 1 268 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 24
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 268 9 268 21
+                     , srcInfoPoints = []
+                     }
+                   "WrappedNumEq"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 268 23 268 24
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 41
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 268 27 268 39
+                      , srcInfoPoints = []
+                      }
+                    "WrappedNumEq")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 268 40 268 41
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          []
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 41
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 269 25 269 26 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 269 1 269 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 24
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 269 9 269 20
+                     , srcInfoPoints = []
+                     }
+                   "WrappedShow"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 269 23 269 24
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 41
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 269 27 269 38
+                      , srcInfoPoints = []
+                      }
+                    "WrappedShow")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 269 40 269 41
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          []
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 42
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 270 25 270 26 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 270 1 270 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 24
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 270 9 270 22
+                     , srcInfoPoints = []
+                     }
+                   "WrappedNumEq2"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 270 23 270 24
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 42
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 270 27 270 40
+                      , srcInfoPoints = []
+                      }
+                    "WrappedNumEq2")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 270 41 270 42
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          []
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 272 1 276 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 272 1 272 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 272 51 272 56
+                , SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 50
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 26
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 10 272 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 16 272 17
+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 22 272 23
+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 24 272 26
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 272 11 272 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 15 272 16
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 272 18 272 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 272 21 272 22
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 50
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 272 27 272 33
+                           , srcInfoPoints = []
+                           }
+                         "IsZero")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 50
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 272 34 272 35
+                         , SrcSpan "tests/examples/DerivingVia.hs" 272 49 272 50
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 49
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 272 35 272 47
+                                 , srcInfoPoints = []
+                                 }
+                               "WrappedNumEq")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 272 48 272 49
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 35
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 273 10 273 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 273 3 273 9
+                          , srcInfoPoints = []
+                          }
+                        "isZero"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 35
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 273 28 273 30 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 27
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 273 13 273 25
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedNumEq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 273 26 273 27
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 273 31 273 35
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 35
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 274 3 274 9
+                             , srcInfoPoints = []
+                             }
+                           "isZero")
+                        [ PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 26
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 274 10 274 11
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 274 25 274 26
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 25
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 274 11 274 23
+                                       , srcInfoPoints = []
+                                       }
+                                     "WrappedNumEq"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 274 24 274 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 35
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 274 27 274 28 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 35
+                                , srcInfoPoints = []
+                                }
+                              (Lit
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30
+                                   , srcInfoPoints = []
+                                   }
+                                 (Int
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 274 29 274 30
+                                      , srcInfoPoints = []
+                                      }
+                                    0
+                                    "0"))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 274 31 274 33
+                                         , srcInfoPoints = []
+                                         }
+                                       "==")))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 274 34 274 35
+                                         , srcInfoPoints = []
+                                         }
+                                       "a")))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 276 1 280 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 276 1 276 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 276 43 276 48
+                , SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 42
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 19
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 276 17 276 19 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 276 10 276 14
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 276 15 276 16
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 42
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 276 20 276 26
+                           , srcInfoPoints = []
+                           }
+                         "IsZero")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 42
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 276 27 276 28
+                         , SrcSpan "tests/examples/DerivingVia.hs" 276 41 276 42
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 41
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 276 28 276 39
+                                 , srcInfoPoints = []
+                                 }
+                               "WrappedShow")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 276 40 276 41
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 34
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 277 10 277 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 277 3 277 9
+                          , srcInfoPoints = []
+                          }
+                        "isZero"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 34
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 277 27 277 29 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 26
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 277 13 277 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedShow")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 277 25 277 26
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 277 30 277 34
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 278 3 278 9
+                             , srcInfoPoints = []
+                             }
+                           "isZero")
+                        [ PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 25
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 278 10 278 11
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 278 24 278 25
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 24
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 278 11 278 22
+                                       , srcInfoPoints = []
+                                       }
+                                     "WrappedShow"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 278 23 278 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 41
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 278 26 278 27 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 41
+                                , srcInfoPoints = []
+                                }
+                              (Lit
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31
+                                   , srcInfoPoints = []
+                                   }
+                                 (String
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 28 278 31
+                                      , srcInfoPoints = []
+                                      }
+                                    "0"
+                                    "0"))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 278 32 278 34
+                                         , srcInfoPoints = []
+                                         }
+                                       "==")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 41
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 278 35 278 39
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 278 35 278 39
+                                            , srcInfoPoints = []
+                                            }
+                                          "show")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 278 40 278 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 278 40 278 41
+                                            , srcInfoPoints = []
+                                            }
+                                          "a"))))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 280 1 284 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 280 1 280 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 280 52 280 57
+                , SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 51
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 26
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 10 280 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 16 280 17
+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 22 280 23
+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 24 280 26
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 280 11 280 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 15 280 16
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 280 18 280 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 280 21 280 22
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 51
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 280 27 280 33
+                           , srcInfoPoints = []
+                           }
+                         "IsZero")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 51
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 280 34 280 35
+                         , SrcSpan "tests/examples/DerivingVia.hs" 280 50 280 51
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 50
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 280 35 280 48
+                                 , srcInfoPoints = []
+                                 }
+                               "WrappedNumEq2")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 280 49 280 50
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 36
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 281 10 281 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 281 3 281 9
+                          , srcInfoPoints = []
+                          }
+                        "isZero"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 36
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 281 29 281 31 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 28
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 281 13 281 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedNumEq2")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 281 27 281 28
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 281 32 281 36
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 40
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 282 3 282 9
+                             , srcInfoPoints = []
+                             }
+                           "isZero")
+                        [ PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 27
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 282 10 282 11
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 282 26 282 27
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 26
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 282 11 282 24
+                                       , srcInfoPoints = []
+                                       }
+                                     "WrappedNumEq2"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 282 25 282 26
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 40
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 282 28 282 29 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 40
+                                , srcInfoPoints = []
+                                }
+                              (InfixApp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 35
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 30 282 31
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 282 30 282 31
+                                            , srcInfoPoints = []
+                                            }
+                                          "a")))
+                                 (QVarOp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 32 282 33
+                                         , srcInfoPoints = []
+                                         }
+                                       (Symbol
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 282 32 282 33
+                                            , srcInfoPoints = []
+                                            }
+                                          "+")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 34 282 35
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 282 34 282 35
+                                            , srcInfoPoints = []
+                                            }
+                                          "a"))))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 36 282 38
+                                         , srcInfoPoints = []
+                                         }
+                                       "==")))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 282 39 282 40
+                                         , srcInfoPoints = []
+                                         }
+                                       "a")))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 284 1 286 18
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 284 13 284 14 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 284 1 284 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 284 9 284 12
+                  , srcInfoPoints = []
+                  }
+                "INT"))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 22
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 284 15 284 18
+                      , srcInfoPoints = []
+                      }
+                    "INT")
+                 [ TyCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 284 19 284 22
+                             , srcInfoPoints = []
+                             }
+                           "Int"))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 24
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 285 3 285 11 ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 285 12 285 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 285 20 285 24
+                             , srcInfoPoints = []
+                             }
+                           "Show")))
+              ]
+          , Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 18
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 286 3 286 11 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 286 19 286 22
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 41
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 286 23 286 24
+                             , SrcSpan "tests/examples/DerivingVia.hs" 286 40 286 41
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 40
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 286 24 286 36
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedNumEq")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 286 37 286 40
+                                     , srcInfoPoints = []
+                                     }
+                                   "Int")))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 286 12 286 18
+                             , srcInfoPoints = []
+                             }
+                           "IsZero")))
+              ]
+          ]
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 41
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 288 14 288 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 288 1 288 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 288 9 288 13
+                  , srcInfoPoints = []
+                  }
+                "VOID"))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 25
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 288 16 288 20
+                      , srcInfoPoints = []
+                      }
+                    "VOID")
+                 [ TyCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 288 21 288 25
+                             , srcInfoPoints = []
+                             }
+                           "Void"))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 41
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 288 26 288 34 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 288 42 288 45
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 64
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 288 46 288 47
+                             , SrcSpan "tests/examples/DerivingVia.hs" 288 63 288 64
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 63
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 288 47 288 58
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedShow")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 288 59 288 63
+                                     , srcInfoPoints = []
+                                     }
+                                   "Void")))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 288 35 288 41
+                             , srcInfoPoints = []
+                             }
+                           "IsZero")))
+              ]
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 293 1 301 14
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 293 1 293 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 293 38 293 43
+                , SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 0
+                ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
+                  }
+                (TypeA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 21
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 293 19 293 21 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 293 7 293 16
+                                 , srcInfoPoints = []
+                                 }
+                               "Bifunctor")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 293 17 293 18
+                              , srcInfoPoints = []
+                              }
+                            "p"))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 37
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 293 22 293 35
+                     , srcInfoPoints = []
+                     }
+                   "Biapplicative"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 293 36 293 37
+                     , srcInfoPoints = []
+                     }
+                   "p")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 28
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 294 10 294 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 294 3 294 9
+                          , srcInfoPoints = []
+                          }
+                        "bipure"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 28
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 294 15 294 17 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 294 13 294 14
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 28
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 294 20 294 22 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 294 18 294 19
+                                  , srcInfoPoints = []
+                                  }
+                                "b"))
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 28
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 26
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 294 23 294 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "p"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 294 25 294 26
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 294 27 294 28
+                                     , srcInfoPoints = []
+                                     }
+                                   "b"))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 296 3 301 14
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 297 5 297 7 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 296 3 296 11
+                          , srcInfoPoints = []
+                          }
+                        "biliftA2"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 297 8 301 14
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 298 5 298 7 ]
+                         }
+                       (TyParen
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 23
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 297 8 297 9
+                                , SrcSpan "tests/examples/DerivingVia.hs" 297 22 297 23
+                                ]
+                            }
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 297 12 297 14 ]
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 297 9 297 10
+                                     , srcInfoPoints = []
+                                     }
+                                   "a"))
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 22
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 297 18 297 20 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 297 15 297 16
+                                        , srcInfoPoints = []
+                                        }
+                                      "b"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 297 21 297 22
+                                        , srcInfoPoints = []
+                                        }
+                                      "c")))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 298 8 301 14
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 299 5 299 7 ]
+                            }
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 24
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 298 8 298 9
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 298 23 298 24
+                                   ]
+                               }
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 23
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 298 12 298 14 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 298 9 298 11
+                                        , srcInfoPoints = []
+                                        }
+                                      "a'"))
+                                (TyFun
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 23
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 298 18 298 20 ]
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 298 15 298 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "b'"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 298 21 298 23
+                                           , srcInfoPoints = []
+                                           }
+                                         "c'")))))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 299 8 301 14
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 300 5 300 7 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 14
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 11
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 299 8 299 9
+                                           , srcInfoPoints = []
+                                           }
+                                         "p"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 299 10 299 11
+                                           , srcInfoPoints = []
+                                           }
+                                         "a")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 299 12 299 14
+                                        , srcInfoPoints = []
+                                        }
+                                      "a'")))
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 300 8 301 14
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 301 5 301 7 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 14
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 11
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 300 8 300 9
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 300 8 300 9
+                                              , srcInfoPoints = []
+                                              }
+                                            "p"))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 300 10 300 11
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 300 10 300 11
+                                              , srcInfoPoints = []
+                                              }
+                                            "b")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 300 12 300 14
+                                           , srcInfoPoints = []
+                                           }
+                                         "b'")))
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 14
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 11
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 301 8 301 9
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 301 8 301 9
+                                              , srcInfoPoints = []
+                                              }
+                                            "p"))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 301 10 301 11
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 301 10 301 11
+                                              , srcInfoPoints = []
+                                              }
+                                            "c")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 301 12 301 14
+                                           , srcInfoPoints = []
+                                           }
+                                         "c'"))))))))
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 303 1 309 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 303 1 303 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 303 28 303 33
+                , SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 27
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 303 10 303 23
+                           , srcInfoPoints = []
+                           }
+                         "Biapplicative")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
+                         , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
+                         , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
+                            , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
+                            , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
+                            ]
+                        }
+                      (TupleCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 27
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 303 24 303 25
+                               , SrcSpan "tests/examples/DerivingVia.hs" 303 25 303 26
+                               , SrcSpan "tests/examples/DerivingVia.hs" 303 26 303 27
+                               ]
+                           }
+                         Boxed
+                         2)))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 15
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 304 3 304 9
+                            , srcInfoPoints = []
+                            }
+                          "bipure"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 15
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 304 10 304 11 ]
+                         }
+                       (Con
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
+                                , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
+                                , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
+                                ]
+                            }
+                          (Special
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
+                                   ]
+                               }
+                             (TupleCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 15
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 304 12 304 13
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 13 304 14
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 304 14 304 15
+                                      ]
+                                  }
+                                Boxed
+                                2))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 306 3 307 22
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 306 3 306 11
+                             , srcInfoPoints = []
+                             }
+                           "biliftA2")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 306 12 306 13
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        , PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 306 14 306 16
+                                 , srcInfoPoints = []
+                                 }
+                               "f'")
+                        , PTuple
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 24
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 17 306 18
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 19 306 20
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 23 306 24
+                                  ]
+                              }
+                            Boxed
+                            [ PVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 18 306 19
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")
+                            , PVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 21 306 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "a'")
+                            ]
+                        , PTuple
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 32
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 306 25 306 26
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 27 306 28
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 306 31 306 32
+                                  ]
+                              }
+                            Boxed
+                            [ PVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 26 306 27
+                                     , srcInfoPoints = []
+                                     }
+                                   "b")
+                            , PVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 306 29 306 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "b'")
+                            ]
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 306 33 307 22
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 306 33 306 34 ]
+                             }
+                           (Tuple
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 22
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 307 5 307 6
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 11 307 12
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 307 21 307 22
+                                    ]
+                                }
+                              Boxed
+                              [ App
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 11
+                                    , srcInfoPoints = []
+                                    }
+                                  (App
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 9
+                                       , srcInfoPoints = []
+                                       }
+                                     (Var
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7
+                                          , srcInfoPoints = []
+                                          }
+                                        (UnQual
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 6 307 7
+                                             , srcInfoPoints = []
+                                             }
+                                           (Ident
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 307 6 307 7
+                                                , srcInfoPoints = []
+                                                }
+                                              "f")))
+                                     (Var
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9
+                                          , srcInfoPoints = []
+                                          }
+                                        (UnQual
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan "tests/examples/DerivingVia.hs" 307 8 307 9
+                                             , srcInfoPoints = []
+                                             }
+                                           (Ident
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 307 8 307 9
+                                                , srcInfoPoints = []
+                                                }
+                                              "a"))))
+                                  (Var
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 10 307 11
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 307 10 307 11
+                                             , srcInfoPoints = []
+                                             }
+                                           "b")))
+                              , App
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 21
+                                    , srcInfoPoints = []
+                                    }
+                                  (App
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 18
+                                       , srcInfoPoints = []
+                                       }
+                                     (Var
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 13 307 15
+                                          , srcInfoPoints = []
+                                          }
+                                        (UnQual
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 307 13 307 15
+                                             , srcInfoPoints = []
+                                             }
+                                           (Ident
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 307 13 307 15
+                                                , srcInfoPoints = []
+                                                }
+                                              "f'")))
+                                     (Var
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 16 307 18
+                                          , srcInfoPoints = []
+                                          }
+                                        (UnQual
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 307 16 307 18
+                                             , srcInfoPoints = []
+                                             }
+                                           (Ident
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 307 16 307 18
+                                                , srcInfoPoints = []
+                                                }
+                                              "a'"))))
+                                  (Var
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia.hs" 307 19 307 21
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 307 19 307 21
+                                             , srcInfoPoints = []
+                                             }
+                                           "b'")))
+                              ]))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 309 1 310 50
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 309 25 309 26 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 309 1 309 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 24
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 22
+                  , srcInfoPoints = []
+                  }
+                (DHApp
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 20
+                     , srcInfoPoints = []
+                     }
+                   (DHead
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 309 9 309 18
+                           , srcInfoPoints = []
+                           }
+                         "WrapBiapp"))
+                   (UnkindedVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 309 19 309 20
+                           , srcInfoPoints = []
+                           }
+                         "p")))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 309 21 309 22
+                        , srcInfoPoints = []
+                        }
+                      "a")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 309 23 309 24
+                     , srcInfoPoints = []
+                     }
+                   "b")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 43
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 309 27 309 35
+                      , srcInfoPoints = []
+                      }
+                    "WrapBiap")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 43
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 309 36 309 37
+                           , SrcSpan "tests/examples/DerivingVia.hs" 309 42 309 43
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 42
+                          , srcInfoPoints = []
+                          }
+                        (TyApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 40
+                             , srcInfoPoints = []
+                             }
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 309 37 309 38
+                                   , srcInfoPoints = []
+                                   }
+                                 "p"))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 309 39 309 40
+                                   , srcInfoPoints = []
+                                   }
+                                 "a")))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 309 41 309 42
+                                , srcInfoPoints = []
+                                }
+                              "b")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 50
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 310 3 310 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 20 310 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 30 310 31
+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 45 310 46
+                    , SrcSpan "tests/examples/DerivingVia.hs" 310 49 310 50
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 310 12 310 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 310 21 310 30
+                             , srcInfoPoints = []
+                             }
+                           "Bifunctor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 310 32 310 45
+                             , srcInfoPoints = []
+                             }
+                           "Biapplicative")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 310 47 310 49
+                             , srcInfoPoints = []
+                             }
+                           "Eq")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 312 1 321 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 312 1 312 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 312 67 312 72
+                , SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 66
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 44
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 10 312 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 26 312 27
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 33 312 34
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 40 312 41
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 42 312 44
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 312 11 312 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "Biapplicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 25 312 26
+                                  , srcInfoPoints = []
+                                  }
+                                "p")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 33
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 312 28 312 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 32 312 33
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 40
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 312 35 312 38
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 312 39 312 40
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 66
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 312 45 312 48
+                           , srcInfoPoints = []
+                           }
+                         "Num")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 66
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 312 49 312 50
+                         , SrcSpan "tests/examples/DerivingVia.hs" 312 65 312 66
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 65
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 63
+                           , srcInfoPoints = []
+                           }
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 61
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 312 50 312 59
+                                       , srcInfoPoints = []
+                                       }
+                                     "WrapBiapp")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 312 60 312 61
+                                    , srcInfoPoints = []
+                                    }
+                                  "p")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 312 62 312 63
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 312 64 312 65
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 25
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 3 313 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 313 5 313 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 313 4 313 5
+                            , srcInfoPoints = []
+                            }
+                          "+"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 25
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 313 7 313 8 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 25
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 21
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 313 9 313 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "biliftA2")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21
+                                      ]
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 21
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 313 18 313 19
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 313 20 313 21
+                                         ]
+                                     }
+                                   (Symbol
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 313 19 313 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "+"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 25
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 313 22 313 23
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 313 24 313 25
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 313 23 313 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "+")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 25
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 3 314 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 314 5 314 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 314 4 314 5
+                            , srcInfoPoints = []
+                            }
+                          "-"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 25
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 314 7 314 8 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 25
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 21
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 314 9 314 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "biliftA2")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21
+                                      ]
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 21
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 314 18 314 19
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 314 20 314 21
+                                         ]
+                                     }
+                                   (Symbol
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 314 19 314 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "*"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 25
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 314 22 314 23
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 314 24 314 25
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 314 23 314 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "*")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 25
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 3 315 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5
+                             , SrcSpan "tests/examples/DerivingVia.hs" 315 5 315 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 315 4 315 5
+                            , srcInfoPoints = []
+                            }
+                          "*"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 25
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 315 7 315 8 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 25
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 21
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 315 9 315 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "biliftA2")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21
+                                      ]
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 21
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 315 18 315 19
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
+                                         , SrcSpan "tests/examples/DerivingVia.hs" 315 20 315 21
+                                         ]
+                                     }
+                                   (Symbol
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 315 19 315 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "*"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 25
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 315 22 315 23
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 315 24 315 25
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 315 23 315 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "*")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 31
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 316 3 316 9
+                            , srcInfoPoints = []
+                            }
+                          "negate"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 31
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 316 10 316 11 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 31
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 24
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 316 12 316 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "bimap")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 316 18 316 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "negate"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 316 25 316 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "negate")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 22
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 317 3 317 6
+                            , srcInfoPoints = []
+                            }
+                          "abs"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 22
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 317 7 317 8 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 22
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 18
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 317 9 317 14
+                                        , srcInfoPoints = []
+                                        }
+                                      "bimap")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 317 15 317 18
+                                        , srcInfoPoints = []
+                                        }
+                                      "abs"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 317 19 317 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "abs")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 31
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 318 3 318 9
+                            , srcInfoPoints = []
+                            }
+                          "signum"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 31
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 318 10 318 11 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 31
+                            , srcInfoPoints = []
+                            }
+                          (App
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 24
+                               , srcInfoPoints = []
+                               }
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 318 12 318 17
+                                        , srcInfoPoints = []
+                                        }
+                                      "bimap")))
+                             (Var
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 318 18 318 24
+                                        , srcInfoPoints = []
+                                        }
+                                      "signum"))))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 318 25 318 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "signum")))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 55
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 319 3 319 14
+                             , srcInfoPoints = []
+                             }
+                           "fromInteger")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 319 15 319 16
+                                 , srcInfoPoints = []
+                                 }
+                               "n")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 55
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 319 17 319 18 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 55
+                                , srcInfoPoints = []
+                                }
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 19 319 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 319 19 319 30
+                                            , srcInfoPoints = []
+                                            }
+                                          "fromInteger")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 31 319 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 319 31 319 32
+                                            , srcInfoPoints = []
+                                            }
+                                          "n"))))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41
+                                       ]
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 41
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/DerivingVia.hs" 319 33 319 34
+                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
+                                          , SrcSpan "tests/examples/DerivingVia.hs" 319 40 319 41
+                                          ]
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 34 319 40
+                                         , srcInfoPoints = []
+                                         }
+                                       "bipure")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 55
+                                   , srcInfoPoints = []
+                                   }
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 42 319 53
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 319 42 319 53
+                                            , srcInfoPoints = []
+                                            }
+                                          "fromInteger")))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 319 54 319 55
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 319 54 319 55
+                                            , srcInfoPoints = []
+                                            }
+                                          "n"))))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 321 1 322 18
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 321 14 321 15 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 321 1 321 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 321 9 321 13
+                  , srcInfoPoints = []
+                  }
+                "INT2"))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 31
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 321 16 321 20
+                      , srcInfoPoints = []
+                      }
+                    "INT2")
+                 [ TyTuple
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 31
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 321 21 321 22
+                           , SrcSpan "tests/examples/DerivingVia.hs" 321 25 321 26
+                           , SrcSpan "tests/examples/DerivingVia.hs" 321 30 321 31
+                           ]
+                       }
+                     Boxed
+                     [ TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 321 22 321 25
+                                 , srcInfoPoints = []
+                                 }
+                               "Int"))
+                     , TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 321 27 321 30
+                                 , srcInfoPoints = []
+                                 }
+                               "Int"))
+                     ]
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 18
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 322 3 322 11 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 322 19 322 22
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 62
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 322 23 322 24
+                             , SrcSpan "tests/examples/DerivingVia.hs" 322 61 322 62
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 61
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 322 24 322 37
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrappedNumEq2")))
+                          (TyParen
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 61
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 322 38 322 39
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 322 60 322 61
+                                   ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 60
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 56
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 52
+                                        , srcInfoPoints = []
+                                        }
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 39 322 48
+                                           , srcInfoPoints = []
+                                           }
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 322 39 322 48
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 322 39 322 48
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "WrapBiapp")))
+                                      (TyCon
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 49 322 52
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 322 49 322 50
+                                               , SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 322 50 322 51
+                                               , SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 322 51 322 52
+                                               ]
+                                           }
+                                         (Special
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 322 49 322 52
+                                              , srcInfoPoints =
+                                                  [ SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 322 49 322 50
+                                                  , SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 322 50 322 51
+                                                  , SrcSpan
+                                                      "tests/examples/DerivingVia.hs" 322 51 322 52
+                                                  ]
+                                              }
+                                            (TupleCon
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 322 49 322 52
+                                                 , srcInfoPoints =
+                                                     [ SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         322
+                                                         49
+                                                         322
+                                                         50
+                                                     , SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         322
+                                                         50
+                                                         322
+                                                         51
+                                                     , SrcSpan
+                                                         "tests/examples/DerivingVia.hs"
+                                                         322
+                                                         51
+                                                         322
+                                                         52
+                                                     ]
+                                                 }
+                                               Boxed
+                                               2))))
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 53 322 56
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 322 53 322 56
+                                              , srcInfoPoints = []
+                                              }
+                                            "Int"))))
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 322 57 322 60
+                                           , srcInfoPoints = []
+                                           }
+                                         "Int")))))))))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 322 12 322 18
+                             , srcInfoPoints = []
+                             }
+                           "IsZero")))
+              ]
+          ]
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 327 1 328 20
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 327 1 327 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 327 32 327 37
+                , SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 0
+                ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
+                  }
+                (TypeA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 18
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 327 16 327 18 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 327 7 327 13
+                                 , srcInfoPoints = []
+                                 }
+                               "Monoid")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 327 14 327 15
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 31
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 327 19 327 29
+                     , srcInfoPoints = []
+                     }
+                   "MonoidNull"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 327 30 327 31
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 20
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 328 8 328 10 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 328 3 328 7
+                          , srcInfoPoints = []
+                          }
+                        "null"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 328 13 328 15 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 328 11 328 12
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 328 16 328 20
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 62
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 330 22 330 23 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 330 1 330 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 21
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 330 9 330 19
+                     , srcInfoPoints = []
+                     }
+                   "WrpMonNull"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 330 20 330 21
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 29
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 330 24 330 27
+                      , srcInfoPoints = []
+                      }
+                    "WRM")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 330 28 330 29
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 62
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 330 30 330 38
+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 39 330 40
+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 42 330 43
+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 53 330 54
+                    , SrcSpan "tests/examples/DerivingVia.hs" 330 61 330 62
+                    ]
+                }
+              Nothing
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 330 40 330 42
+                             , srcInfoPoints = []
+                             }
+                           "Eq")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 330 44 330 53
+                             , srcInfoPoints = []
+                             }
+                           "Semigroup")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 330 55 330 61
+                             , srcInfoPoints = []
+                             }
+                           "Monoid")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 332 1 336 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 332 1 332 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 332 56 332 61
+                , SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 55
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 29
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 10 332 11
+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 15 332 16
+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 25 332 26
+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 27 332 29
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 15
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 332 11 332 13
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 14 332 15
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 25
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 332 17 332 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "Monoid")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 332 24 332 25
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 55
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 332 30 332 40
+                           , srcInfoPoints = []
+                           }
+                         "MonoidNull")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 55
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 332 41 332 42
+                         , SrcSpan "tests/examples/DerivingVia.hs" 332 54 332 55
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 54
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 332 42 332 52
+                                 , srcInfoPoints = []
+                                 }
+                               "WrpMonNull")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 332 53 332 54
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 31
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 333 8 333 10 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 333 3 333 7
+                          , srcInfoPoints = []
+                          }
+                        "null"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 31
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 333 24 333 26 ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 23
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 333 11 333 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrpMonNull")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 333 22 333 23
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 333 27 333 31
+                                  , srcInfoPoints = []
+                                  }
+                                "Bool")))))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 334 3 334 7
+                            , srcInfoPoints = []
+                            }
+                          "null"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 334 8 334 9 ]
+                         }
+                       (RightSection
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 21
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 334 10 334 11
+                                , SrcSpan "tests/examples/DerivingVia.hs" 334 20 334 21
+                                ]
+                            }
+                          (QVarOp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
+                                  , srcInfoPoints = []
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 334 11 334 13
+                                     , srcInfoPoints = []
+                                     }
+                                   "==")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 334 14 334 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "mempty")))))
+                    Nothing)
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 54
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 336 1 336 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 336 31 336 39
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 336 10 336 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 30
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 336 14 336 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 336 29 336 30
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 29
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 336 15 336 25
+                                 , srcInfoPoints = []
+                                 }
+                               "WrpMonNull")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 336 26 336 29
+                                 , srcInfoPoints = []
+                                 }
+                               "Any")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 54
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 336 40 336 50
+                           , srcInfoPoints = []
+                           }
+                         "MonoidNull")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 336 51 336 54
+                           , srcInfoPoints = []
+                           }
+                         "Any")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 53
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 337 1 337 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 337 31 337 39
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 337 10 337 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
+                            , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
+                            ]
+                        }
+                      (UnitCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 16
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 14 337 15
+                               , SrcSpan "tests/examples/DerivingVia.hs" 337 15 337 16
+                               ]
+                           })))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 53
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 337 40 337 50
+                           , srcInfoPoints = []
+                           }
+                         "MonoidNull")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
+                         , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
+                            , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
+                            ]
+                        }
+                      (UnitCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 53
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 337 51 337 52
+                               , SrcSpan "tests/examples/DerivingVia.hs" 337 52 337 53
+                               ]
+                           })))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 59
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 338 1 338 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 338 31 338 39
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 338 10 338 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 338 14 338 22
+                           , srcInfoPoints = []
+                           }
+                         "Ordering")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 59
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 338 40 338 50
+                           , srcInfoPoints = []
+                           }
+                         "MonoidNull")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 338 51 338 59
+                           , srcInfoPoints = []
+                           }
+                         "Ordering")))))
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 345 1 348 26
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 345 1 345 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 345 17 345 22
+                , SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 16
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 345 7 345 14
+                     , srcInfoPoints = []
+                     }
+                   "Lattice"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 345 15 345 16
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 23
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 346 9 346 11 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 346 3 346 6
+                          , srcInfoPoints = []
+                          }
+                        "sup"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 23
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 346 14 346 16 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 346 12 346 13
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 23
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 346 19 346 21 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 346 17 346 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 346 22 346 23
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 26
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 347 9 347 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 347 3 347 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 347 4 347 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 347 7 347 8
+                              ]
+                          }
+                        ".>="
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 26
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 347 14 347 16 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 347 12 347 13
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 26
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 347 19 347 21 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 347 17 347 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 347 22 347 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "Bool"))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 26
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 348 9 348 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 7
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 348 3 348 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 348 4 348 6
+                              , SrcSpan "tests/examples/DerivingVia.hs" 348 6 348 7
+                              ]
+                          }
+                        ".>"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 26
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 348 14 348 16 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 348 12 348 13
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 26
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 348 19 348 21 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 348 17 348 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a"))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 348 22 348 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "Bool"))))))
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 350 1 351 29
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 350 19 350 20 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 350 1 350 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 18
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 350 9 350 16
+                     , srcInfoPoints = []
+                     }
+                   "WrapOrd"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 350 17 350 18
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 33
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 350 21 350 31
+                      , srcInfoPoints = []
+                      }
+                    "WrappedOrd")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 350 32 350 33
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 29
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 351 3 351 11
+                    , SrcSpan "tests/examples/DerivingVia.hs" 351 20 351 21
+                    , SrcSpan "tests/examples/DerivingVia.hs" 351 23 351 24
+                    , SrcSpan "tests/examples/DerivingVia.hs" 351 28 351 29
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 351 12 351 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 351 21 351 23
+                             , srcInfoPoints = []
+                             }
+                           "Eq")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 351 25 351 28
+                             , srcInfoPoints = []
+                             }
+                           "Ord")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 353 1 358 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 353 1 353 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 353 39 353 44
+                , SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 38
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 18
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 353 16 353 18 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 353 10 353 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "Ord")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 353 14 353 15
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 38
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 353 19 353 26
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 38
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 353 27 353 28
+                         , SrcSpan "tests/examples/DerivingVia.hs" 353 37 353 38
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 37
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 353 28 353 35
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapOrd")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 353 36 353 37
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 14
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 354 3 354 6
+                            , srcInfoPoints = []
+                            }
+                          "sup"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 14
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 354 9 354 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 354 11 354 14
+                                  , srcInfoPoints = []
+                                  }
+                                "max"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 15
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 8
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 3 355 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7
+                             , SrcSpan "tests/examples/DerivingVia.hs" 355 7 355 8
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 355 4 355 7
+                            , srcInfoPoints = []
+                            }
+                          ".>="))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 15
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 355 9 355 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12
+                                , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
+                                , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15
+                                ]
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 15
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 355 11 355 12
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 355 14 355 15
+                                   ]
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 355 12 355 14
+                                  , srcInfoPoints = []
+                                  }
+                                ">="))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 14
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 7
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 3 356 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6
+                             , SrcSpan "tests/examples/DerivingVia.hs" 356 6 356 7
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 356 4 356 6
+                            , srcInfoPoints = []
+                            }
+                          ".>"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 14
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 356 9 356 10 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12
+                                , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
+                                , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14
+                                ]
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 14
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 356 11 356 12
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 356 13 356 14
+                                   ]
+                               }
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 356 12 356 13
+                                  , srcInfoPoints = []
+                                  }
+                                ">"))))
+                    Nothing)
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 59
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 358 1 358 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 358 21 358 29
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 358 10 358 13
+                  , srcInfoPoints = []
+                  }
+                (TyList
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 17
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 14 358 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 358 16 358 17
+                         ]
+                     }
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 358 15 358 16
+                           , srcInfoPoints = []
+                           }
+                         "a")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 59
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 47
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 358 45 358 47 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 358 30 358 33
+                                    , srcInfoPoints = []
+                                    }
+                                  "Ord")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 358 34 358 35
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 59
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 358 48 358 55
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyList
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 59
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 358 56 358 57
+                         , SrcSpan "tests/examples/DerivingVia.hs" 358 58 358 59
+                         ]
+                     }
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 358 57 358 58
+                           , srcInfoPoints = []
+                           }
+                         "a")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 62
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 359 1 359 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 359 21 359 29
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 359 10 359 13
+                  , srcInfoPoints = []
+                  }
+                (TyTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 20
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 14 359 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 16 359 17
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 19 359 20
+                         ]
+                     }
+                   Boxed
+                   [ TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 15 359 16
+                            , srcInfoPoints = []
+                            }
+                          "a")
+                   , TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 18 359 19
+                            , srcInfoPoints = []
+                            }
+                          "b")
+                   ])))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 62
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 47
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 30 359 31
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 36 359 37
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 43 359 44
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 45 359 47
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 36
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 359 31 359 34
+                                     , srcInfoPoints = []
+                                     }
+                                   "Ord")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 35 359 36
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 43
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 359 38 359 41
+                                     , srcInfoPoints = []
+                                     }
+                                   "Ord")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 359 42 359 43
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 62
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 359 48 359 55
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 62
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 359 56 359 57
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 58 359 59
+                         , SrcSpan "tests/examples/DerivingVia.hs" 359 61 359 62
+                         ]
+                     }
+                   Boxed
+                   [ TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 57 359 58
+                            , srcInfoPoints = []
+                            }
+                          "a")
+                   , TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 359 60 359 61
+                            , srcInfoPoints = []
+                            }
+                          "b")
+                   ])))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 40
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 361 1 361 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 361 19 361 27
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 361 10 361 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 361 14 361 18
+                           , srcInfoPoints = []
+                           }
+                         "Bool")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 40
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 361 28 361 35
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 361 36 361 40
+                           , srcInfoPoints = []
+                           }
+                         "Bool")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 40
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 363 1 363 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 363 19 363 27
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 363 10 363 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 363 14 363 18
+                           , srcInfoPoints = []
+                           }
+                         "Char")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 40
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 363 28 363 35
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 363 36 363 40
+                           , srcInfoPoints = []
+                           }
+                         "Char")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 38
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 365 1 365 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 365 18 365 26
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 365 10 365 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 365 14 365 17
+                           , srcInfoPoints = []
+                           }
+                         "Int")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 38
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 365 27 365 34
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 365 35 365 38
+                           , srcInfoPoints = []
+                           }
+                         "Int")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 46
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 367 1 367 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 367 22 367 30
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 367 10 367 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 367 14 367 21
+                           , srcInfoPoints = []
+                           }
+                         "Integer")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 46
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 367 31 367 38
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 367 39 367 46
+                           , srcInfoPoints = []
+                           }
+                         "Integer")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 42
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 369 1 369 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 369 20 369 28
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 369 10 369 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 369 14 369 19
+                           , srcInfoPoints = []
+                           }
+                         "Float")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 42
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 369 29 369 36
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 369 37 369 42
+                           , srcInfoPoints = []
+                           }
+                         "Float")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 44
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 371 1 371 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 371 21 371 29
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 371 10 371 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 371 14 371 20
+                           , srcInfoPoints = []
+                           }
+                         "Double")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 44
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 371 30 371 37
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 371 38 371 44
+                           , srcInfoPoints = []
+                           }
+                         "Double")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 48
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 373 1 373 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 373 23 373 31
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 373 10 373 13
+                  , srcInfoPoints = []
+                  }
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 373 14 373 22
+                           , srcInfoPoints = []
+                           }
+                         "Rational")))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 48
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 373 32 373 39
+                           , srcInfoPoints = []
+                           }
+                         "Lattice")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 373 40 373 48
+                           , srcInfoPoints = []
+                           }
+                         "Rational")))))
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 380 1 386 47
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 380 1 380 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 380 31 380 36
+                , SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 0
+                ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
+                  }
+                (TypeA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 19
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 380 17 380 19 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 380 7 380 14
+                                 , srcInfoPoints = []
+                                 }
+                               "Functor")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 380 15 380 16
+                              , srcInfoPoints = []
+                              }
+                            "f"))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 30
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 380 20 380 28
+                     , srcInfoPoints = []
+                     }
+                   "Additive"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 380 29 380 30
+                     , srcInfoPoints = []
+                     }
+                   "f")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 23
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 381 8 381 10 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 381 3 381 7
+                          , srcInfoPoints = []
+                          }
+                        "zero"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 23
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 19
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 381 17 381 19
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 381 11 381 14
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 381 11 381 14
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 381 15 381 16
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 23
+                            , srcInfoPoints = []
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 381 20 381 21
+                                  , srcInfoPoints = []
+                                  }
+                                "f"))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 381 22 381 23
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 38
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 382 9 382 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 382 3 382 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 382 4 382 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 382 7 382 8
+                              ]
+                          }
+                        "^+^"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 38
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 382 18 382 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 382 12 382 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 382 12 382 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 382 16 382 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 38
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 382 25 382 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 21 382 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "f"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 23 382 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 38
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 382 32 382 34 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 28 382 29
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 30 382 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 38
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 35 382 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 382 37 382 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 8
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 3 383 4
+                             , SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7
+                             , SrcSpan "tests/examples/DerivingVia.hs" 383 7 383 8
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 383 4 383 7
+                            , srcInfoPoints = []
+                            }
+                          "^+^"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 383 9 383 10 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 383 11 383 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "liftU2")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 383 18 383 19
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
+                                      , SrcSpan "tests/examples/DerivingVia.hs" 383 20 383 21
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 383 19 383 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "+")))))
+                    Nothing)
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 38
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 384 9 384 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 384 3 384 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 384 4 384 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 384 7 384 8
+                              ]
+                          }
+                        "^-^"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 38
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 384 18 384 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 384 12 384 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 384 12 384 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 384 16 384 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 38
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 384 25 384 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 21 384 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "f"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 23 384 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 38
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 384 32 384 34 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 28 384 29
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 30 384 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 38
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 35 384 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 384 37 384 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
+                      , srcInfoPoints = []
+                      }
+                    [ InfixMatch
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 32
+                          , srcInfoPoints = []
+                          }
+                        (PVar
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 3 385 4
+                                , srcInfoPoints = []
+                                }
+                              "x"))
+                        (Symbol
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 385 5 385 8
+                             , srcInfoPoints = []
+                             }
+                           "^-^")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 385 9 385 10
+                                 , srcInfoPoints = []
+                                 }
+                               "y")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 32
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 385 11 385 12 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 32
+                                , srcInfoPoints = []
+                                }
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 13 385 14
+                                         , srcInfoPoints = []
+                                         }
+                                       "x")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 15 385 18
+                                         , srcInfoPoints = []
+                                         }
+                                       "^+^")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 30
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 19 385 23
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 385 19 385 23
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 385 19 385 23
+                                               , srcInfoPoints = []
+                                               }
+                                             "fmap")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 24 385 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 385 24 385 30
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 385 24 385 30
+                                               , srcInfoPoints = []
+                                               }
+                                             "negate"))))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 385 31 385 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 385 31 385 32
+                                            , srcInfoPoints = []
+                                            }
+                                          "y"))))))
+                        Nothing
+                    ])
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 47
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 386 10 386 12 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 386 3 386 9
+                          , srcInfoPoints = []
+                          }
+                        "liftU2"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 47
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 386 27 386 29 ]
+                         }
+                       (TyParen
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 26
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 13 386 14
+                                , SrcSpan "tests/examples/DerivingVia.hs" 386 25 386 26
+                                ]
+                            }
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 25
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 16 386 18 ]
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 14 386 15
+                                     , srcInfoPoints = []
+                                     }
+                                   "a"))
+                             (TyFun
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 25
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 386 21 386 23 ]
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 19 386 20
+                                        , srcInfoPoints = []
+                                        }
+                                      "a"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 24 386 25
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 47
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 386 34 386 36 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 33
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 30 386 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "f"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 32 386 33
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 47
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 386 41 386 43 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 40
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 37 386 38
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 39 386 40
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 47
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 44 386 45
+                                        , srcInfoPoints = []
+                                        }
+                                      "f"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 386 46 386 47
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 388 1 395 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 388 1 388 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 388 22 388 27
+                , SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 21
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 388 10 388 18
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
+                         , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
+                            , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
+                            ]
+                        }
+                      (ListCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 21
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 388 19 388 20
+                               , SrcSpan "tests/examples/DerivingVia.hs" 388 20 388 21
+                               ]
+                           })))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 12
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 389 3 389 7
+                            , srcInfoPoints = []
+                            }
+                          "zero"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 12
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 389 8 389 9 ]
+                         }
+                       (List
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 12
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 389 10 389 11
+                                , SrcSpan "tests/examples/DerivingVia.hs" 389 11 389 12
+                                ]
+                            }
+                          []))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 390 3 393 18
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 390 17 390 22 ]
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 390 3 390 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 390 10 390 11
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 16
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 390 12 390 13 ]
+                             }
+                           (Var
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 390 14 390 16
+                                      , srcInfoPoints = []
+                                      }
+                                    "go"))))
+                        (Just
+                           (BDecls
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18
+                                , srcInfoPoints =
+                                    [ SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 5
+                                    , SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 0
+                                    ]
+                                }
+                              [ FunBind
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 391 5 393 18
+                                    , srcInfoPoints = []
+                                    }
+                                  [ Match
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 40
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 391 5 391 7
+                                           , srcInfoPoints = []
+                                           }
+                                         "go")
+                                      [ PParen
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 391 8 391 14
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 8 391 9
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 13 391 14
+                                                ]
+                                            }
+                                          (PInfixApp
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 391 9 391 13
+                                               , srcInfoPoints = []
+                                               }
+                                             (PVar
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs" 391 9 391 10
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           9
+                                                           391
+                                                           10
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "x"))
+                                             (Special
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        10
+                                                        391
+                                                        11
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Cons
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           10
+                                                           391
+                                                           11
+                                                     , srcInfoPoints = []
+                                                     }))
+                                             (PVar
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        11
+                                                        391
+                                                        13
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           11
+                                                           391
+                                                           13
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "xs")))
+                                      , PParen
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 391 15 391 21
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 15 391 16
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 20 391 21
+                                                ]
+                                            }
+                                          (PInfixApp
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 391 16 391 20
+                                               , srcInfoPoints = []
+                                               }
+                                             (PVar
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        16
+                                                        391
+                                                        17
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           16
+                                                           391
+                                                           17
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "y"))
+                                             (Special
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        17
+                                                        391
+                                                        18
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Cons
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           17
+                                                           391
+                                                           18
+                                                     , srcInfoPoints = []
+                                                     }))
+                                             (PVar
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        391
+                                                        18
+                                                        391
+                                                        20
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           391
+                                                           18
+                                                           391
+                                                           20
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "ys")))
+                                      ]
+                                      (UnGuardedRhs
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 391 22 391 40
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 391 22 391 23
+                                               ]
+                                           }
+                                         (InfixApp
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 391 24 391 40
+                                              , srcInfoPoints = []
+                                              }
+                                            (App
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 391 24 391 29
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (App
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          24
+                                                          391
+                                                          27
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Var
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             24
+                                                             391
+                                                             25
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (UnQual
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                24
+                                                                391
+                                                                25
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        (Ident
+                                                           SrcSpanInfo
+                                                             { srcInfoSpan =
+                                                                 SrcSpan
+                                                                   "tests/examples/DerivingVia.hs"
+                                                                   391
+                                                                   24
+                                                                   391
+                                                                   25
+                                                             , srcInfoPoints = []
+                                                             }
+                                                           "f")))
+                                                  (Var
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             26
+                                                             391
+                                                             27
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (UnQual
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                26
+                                                                391
+                                                                27
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        (Ident
+                                                           SrcSpanInfo
+                                                             { srcInfoSpan =
+                                                                 SrcSpan
+                                                                   "tests/examples/DerivingVia.hs"
+                                                                   391
+                                                                   26
+                                                                   391
+                                                                   27
+                                                             , srcInfoPoints = []
+                                                             }
+                                                           "x"))))
+                                               (Var
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          28
+                                                          391
+                                                          29
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (UnQual
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             28
+                                                             391
+                                                             29
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (Ident
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                28
+                                                                391
+                                                                29
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        "y"))))
+                                            (QConOp
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 391 30 391 31
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Special
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          30
+                                                          391
+                                                          31
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Cons
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             30
+                                                             391
+                                                             31
+                                                       , srcInfoPoints = []
+                                                       })))
+                                            (App
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 391 32 391 40
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (App
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          32
+                                                          391
+                                                          37
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (Var
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             32
+                                                             391
+                                                             34
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (UnQual
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                32
+                                                                391
+                                                                34
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        (Ident
+                                                           SrcSpanInfo
+                                                             { srcInfoSpan =
+                                                                 SrcSpan
+                                                                   "tests/examples/DerivingVia.hs"
+                                                                   391
+                                                                   32
+                                                                   391
+                                                                   34
+                                                             , srcInfoPoints = []
+                                                             }
+                                                           "go")))
+                                                  (Var
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             35
+                                                             391
+                                                             37
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (UnQual
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                35
+                                                                391
+                                                                37
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        (Ident
+                                                           SrcSpanInfo
+                                                             { srcInfoSpan =
+                                                                 SrcSpan
+                                                                   "tests/examples/DerivingVia.hs"
+                                                                   391
+                                                                   35
+                                                                   391
+                                                                   37
+                                                             , srcInfoPoints = []
+                                                             }
+                                                           "xs"))))
+                                               (Var
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          391
+                                                          38
+                                                          391
+                                                          40
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  (UnQual
+                                                     SrcSpanInfo
+                                                       { srcInfoSpan =
+                                                           SrcSpan
+                                                             "tests/examples/DerivingVia.hs"
+                                                             391
+                                                             38
+                                                             391
+                                                             40
+                                                       , srcInfoPoints = []
+                                                       }
+                                                     (Ident
+                                                        SrcSpanInfo
+                                                          { srcInfoSpan =
+                                                              SrcSpan
+                                                                "tests/examples/DerivingVia.hs"
+                                                                391
+                                                                38
+                                                                391
+                                                                40
+                                                          , srcInfoPoints = []
+                                                          }
+                                                        "ys"))))))
+                                      Nothing
+                                  , Match
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 18
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 392 5 392 7
+                                           , srcInfoPoints = []
+                                           }
+                                         "go")
+                                      [ PList
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 392 8 392 10
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 392 8 392 9
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 392 9 392 10
+                                                ]
+                                            }
+                                          []
+                                      , PVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 392 11 392 13
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 392 11 392 13
+                                               , srcInfoPoints = []
+                                               }
+                                             "ys")
+                                      ]
+                                      (UnGuardedRhs
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 392 14 392 18
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 392 14 392 15
+                                               ]
+                                           }
+                                         (Var
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 392 16 392 18
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 392 16 392 18
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          392
+                                                          16
+                                                          392
+                                                          18
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "ys"))))
+                                      Nothing
+                                  , Match
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 18
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 393 5 393 7
+                                           , srcInfoPoints = []
+                                           }
+                                         "go")
+                                      [ PVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/DerivingVia.hs" 393 8 393 10
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 393 8 393 10
+                                               , srcInfoPoints = []
+                                               }
+                                             "xs")
+                                      , PList
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 393 11 393 13
+                                            , srcInfoPoints =
+                                                [ SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 393 11 393 12
+                                                , SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 393 12 393 13
+                                                ]
+                                            }
+                                          []
+                                      ]
+                                      (UnGuardedRhs
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 393 14 393 18
+                                           , srcInfoPoints =
+                                               [ SrcSpan
+                                                   "tests/examples/DerivingVia.hs" 393 14 393 15
+                                               ]
+                                           }
+                                         (Var
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 393 16 393 18
+                                              , srcInfoPoints = []
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/DerivingVia.hs" 393 16 393 18
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/DerivingVia.hs"
+                                                          393
+                                                          16
+                                                          393
+                                                          18
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "xs"))))
+                                      Nothing
+                                  ]
+                              ]))
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 395 1 401 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 395 1 395 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 395 25 395 30
+                , SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 24
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 395 10 395 18
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 395 19 395 24
+                           , srcInfoPoints = []
+                           }
+                         "Maybe")))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 17
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 396 3 396 7
+                            , srcInfoPoints = []
+                            }
+                          "zero"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 17
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 396 8 396 9 ]
+                         }
+                       (Con
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 396 10 396 17
+                                  , srcInfoPoints = []
+                                  }
+                                "Nothing"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 397 3 399 27
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 44
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 397 3 397 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 397 10 397 11
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        , PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 20
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 12 397 13
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 19 397 20
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 19
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 397 13 397 17
+                                       , srcInfoPoints = []
+                                       }
+                                     "Just"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 397 18 397 19
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")
+                               ])
+                        , PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 29
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 397 21 397 22
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 397 28 397 29
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 28
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 397 22 397 26
+                                       , srcInfoPoints = []
+                                       }
+                                     "Just"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 397 27 397 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "b")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 44
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 397 30 397 31 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 44
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 397 32 397 36
+                                         , srcInfoPoints = []
+                                         }
+                                       "Just")))
+                              (Paren
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 44
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 397 37 397 38
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 397 43 397 44
+                                       ]
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 43
+                                      , srcInfoPoints = []
+                                      }
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 397 38 397 41
+                                         , srcInfoPoints = []
+                                         }
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 397 38 397 39
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 397 38 397 39
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        397
+                                                        38
+                                                        397
+                                                        39
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "f")))
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 397 40 397 41
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 397 40 397 41
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        397
+                                                        40
+                                                        397
+                                                        41
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "a"))))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 397 42 397 43
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 397 42 397 43
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 397 42 397 43
+                                               , srcInfoPoints = []
+                                               }
+                                             "b")))))))
+                        Nothing
+                    , Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 27
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 398 3 398 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 398 10 398 11
+                              , srcInfoPoints = []
+                              }
+                        , PApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 398 12 398 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "Nothing"))
+                            []
+                        , PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 398 20 398 22
+                                 , srcInfoPoints = []
+                                 }
+                               "ys")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 27
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 398 23 398 24 ]
+                             }
+                           (Var
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 398 25 398 27
+                                      , srcInfoPoints = []
+                                      }
+                                    "ys"))))
+                        Nothing
+                    , Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 27
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 399 3 399 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 399 10 399 11
+                              , srcInfoPoints = []
+                              }
+                        , PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 399 12 399 14
+                                 , srcInfoPoints = []
+                                 }
+                               "xs")
+                        , PApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 399 15 399 22
+                                    , srcInfoPoints = []
+                                    }
+                                  "Nothing"))
+                            []
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 27
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 399 23 399 24 ]
+                             }
+                           (Var
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 399 25 399 27
+                                      , srcInfoPoints = []
+                                      }
+                                    "xs"))))
+                        Nothing
+                    ])
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 401 1 405 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 401 1 401 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 401 56 401 61
+                , SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 55
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 26
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 401 24 401 26 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 401 10 401 21
+                                    , srcInfoPoints = []
+                                    }
+                                  "Applicative")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 401 22 401 23
+                                 , srcInfoPoints = []
+                                 }
+                               "f"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 55
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 401 27 401 35
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 55
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 401 36 401 37
+                         , SrcSpan "tests/examples/DerivingVia.hs" 401 54 401 55
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 54
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 401 37 401 52
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapApplicative")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 401 53 401 54
+                              , srcInfoPoints = []
+                              }
+                            "f"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 402 3 402 7
+                            , srcInfoPoints = []
+                            }
+                          "zero"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 402 10 402 11 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 18
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 402 12 402 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "pure")))
+                          (Lit
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18
+                               , srcInfoPoints = []
+                               }
+                             (Int
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 402 17 402 18
+                                  , srcInfoPoints = []
+                                  }
+                                0
+                                "0"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 403 3 403 9
+                            , srcInfoPoints = []
+                            }
+                          "liftU2"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 403 10 403 11 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 403 12 403 18
+                                  , srcInfoPoints = []
+                                  }
+                                "liftA2"))))
+                    Nothing)
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 67
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 405 1 405 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 405 41 405 49
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 405 10 405 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 14 405 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 405 39 405 40
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 39
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 15 405 30
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapApplicative")))
+                      (TyParen
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 39
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 31 405 32
+                               , SrcSpan "tests/examples/DerivingVia.hs" 405 38 405 39
+                               ]
+                           }
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 38
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
+                                     ]
+                                 }
+                               (Special
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
+                                    , srcInfoPoints =
+                                        [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
+                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
+                                        , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
+                                        ]
+                                    }
+                                  (FunCon
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 36
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 405 32 405 33
+                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 33 405 35
+                                           , SrcSpan "tests/examples/DerivingVia.hs" 405 35 405 36
+                                           ]
+                                       })))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 405 37 405 38
+                                    , srcInfoPoints = []
+                                    }
+                                  "a"))))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 67
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 50 405 58
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 67
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 405 59 405 60
+                         , SrcSpan "tests/examples/DerivingVia.hs" 405 66 405 67
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 66
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
+                               , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
+                               , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
+                               ]
+                           }
+                         (Special
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
+                                  ]
+                              }
+                            (FunCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 64
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 405 60 405 61
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 61 405 63
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 405 63 405 64
+                                     ]
+                                 })))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 405 65 405 66
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 66
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 406 1 406 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 406 41 406 49
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 406 10 406 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 39
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 406 14 406 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 406 38 406 39
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 38
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 406 15 406 30
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapApplicative")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 406 31 406 38
+                                 , srcInfoPoints = []
+                                 }
+                               "Complex")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 66
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 406 50 406 58
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 406 59 406 66
+                           , srcInfoPoints = []
+                           }
+                         "Complex")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 67
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 407 1 407 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 407 41 407 49
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 407 10 407 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 40
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 407 14 407 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 407 39 407 40
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 39
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 407 15 407 30
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapApplicative")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 407 31 407 39
+                                 , srcInfoPoints = []
+                                 }
+                               "Identity")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 67
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 407 50 407 58
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 407 59 407 67
+                           , srcInfoPoints = []
+                           }
+                         "Identity")))))
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 409 1 413 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 409 1 409 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 409 27 409 32
+                , SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 26
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 409 10 409 18
+                           , srcInfoPoints = []
+                           }
+                         "Additive")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 409 19 409 26
+                           , srcInfoPoints = []
+                           }
+                         "ZipList")))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 410 3 410 7
+                            , srcInfoPoints = []
+                            }
+                          "zero"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 410 8 410 9 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 20
+                            , srcInfoPoints = []
+                            }
+                          (Con
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 410 10 410 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "ZipList")))
+                          (List
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 410 18 410 19
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 410 19 410 20
+                                   ]
+                               }
+                             [])))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 64
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 411 3 411 9
+                             , srcInfoPoints = []
+                             }
+                           "liftU2")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 411 10 411 11
+                                 , srcInfoPoints = []
+                                 }
+                               "f")
+                        , PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 24
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 12 411 13
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 23 411 24
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 23
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 411 13 411 20
+                                       , srcInfoPoints = []
+                                       }
+                                     "ZipList"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 411 21 411 23
+                                        , srcInfoPoints = []
+                                        }
+                                      "xs")
+                               ])
+                        , PParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 37
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 411 25 411 26
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 411 36 411 37
+                                  ]
+                              }
+                            (PApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 36
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 411 26 411 33
+                                       , srcInfoPoints = []
+                                       }
+                                     "ZipList"))
+                               [ PVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 411 34 411 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "ys")
+                               ])
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 64
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 411 38 411 39 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 64
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 411 40 411 47
+                                         , srcInfoPoints = []
+                                         }
+                                       "ZipList")))
+                              (Paren
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 64
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 411 48 411 49
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 411 63 411 64
+                                       ]
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 63
+                                      , srcInfoPoints = []
+                                      }
+                                    (App
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 411 49 411 60
+                                         , srcInfoPoints = []
+                                         }
+                                       (App
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 411 49 411 57
+                                            , srcInfoPoints = []
+                                            }
+                                          (Var
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 411 49 411 55
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        411
+                                                        49
+                                                        411
+                                                        55
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           411
+                                                           49
+                                                           411
+                                                           55
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "liftU2")))
+                                          (Var
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 411 56 411 57
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        411
+                                                        56
+                                                        411
+                                                        57
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/DerivingVia.hs"
+                                                           411
+                                                           56
+                                                           411
+                                                           57
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "f"))))
+                                       (Var
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 411 58 411 60
+                                            , srcInfoPoints = []
+                                            }
+                                          (UnQual
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 411 58 411 60
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/DerivingVia.hs"
+                                                        411
+                                                        58
+                                                        411
+                                                        60
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "xs"))))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 411 61 411 63
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 411 61 411 63
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 411 61 411 63
+                                               , srcInfoPoints = []
+                                               }
+                                             "ys")))))))
+                        Nothing
+                    ])
+             ])
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 413 1 419 32
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 413 1 413 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 413 37 413 42
+                , SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 0
+                ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
+                  }
+                (TypeA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 27
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 413 25 413 27 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 413 7 413 15
+                                 , srcInfoPoints = []
+                                 }
+                               "Additive")))
+                      (TyParen
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 24
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 413 16 413 17
+                               , SrcSpan "tests/examples/DerivingVia.hs" 413 23 413 24
+                               ]
+                           }
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 23
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 413 17 413 21
+                                       , srcInfoPoints = []
+                                       }
+                                     "Diff")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 413 22 413 23
+                                    , srcInfoPoints = []
+                                    }
+                                  "p"))))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 36
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 413 28 413 34
+                     , srcInfoPoints = []
+                     }
+                   "Affine"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 413 35 413 36
+                     , srcInfoPoints = []
+                     }
+                   "p")))
+          []
+          (Just
+             [ ClsTyFam
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 30
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 414 3 414 7 ]
+                   }
+                 (DHApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 14
+                      , srcInfoPoints = []
+                      }
+                    (DHead
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 414 8 414 12
+                            , srcInfoPoints = []
+                            }
+                          "Diff"))
+                    (UnkindedVar
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 414 13 414 14
+                            , srcInfoPoints = []
+                            }
+                          "p")))
+                 (Just
+                    (KindSig
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 30
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 414 15 414 17 ]
+                         }
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 30
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 414 23 414 25 ]
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 414 18 414 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Type")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 414 26 414 30
+                                     , srcInfoPoints = []
+                                     }
+                                   "Type"))))))
+                 Nothing
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 43
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 416 9 416 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 416 3 416 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 416 4 416 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 416 7 416 8
+                              ]
+                          }
+                        ".-."
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 43
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 416 18 416 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 12 416 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 416 12 416 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 16 416 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 43
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 416 25 416 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 21 416 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "p"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 23 416 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 43
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 416 32 416 34 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 31
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 28 416 29
+                                        , srcInfoPoints = []
+                                        }
+                                      "p"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 30 416 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 43
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 35 416 39
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 416 35 416 39
+                                              , srcInfoPoints = []
+                                              }
+                                            "Diff")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 416 40 416 41
+                                           , srcInfoPoints = []
+                                           }
+                                         "p")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 416 42 416 43
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 43
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 417 9 417 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 417 3 417 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 417 4 417 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 417 7 417 8
+                              ]
+                          }
+                        ".+^"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 43
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 417 18 417 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 12 417 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 417 12 417 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 16 417 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 43
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 417 25 417 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 21 417 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "p"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 23 417 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 43
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 417 37 417 39 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 36
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 34
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 28 417 32
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 417 28 417 32
+                                              , srcInfoPoints = []
+                                              }
+                                            "Diff")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 417 33 417 34
+                                           , srcInfoPoints = []
+                                           }
+                                         "p")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 35 417 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 43
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 40 417 41
+                                        , srcInfoPoints = []
+                                        }
+                                      "p"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 417 42 417 43
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 43
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 418 9 418 11 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 8
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/DerivingVia.hs" 418 3 418 4
+                              , SrcSpan "tests/examples/DerivingVia.hs" 418 4 418 7
+                              , SrcSpan "tests/examples/DerivingVia.hs" 418 7 418 8
+                              ]
+                          }
+                        ".-^"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 43
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20 ]
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 20
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/DerivingVia.hs" 418 18 418 20
+                                            ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 12 418 15
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 418 12 418 15
+                                              , srcInfoPoints = []
+                                              }
+                                            "Num")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 16 418 17
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 43
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 418 25 418 27 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 24
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 21 418 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "p"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 23 418 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 43
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 418 37 418 39 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 36
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 34
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyCon
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32
+                                        , srcInfoPoints = []
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 28 418 32
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/DerivingVia.hs" 418 28 418 32
+                                              , srcInfoPoints = []
+                                              }
+                                            "Diff")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/DerivingVia.hs" 418 33 418 34
+                                           , srcInfoPoints = []
+                                           }
+                                         "p")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 35 418 36
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 43
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 40 418 41
+                                        , srcInfoPoints = []
+                                        }
+                                      "p"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 418 42 418 43
+                                        , srcInfoPoints = []
+                                        }
+                                      "a")))))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
+                      , srcInfoPoints = []
+                      }
+                    [ InfixMatch
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 32
+                          , srcInfoPoints = []
+                          }
+                        (PVar
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 3 419 4
+                                , srcInfoPoints = []
+                                }
+                              "p"))
+                        (Symbol
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 419 5 419 8
+                             , srcInfoPoints = []
+                             }
+                           ".-^")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 419 9 419 10
+                                 , srcInfoPoints = []
+                                 }
+                               "v")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 32
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 419 11 419 12 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 32
+                                , srcInfoPoints = []
+                                }
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 13 419 14
+                                         , srcInfoPoints = []
+                                         }
+                                       "p")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 15 419 18
+                                         , srcInfoPoints = []
+                                         }
+                                       ".+^")))
+                              (App
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (App
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 30
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 19 419 23
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 419 19 419 23
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 419 19 419 23
+                                               , srcInfoPoints = []
+                                               }
+                                             "fmap")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 24 419 30
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 419 24 419 30
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 419 24 419 30
+                                               , srcInfoPoints = []
+                                               }
+                                             "negate"))))
+                                 (Var
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (UnQual
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 419 31 419 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 419 31 419 32
+                                            , srcInfoPoints = []
+                                            }
+                                          "v"))))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 49
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 425 26 425 27 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 425 1 425 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 25
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 23
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 425 9 425 21
+                        , srcInfoPoints = []
+                        }
+                      "WrapAdditive"))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 425 22 425 23
+                        , srcInfoPoints = []
+                        }
+                      "f")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 425 24 425 25
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 49
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 425 28 425 43
+                      , srcInfoPoints = []
+                      }
+                    "WrappedAdditive")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 49
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia.hs" 425 44 425 45
+                           , SrcSpan "tests/examples/DerivingVia.hs" 425 48 425 49
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 48
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 425 45 425 46
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 425 47 425 48
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          []
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 427 1 435 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 427 1 427 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 427 48 427 53
+                , SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 47
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxSingle
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 23
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 427 21 427 23 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 427 10 427 18
+                                    , srcInfoPoints = []
+                                    }
+                                  "Additive")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 427 19 427 20
+                                 , srcInfoPoints = []
+                                 }
+                               "f"))))))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 47
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 427 24 427 30
+                           , srcInfoPoints = []
+                           }
+                         "Affine")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 427 31 427 47
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 427 31 427 32
+                         , SrcSpan "tests/examples/DerivingVia.hs" 427 46 427 47
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 46
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 427 32 427 44
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapAdditive")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 427 45 427 46
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 427 45 427 46
+                              , srcInfoPoints = []
+                              }
+                            "f"))))))
+          (Just
+             [ InsType
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 33
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 428 3 428 7
+                       , SrcSpan "tests/examples/DerivingVia.hs" 428 30 428 31
+                       ]
+                   }
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 29
+                      , srcInfoPoints = []
+                      }
+                    (TyCon
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 428 8 428 12
+                               , srcInfoPoints = []
+                               }
+                             "Diff")))
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 428 13 428 29
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 428 13 428 14
+                             , SrcSpan "tests/examples/DerivingVia.hs" 428 28 428 29
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 28
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 428 14 428 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "WrapAdditive")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 428 27 428 28
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 428 27 428 28
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))))
+                 (TyVar
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 428 32 428 33
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 428 32 428 33
+                         , srcInfoPoints = []
+                         }
+                       "f"))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52
+                      , srcInfoPoints = []
+                      }
+                    [ InfixMatch
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 52
+                          , srcInfoPoints = []
+                          }
+                        (PApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 20
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 18
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 430 3 430 18
+                                   , srcInfoPoints = []
+                                   }
+                                 "WrappedAdditive"))
+                           [ PVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 430 19 430 20
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 430 19 430 20
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")
+                           ])
+                        (Symbol
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 430 21 430 24
+                             , srcInfoPoints = []
+                             }
+                           ".-.")
+                        [ PApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 42
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 40
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 430 25 430 40
+                                    , srcInfoPoints = []
+                                    }
+                                  "WrappedAdditive"))
+                            [ PVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 430 41 430 42
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 430 41 430 42
+                                     , srcInfoPoints = []
+                                     }
+                                   "b")
+                            ]
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 430 43 430 52
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 430 43 430 44 ]
+                             }
+                           (InfixApp
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 52
+                                , srcInfoPoints = []
+                                }
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 430 45 430 46
+                                         , srcInfoPoints = []
+                                         }
+                                       "a")))
+                              (QVarOp
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50
+                                      , srcInfoPoints = []
+                                      }
+                                    (Symbol
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 430 47 430 50
+                                         , srcInfoPoints = []
+                                         }
+                                       "^-^")))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 430 51 430 52
+                                         , srcInfoPoints = []
+                                         }
+                                       "b")))))
+                        Nothing
+                    ])
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54
+                      , srcInfoPoints = []
+                      }
+                    [ InfixMatch
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 54
+                          , srcInfoPoints = []
+                          }
+                        (PApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 20
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 18
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 431 3 431 18
+                                   , srcInfoPoints = []
+                                   }
+                                 "WrappedAdditive"))
+                           [ PVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 431 19 431 20
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 431 19 431 20
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")
+                           ])
+                        (Symbol
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 431 21 431 24
+                             , srcInfoPoints = []
+                             }
+                           ".+^")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 431 25 431 26
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 431 25 431 26
+                                 , srcInfoPoints = []
+                                 }
+                               "b")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 431 27 431 54
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 431 27 431 28 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 54
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 431 29 431 44
+                                         , srcInfoPoints = []
+                                         }
+                                       "WrappedAdditive")))
+                              (Paren
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 431 45 431 54
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 431 45 431 46
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 431 53 431 54
+                                       ]
+                                   }
+                                 (InfixApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 431 46 431 53
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 431 46 431 47
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 431 46 431 47
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 431 46 431 47
+                                               , srcInfoPoints = []
+                                               }
+                                             "a")))
+                                    (QVarOp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 431 48 431 51
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 431 48 431 51
+                                            , srcInfoPoints = []
+                                            }
+                                          (Symbol
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 431 48 431 51
+                                               , srcInfoPoints = []
+                                               }
+                                             "^+^")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 431 52 431 53
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 431 52 431 53
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 431 52 431 53
+                                               , srcInfoPoints = []
+                                               }
+                                             "b")))))))
+                        Nothing
+                    ])
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54
+                      , srcInfoPoints = []
+                      }
+                    [ InfixMatch
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 54
+                          , srcInfoPoints = []
+                          }
+                        (PApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 20
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 18
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 432 3 432 18
+                                   , srcInfoPoints = []
+                                   }
+                                 "WrappedAdditive"))
+                           [ PVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 432 19 432 20
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 432 19 432 20
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")
+                           ])
+                        (Symbol
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 432 21 432 24
+                             , srcInfoPoints = []
+                             }
+                           ".-^")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 432 25 432 26
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 432 25 432 26
+                                 , srcInfoPoints = []
+                                 }
+                               "b")
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 432 27 432 54
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 432 27 432 28 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 54
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 432 29 432 44
+                                         , srcInfoPoints = []
+                                         }
+                                       "WrappedAdditive")))
+                              (Paren
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 432 45 432 54
+                                   , srcInfoPoints =
+                                       [ SrcSpan "tests/examples/DerivingVia.hs" 432 45 432 46
+                                       , SrcSpan "tests/examples/DerivingVia.hs" 432 53 432 54
+                                       ]
+                                   }
+                                 (InfixApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 432 46 432 53
+                                      , srcInfoPoints = []
+                                      }
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 432 46 432 47
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 432 46 432 47
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 432 46 432 47
+                                               , srcInfoPoints = []
+                                               }
+                                             "a")))
+                                    (QVarOp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 432 48 432 51
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 432 48 432 51
+                                            , srcInfoPoints = []
+                                            }
+                                          (Symbol
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 432 48 432 51
+                                               , srcInfoPoints = []
+                                               }
+                                             "^-^")))
+                                    (Var
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 432 52 432 53
+                                         , srcInfoPoints = []
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan
+                                                  "tests/examples/DerivingVia.hs" 432 52 432 53
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan
+                                                     "tests/examples/DerivingVia.hs" 432 52 432 53
+                                               , srcInfoPoints = []
+                                               }
+                                             "b")))))))
+                        Nothing
+                    ])
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 62
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 435 1 435 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 435 38 435 46
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 435 10 435 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 435 14 435 37
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 435 14 435 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 435 36 435 37
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 36
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 435 15 435 27
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapAdditive")))
+                      (TyParen
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 435 28 435 36
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 435 28 435 29
+                               , SrcSpan "tests/examples/DerivingVia.hs" 435 35 435 36
+                               ]
+                           }
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 35
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33
+                                     ]
+                                 }
+                               (Special
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33
+                                    , srcInfoPoints =
+                                        [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30
+                                        , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32
+                                        , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33
+                                        ]
+                                    }
+                                  (FunCon
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 33
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia.hs" 435 29 435 30
+                                           , SrcSpan "tests/examples/DerivingVia.hs" 435 30 435 32
+                                           , SrcSpan "tests/examples/DerivingVia.hs" 435 32 435 33
+                                           ]
+                                       })))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 435 34 435 35
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 435 34 435 35
+                                    , srcInfoPoints = []
+                                    }
+                                  "a"))))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 62
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 62
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 435 47 435 53
+                           , srcInfoPoints = []
+                           }
+                         "Affine")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 435 54 435 62
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 435 54 435 55
+                         , SrcSpan "tests/examples/DerivingVia.hs" 435 61 435 62
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 61
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56
+                               , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58
+                               , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59
+                               ]
+                           }
+                         (Special
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59
+                                  ]
+                              }
+                            (FunCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 59
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 435 55 435 56
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 56 435 58
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 435 58 435 59
+                                     ]
+                                 })))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 435 60 435 61
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 435 60 435 61
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 56
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 437 1 437 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 437 38 437 46
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 437 10 437 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 437 14 437 31
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 437 14 437 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 437 30 437 31
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 30
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 437 15 437 27
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapAdditive")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29
+                               , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30
+                               ]
+                           }
+                         (Special
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29
+                                  , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30
+                                  ]
+                              }
+                            (ListCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 30
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/DerivingVia.hs" 437 28 437 29
+                                     , SrcSpan "tests/examples/DerivingVia.hs" 437 29 437 30
+                                     ]
+                                 })))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 56
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 56
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 437 47 437 53
+                           , srcInfoPoints = []
+                           }
+                         "Affine")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55
+                         , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55
+                            , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56
+                            ]
+                        }
+                      (ListCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 56
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/DerivingVia.hs" 437 54 437 55
+                               , SrcSpan "tests/examples/DerivingVia.hs" 437 55 437 56
+                               ]
+                           })))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 61
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 439 1 439 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 439 38 439 46
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 439 10 439 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 439 14 439 36
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 439 14 439 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 439 35 439 36
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 35
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 439 15 439 27
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapAdditive")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 439 28 439 35
+                                 , srcInfoPoints = []
+                                 }
+                               "Complex")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 61
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 61
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 439 47 439 53
+                           , srcInfoPoints = []
+                           }
+                         "Affine")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 439 54 439 61
+                           , srcInfoPoints = []
+                           }
+                         "Complex")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 59
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 441 1 441 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 441 38 441 46
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 441 10 441 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 441 14 441 34
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 441 14 441 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 441 33 441 34
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 33
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 441 15 441 27
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapAdditive")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 441 28 441 33
+                                 , srcInfoPoints = []
+                                 }
+                               "Maybe")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 59
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 59
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 441 47 441 53
+                           , srcInfoPoints = []
+                           }
+                         "Affine")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 441 54 441 59
+                           , srcInfoPoints = []
+                           }
+                         "Maybe")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 61
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 443 1 443 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 443 38 443 46
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 443 10 443 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 443 14 443 36
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 443 14 443 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 443 35 443 36
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 35
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 443 15 443 27
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapAdditive")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 443 28 443 35
+                                 , srcInfoPoints = []
+                                 }
+                               "ZipList")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 61
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 61
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 443 47 443 53
+                           , srcInfoPoints = []
+                           }
+                         "Affine")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 443 54 443 61
+                           , srcInfoPoints = []
+                           }
+                         "ZipList")))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 62
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 445 1 445 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 445 38 445 46
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 445 10 445 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 445 14 445 37
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 445 14 445 15
+                         , SrcSpan "tests/examples/DerivingVia.hs" 445 36 445 37
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 36
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 445 15 445 27
+                                 , srcInfoPoints = []
+                                 }
+                               "WrapAdditive")))
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 445 28 445 36
+                                 , srcInfoPoints = []
+                                 }
+                               "Identity")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 62
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 62
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 445 47 445 53
+                           , srcInfoPoints = []
+                           }
+                         "Affine")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 445 54 445 62
+                           , srcInfoPoints = []
+                           }
+                         "Identity")))))
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 451 1 452 20
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 451 1 451 6
+                , SrcSpan "tests/examples/DerivingVia.hs" 451 16 451 21
+                , SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 0
+                ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 15
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 13
+                  , srcInfoPoints = []
+                  }
+                (DHApp
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 11
+                     , srcInfoPoints = []
+                     }
+                   (DHead
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 9
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 451 7 451 9
+                           , srcInfoPoints = []
+                           }
+                         "C2"))
+                   (UnkindedVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 451 10 451 11
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 451 10 451 11
+                           , srcInfoPoints = []
+                           }
+                         "a")))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 451 12 451 13
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 451 12 451 13
+                        , srcInfoPoints = []
+                        }
+                      "b")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 451 14 451 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 451 14 451 15
+                     , srcInfoPoints = []
+                     }
+                   "c")))
+          []
+          (Just
+             [ ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 20
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/DerivingVia.hs" 452 6 452 8 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 20
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/DerivingVia.hs" 452 6 452 8 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 452 3 452 5
+                          , srcInfoPoints = []
+                          }
+                        "c2"
+                    ]
+                    (TyFun
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 452 11 452 13 ]
+                         }
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 10
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 452 9 452 10
+                               , srcInfoPoints = []
+                               }
+                             "a"))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 20
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/DerivingVia.hs" 452 16 452 18 ]
+                            }
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 15
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 452 14 452 15
+                                  , srcInfoPoints = []
+                                  }
+                                "b"))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 452 19 452 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 452 19 452 20
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))))
+             ])
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 454 1 457 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 454 1 454 9
+                , SrcSpan "tests/examples/DerivingVia.hs" 454 29 454 34
+                , SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 3
+                , SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 28
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 28
+                  , srcInfoPoints = []
+                  }
+                (IHApp
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 16
+                     , srcInfoPoints = []
+                     }
+                   (IHApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 14
+                        , srcInfoPoints = []
+                        }
+                      (IHCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 454 10 454 12
+                                 , srcInfoPoints = []
+                                 }
+                               "C2")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 454 13 454 14
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 13 454 14
+                              , srcInfoPoints = []
+                              }
+                            "a")))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 454 15 454 16
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 454 15 454 16
+                           , srcInfoPoints = []
+                           }
+                         "b")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 454 17 454 28
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia.hs" 454 17 454 18
+                         , SrcSpan "tests/examples/DerivingVia.hs" 454 27 454 28
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 27
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 25
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia.hs" 454 18 454 23
+                                    , srcInfoPoints = []
+                                    }
+                                  "Const")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 24 454 25
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia.hs" 454 24 454 25
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia.hs" 454 26 454 27
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia.hs" 454 26 454 27
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19
+                   , srcInfoPoints = []
+                   }
+                 (FunBind
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19
+                      , srcInfoPoints = []
+                      }
+                    [ Match
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 19
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 3 455 5
+                             , srcInfoPoints = []
+                             }
+                           "c2")
+                        [ PVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 6 455 7
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 6 455 7
+                                 , srcInfoPoints = []
+                                 }
+                               "x")
+                        , PWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 455 8 455 9
+                              , srcInfoPoints = []
+                              }
+                        ]
+                        (UnGuardedRhs
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 455 10 455 19
+                             , srcInfoPoints =
+                                 [ SrcSpan "tests/examples/DerivingVia.hs" 455 10 455 11 ]
+                             }
+                           (App
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 19
+                                , srcInfoPoints = []
+                                }
+                              (Con
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 455 12 455 17
+                                         , srcInfoPoints = []
+                                         }
+                                       "Const")))
+                              (Var
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19
+                                   , srcInfoPoints = []
+                                   }
+                                 (UnQual
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19
+                                      , srcInfoPoints = []
+                                      }
+                                    (Ident
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/DerivingVia.hs" 455 18 455 19
+                                         , srcInfoPoints = []
+                                         }
+                                       "x")))))
+                        Nothing
+                    ])
+             ])
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingVia.hs" 457 1 458 20
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia.hs" 457 18 457 19 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia.hs" 457 1 457 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 17
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 15
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 457 9 457 15
+                     , srcInfoPoints = []
+                     }
+                   "Fweemp"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia.hs" 457 16 457 17
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia.hs" 457 16 457 17
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 28
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 28
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 457 20 457 26
+                      , srcInfoPoints = []
+                      }
+                    "Fweemp")
+                 [ TyVar
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 457 27 457 28
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 457 27 457 28
+                          , srcInfoPoints = []
+                          }
+                        "a")
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia.hs" 458 3 458 20
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia.hs" 458 3 458 11 ]
+                }
+              (Just
+                 (DerivVia
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia.hs" 459 8 459 11
+                      , srcInfoPoints = []
+                      }
+                    (TyParen
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia.hs" 459 12 459 33
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia.hs" 459 12 459 13
+                             , SrcSpan "tests/examples/DerivingVia.hs" 459 32 459 33
+                             ]
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 32
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 20
+                               , srcInfoPoints = []
+                               }
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 459 13 459 18
+                                        , srcInfoPoints = []
+                                        }
+                                      "Const")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 459 19 459 20
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 459 19 459 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyKind
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia.hs" 459 21 459 32
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia.hs" 459 21 459 22
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 459 24 459 26
+                                   , SrcSpan "tests/examples/DerivingVia.hs" 459 31 459 32
+                                   ]
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 459 22 459 23
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 459 22 459 23
+                                     , srcInfoPoints = []
+                                     }
+                                   "b"))
+                             (TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/DerivingVia.hs" 459 27 459 31
+                                        , srcInfoPoints = []
+                                        }
+                                      "Type"))))))))
+              [ IParen
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia.hs" 458 12 458 20
+                    , srcInfoPoints =
+                        [ SrcSpan "tests/examples/DerivingVia.hs" 458 12 458 13
+                        , SrcSpan "tests/examples/DerivingVia.hs" 458 19 458 20
+                        ]
+                    }
+                  (IRule
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 19
+                       , srcInfoPoints = []
+                       }
+                     Nothing
+                     Nothing
+                     (IHApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 19
+                          , srcInfoPoints = []
+                          }
+                        (IHApp
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 17
+                             , srcInfoPoints = []
+                             }
+                           (IHCon
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15
+                                , srcInfoPoints = []
+                                }
+                              (UnQual
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15
+                                   , srcInfoPoints = []
+                                   }
+                                 (Ident
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/DerivingVia.hs" 458 13 458 15
+                                      , srcInfoPoints = []
+                                      }
+                                    "C2")))
+                           (TyVar
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 458 16 458 17
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia.hs" 458 16 458 17
+                                   , srcInfoPoints = []
+                                   }
+                                 "a")))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia.hs" 458 18 458 19
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia.hs" 458 18 458 19
+                                , srcInfoPoints = []
+                                }
+                              "b"))))
+              ]
+          ]
+      ]
+  , [ Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 38 1 38 6) "---"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 39 1 39 18)
+        " Simple example"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 40 1 40 6) "---"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 46 1 46 6) "---"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 47 1 47 25)
+        " Eta reduction at work"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 48 1 48 6) "---"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 62 1 62 6) "---"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 63 1 63 22)
+        " Monad transformers"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 64 1 64 6) "---"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 68 1 68 22)
+        " From `constraints'"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 78 1 78 52)
+        " With `-XQuantifiedConstraints' this just becomes"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 79 1 79 3) ""
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 80 1 80 68)
+        "    type Lifting cls  trans = forall mm. cls mm => cls (trans mm)"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 81 1 81 3) ""
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 82 1 82 52)
+        "    type LiftingMonad trans = Lifting Monad trans"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 83 1 83 3) ""
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 142 1 142 6) "---"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 143 1 143 32)
+        " Using tuples in a `via` type"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 144 1 144 6) "---"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 153 1 153 6) "---"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 154 1 154 23)
+        " Abstract data types"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 155 1 155 6) "---"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 167 1 167 5) "--"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 168 1 168 18)
+        " Testing parser"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 169 1 169 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 183 1 183 5) "--"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 184 1 184 23)
+        " From Baldur's notes"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 185 1 185 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 187 1 187 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 188 1 188 5) " 1"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 189 1 189 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 227 1 227 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 228 1 228 5) " 2"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 229 1 229 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 243 1 243 8) " data"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 262 1 262 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 263 1 263 5) " 3"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 264 1 264 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 290 1 290 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 291 1 291 5) " 4"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 292 1 292 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 324 1 324 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 325 1 325 5) " 5"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 326 1 326 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 340 1 340 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 341 1 341 5) " 6"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 342 1 342 5) "--"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 343 1 343 116)
+        " https://github.com/mikeizbicki/subhask/blob/f53fd8f465747681c88276c7dabe3646fbdf7d50/src/SubHask/Algebra.hs#L635"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 360 1 360 19)
+        "mkLattice_(Bool)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 362 1 362 19)
+        "mkLattice_(Char)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 364 1 364 18)
+        "mkLattice_(Int)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 366 1 366 22)
+        "mkLattice_(Integer)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 368 1 368 20)
+        "mkLattice_(Float)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 370 1 370 21)
+        "mkLattice_(Double)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 372 1 372 23)
+        "mkLattice_(Rational)"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 375 1 375 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 376 1 376 5) " 7"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 377 1 377 5) "--"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 378 1 378 81)
+        " https://hackage.haskell.org/package/linear-1.20.7/docs/src/Linear-Affine.html"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 421 1 421 79)
+        " #define ADDITIVEC(CTX,T) instance CTX => Affine T where type Diff T = T ; \\"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 422 1 422 85)
+        "   (.-.) = (^-^) ; {-# INLINE (.-.) #-} ; (.+^) = (^+^) ; {-# INLINE (.+^) #-} ; \\"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 423 1 423 42)
+        "   (.-^) = (^-^) ; {-# INLINE (.-^) #-}"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 424 1 424 40)
+        " #define ADDITIVE(T) ADDITIVEC((), T)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 434 1 434 22)
+        " ADDITIVE(((->) a))"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 436 1 436 16)
+        " ADDITIVE([])"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 438 1 438 21)
+        " ADDITIVE(Complex)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 440 1 440 19)
+        " ADDITIVE(Maybe)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 442 1 442 21)
+        " ADDITIVE(ZipList)"
+    , Comment
+        False
+        (SrcSpan "tests/examples/DerivingVia.hs" 444 1 444 22)
+        " ADDITIVE(Identity)"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 447 1 447 5) "--"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 448 1 448 5) " 8"
+    , Comment
+        False (SrcSpan "tests/examples/DerivingVia.hs" 449 1 449 5) "--"
+    ]
+  )
diff --git a/tests/examples/DerivingVia.hs.prettyparser.golden b/tests/examples/DerivingVia.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/DerivingVia.hs.prettyprinter.golden b/tests/examples/DerivingVia.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia.hs.prettyprinter.golden
@@ -0,0 +1,418 @@
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DerivingVia #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE InstanceSigs #-}
+{-# LANGUAGE TypeInType #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE TypeApplications #-}
+{-# LANGUAGE ConstraintKinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE MultiWayIf #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE UndecidableInstances #-}
+module DerivingVia where
+import Data.Void
+import Data.Complex
+import Data.Functor.Const
+import Data.Functor.Identity
+import Data.Ratio
+import Control.Monad.Reader
+import Control.Monad.State
+import Control.Monad.Writer
+import Control.Applicative hiding (WrappedMonad(..))
+import Data.Bifunctor
+import Data.Monoid
+import Data.Kind
+
+type f ~> g = forall xx . f xx -> g xx
+
+data Foo a = MkFoo a a
+               deriving Show via (Identity (Foo a))
+
+newtype Flip p a b = Flip{runFlip :: p b a}
+
+instance Bifunctor p => Bifunctor (Flip p) where
+        bimap f g = Flip . bimap g f . runFlip
+
+instance Bifunctor p => Functor (Flip p a) where
+        fmap f = Flip . first f . runFlip
+
+newtype Bar a = MkBar (Either a Int)
+                  deriving Functor via (Flip Either Int)
+
+type MTrans = (Type -> Type) -> (Type -> Type)
+
+data Dict c where
+        Dict :: c => Dict c
+
+newtype a :- b = Sub (a => Dict b)
+
+infixl 1 \\
+
+(\\) :: a => (b => r) -> (a :- b) -> r
+r \\ Sub Dict = r
+
+class LiftingMonad (trans :: MTrans) where
+        proof :: Monad m :- Monad (trans m)
+
+instance LiftingMonad (StateT s :: MTrans) where
+        proof :: Monad m :- Monad (StateT s m)
+        proof = Sub Dict
+
+instance Monoid w => LiftingMonad (WriterT w :: MTrans) where
+        proof :: Monad m :- Monad (WriterT w m)
+        proof = Sub Dict
+
+instance (LiftingMonad trans, LiftingMonad trans') =>
+         LiftingMonad (ComposeT trans trans' :: MTrans)
+         where
+        proof :: forall m . Monad m :- Monad (ComposeT trans trans' m)
+        proof = Sub (Dict \\ proof @trans @(trans' m) \\ proof @trans' @m)
+
+newtype Stack :: MTrans where
+        Stack ::
+          ReaderT Int (StateT Bool (WriterT String m)) a -> Stack m a
+    deriving newtype (Functor, Applicative, Monad, MonadReader Int,
+                      MonadState Bool, MonadWriter String)
+    deriving (MonadTrans, MFunctor) via (ReaderT Int `ComposeT`
+                                           StateT Bool `ComposeT` WriterT String)
+
+class MFunctor (trans :: MTrans) where
+        hoist :: Monad m => (m ~> m') -> (trans m ~> trans m')
+
+instance MFunctor (ReaderT r :: MTrans) where
+        hoist :: Monad m => (m ~> m') -> (ReaderT r m ~> ReaderT r m')
+        hoist nat = ReaderT . fmap nat . runReaderT
+
+instance MFunctor (StateT s :: MTrans) where
+        hoist :: Monad m => (m ~> m') -> (StateT s m ~> StateT s m')
+        hoist nat = StateT . fmap nat . runStateT
+
+instance MFunctor (WriterT w :: MTrans) where
+        hoist :: Monad m => (m ~> m') -> (WriterT w m ~> WriterT w m')
+        hoist nat = WriterT . nat . runWriterT
+
+infixr 9 `ComposeT`
+
+newtype ComposeT :: MTrans -> MTrans -> MTrans where
+        ComposeT :: {getComposeT :: f (g m) a} -> ComposeT f g m a
+    deriving newtype (Functor, Applicative, Monad)
+
+instance (MonadTrans f, MonadTrans g, LiftingMonad g) =>
+         MonadTrans (ComposeT f g)
+         where
+        lift :: forall m . Monad m => m ~> ComposeT f g m
+        lift = ComposeT . lift . lift \\ proof @g @m
+
+instance (MFunctor f, MFunctor g, LiftingMonad g) =>
+         MFunctor (ComposeT f g)
+         where
+        hoist ::
+              forall m m' . Monad m =>
+                (m ~> m') -> (ComposeT f g m ~> ComposeT f g m')
+        hoist f = ComposeT . hoist (hoist f) . getComposeT \\ proof @g @m
+
+newtype X a = X (a, a)
+                deriving (Semigroup, Monoid) via (Product a, Sum a)
+                deriving (Show, Eq) via (a, a)
+
+class C f where
+        c :: f a -> Int
+
+newtype X2 f a = X2 (f a)
+
+instance C (X2 f) where
+        c = const 0
+
+deriving via (X2 IO) instance C IO
+
+newtype P0 a = P0 a
+                 deriving Show via a
+
+newtype P1 a = P1 [a]
+                 deriving Show via [a]
+
+newtype P2 a = P2 (a, a)
+                 deriving Show via (a, a)
+
+newtype P3 a = P3 (Maybe a)
+                 deriving Show via (First a)
+
+newtype P4 a = P4 (Maybe a)
+                 deriving Show via (First $ a)
+
+newtype P5 a = P5 a
+                 deriving Show via (Identity $ a)
+
+newtype P6 a = P6 [a]
+                 deriving Show via ([] $ a)
+
+newtype P7 a = P7 (a, a)
+                 deriving Show via (Identity $ (a, a))
+
+newtype P8 a = P8 (Either () a)
+                 deriving Functor via (($) (Either ()))
+
+newtype f $ a = APP (f a)
+                  deriving newtype Show
+                  deriving newtype Functor
+
+newtype WrapApplicative f a = WrappedApplicative (f a)
+                                deriving (Functor, Applicative)
+
+instance (Applicative f, Num a) => Num (WrapApplicative f a) where
+        (+) = liftA2 (+)
+        (*) = liftA2 (*)
+        negate = fmap negate
+        fromInteger = pure . fromInteger
+        abs = fmap abs
+        signum = fmap signum
+
+instance (Applicative f, Fractional a) =>
+         Fractional (WrapApplicative f a)
+         where
+        recip = fmap recip
+        fromRational = pure . fromRational
+
+instance (Applicative f, Floating a) =>
+         Floating (WrapApplicative f a)
+         where
+        pi = pure pi
+        sqrt = fmap sqrt
+        exp = fmap exp
+        log = fmap log
+        sin = fmap sin
+        cos = fmap cos
+        asin = fmap asin
+        atan = fmap atan
+        acos = fmap acos
+        sinh = fmap sinh
+        cosh = fmap cosh
+        asinh = fmap asinh
+        atanh = fmap atanh
+        acosh = fmap acosh
+
+instance (Applicative f, Semigroup s) =>
+         Semigroup (WrapApplicative f s)
+         where
+        (<>) = liftA2 (<>)
+
+instance (Applicative f, Monoid m) => Monoid (WrapApplicative f m)
+         where
+        mempty = pure mempty
+
+class Pointed p where
+        pointed :: a -> p a
+
+newtype WrapMonad f a = WrappedMonad (f a)
+                          deriving newtype (Pointed, Monad)
+
+instance (Monad m, Pointed m) => Functor (WrapMonad m) where
+        fmap = liftM
+
+instance (Monad m, Pointed m) => Applicative (WrapMonad m) where
+        pure = pointed
+        (<*>) = ap
+
+data Sorted a = Sorted a a a
+                  deriving (Functor, Applicative) via (WrapMonad Sorted)
+                  deriving (Num, Fractional, Floating, Semigroup,
+                            Monoid) via (WrapApplicative Sorted a)
+
+instance Monad Sorted where
+        (>>=) :: Sorted a -> (a -> Sorted b) -> Sorted b
+        Sorted a b c >>= f = Sorted a' b' c'
+          where Sorted a' _ _ = f a
+                Sorted _ b' _ = f b
+                Sorted _ _ c' = f c
+
+instance Pointed Sorted where
+        pointed :: a -> Sorted a
+        pointed a = Sorted a a a
+
+class IsZero a where
+        isZero :: a -> Bool
+
+newtype WrappedNumEq a = WrappedNumEq a
+
+newtype WrappedShow a = WrappedShow a
+
+newtype WrappedNumEq2 a = WrappedNumEq2 a
+
+instance (Num a, Eq a) => IsZero (WrappedNumEq a) where
+        isZero :: WrappedNumEq a -> Bool
+        isZero (WrappedNumEq a) = 0 == a
+
+instance Show a => IsZero (WrappedShow a) where
+        isZero :: WrappedShow a -> Bool
+        isZero (WrappedShow a) = "0" == show a
+
+instance (Num a, Eq a) => IsZero (WrappedNumEq2 a) where
+        isZero :: WrappedNumEq2 a -> Bool
+        isZero (WrappedNumEq2 a) = a + a == a
+
+newtype INT = INT Int
+                deriving newtype Show
+                deriving IsZero via (WrappedNumEq Int)
+
+newtype VOID = VOID Void
+                 deriving IsZero via (WrappedShow Void)
+
+class Bifunctor p => Biapplicative p where
+        bipure :: a -> b -> p a b
+        
+        biliftA2 ::
+                 (a -> b -> c) -> (a' -> b' -> c') -> p a a' -> p b b' -> p c c'
+
+instance Biapplicative (,) where
+        bipure = (,)
+        biliftA2 f f' (a, a') (b, b') = (f a b, f' a' b')
+
+newtype WrapBiapp p a b = WrapBiap (p a b)
+                            deriving newtype (Bifunctor, Biapplicative, Eq)
+
+instance (Biapplicative p, Num a, Num b) => Num (WrapBiapp p a b)
+         where
+        (+) = biliftA2 (+) (+)
+        (-) = biliftA2 (*) (*)
+        (*) = biliftA2 (*) (*)
+        negate = bimap negate negate
+        abs = bimap abs abs
+        signum = bimap signum signum
+        fromInteger n = fromInteger n `bipure` fromInteger n
+
+newtype INT2 = INT2 (Int, Int)
+                 deriving IsZero via (WrappedNumEq2 (WrapBiapp (,) Int Int))
+
+class Monoid a => MonoidNull a where
+        null :: a -> Bool
+
+newtype WrpMonNull a = WRM a
+                         deriving (Eq, Semigroup, Monoid)
+
+instance (Eq a, Monoid a) => MonoidNull (WrpMonNull a) where
+        null :: WrpMonNull a -> Bool
+        null = (== mempty)
+
+deriving via (WrpMonNull Any) instance MonoidNull Any
+
+deriving via () instance MonoidNull ()
+
+deriving via Ordering instance MonoidNull Ordering
+
+class Lattice a where
+        sup :: a -> a -> a
+        
+        (.>=) :: a -> a -> Bool
+        
+        (.>) :: a -> a -> Bool
+
+newtype WrapOrd a = WrappedOrd a
+                      deriving newtype (Eq, Ord)
+
+instance Ord a => Lattice (WrapOrd a) where
+        sup = max
+        (.>=) = (>=)
+        (.>) = (>)
+
+deriving via [a] instance Ord a => Lattice [a]
+
+deriving via (a, b) instance (Ord a, Ord b) => Lattice (a, b)
+
+deriving via Bool instance Lattice Bool
+
+deriving via Char instance Lattice Char
+
+deriving via Int instance Lattice Int
+
+deriving via Integer instance Lattice Integer
+
+deriving via Float instance Lattice Float
+
+deriving via Double instance Lattice Double
+
+deriving via Rational instance Lattice Rational
+
+class Functor f => Additive f where
+        zero :: Num a => f a
+        
+        (^+^) :: Num a => f a -> f a -> f a
+        (^+^) = liftU2 (+)
+        
+        (^-^) :: Num a => f a -> f a -> f a
+        x ^-^ y = x ^+^ fmap negate y
+        
+        liftU2 :: (a -> a -> a) -> f a -> f a -> f a
+
+instance Additive [] where
+        zero = []
+        liftU2 f = go
+          where go (x : xs) (y : ys) = f x y : go xs ys
+                go [] ys = ys
+                go xs [] = xs
+
+instance Additive Maybe where
+        zero = Nothing
+        liftU2 f (Just a) (Just b) = Just (f a b)
+        liftU2 _ Nothing ys = ys
+        liftU2 _ xs Nothing = xs
+
+instance Applicative f => Additive (WrapApplicative f) where
+        zero = pure 0
+        liftU2 = liftA2
+
+deriving via (WrapApplicative ((->) a)) instance Additive ((->) a)
+
+deriving via (WrapApplicative Complex) instance Additive Complex
+
+deriving via (WrapApplicative Identity) instance Additive Identity
+
+instance Additive ZipList where
+        zero = ZipList []
+        liftU2 f (ZipList xs) (ZipList ys) = ZipList (liftU2 f xs ys)
+
+class Additive (Diff p) => Affine p where
+        type Diff p :: Type -> Type
+        
+        (.-.) :: Num a => p a -> p a -> Diff p a
+        
+        (.+^) :: Num a => p a -> Diff p a -> p a
+        
+        (.-^) :: Num a => p a -> Diff p a -> p a
+        p .-^ v = p .+^ fmap negate v
+
+newtype WrapAdditive f a = WrappedAdditive (f a)
+
+instance Additive f => Affine (WrapAdditive f) where
+        type Diff (WrapAdditive f) = f
+        WrappedAdditive a .-. WrappedAdditive b = a ^-^ b
+        WrappedAdditive a .+^ b = WrappedAdditive (a ^+^ b)
+        WrappedAdditive a .-^ b = WrappedAdditive (a ^-^ b)
+
+deriving via (WrapAdditive ((->) a)) instance Affine ((->) a)
+
+deriving via (WrapAdditive []) instance Affine []
+
+deriving via (WrapAdditive Complex) instance Affine Complex
+
+deriving via (WrapAdditive Maybe) instance Affine Maybe
+
+deriving via (WrapAdditive ZipList) instance Affine ZipList
+
+deriving via (WrapAdditive Identity) instance Affine Identity
+
+class C2 a b c where
+        c2 :: a -> b -> c
+
+instance C2 a b (Const a b) where
+        c2 x _ = Const x
+
+newtype Fweemp a = Fweemp a
+                     deriving (C2 a b) via (Const a (b :: Type))
diff --git a/tests/examples/DerivingVia2.hs b/tests/examples/DerivingVia2.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia2.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DerivingVia #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE StandaloneDeriving #-}
+module DerivingVia2 where
+
+import Control.Applicative
+import Data.Functor.Compose
+import Data.Proxy
+import Data.Semigroup
+
+newtype App (f :: * -> *) a = App (f a)
+  deriving newtype
+    (Functor, Applicative)
+
+instance (Applicative f, Semigroup a) => Semigroup (App f a) where
+  (<>) = liftA2 (<>)
+
+deriving via (App (Compose (f :: * -> *) g) a)
+         instance (Applicative f, Applicative g, Semigroup a)
+               => Semigroup (Compose f g a)
+
+class C (a :: k -> *)
+instance C Proxy
+
+newtype MyProxy a = MyProxy (Proxy a)
+deriving via (Proxy :: * -> *) instance C MyProxy
+
+class Z a b
+data T a
+data X1 a
+data X2 a
+data X3 a
+
+deriving via (forall a. T a) instance           Z a (X1 b)
+deriving via           (T a) instance forall b. Z a (X2 b)
+deriving via (forall a. T a) instance forall b. Z a (X3 b)
diff --git a/tests/examples/DerivingVia2.hs.exactprinter.golden b/tests/examples/DerivingVia2.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia2.hs.exactprinter.golden
@@ -0,0 +1,42 @@
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DerivingVia #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE StandaloneDeriving #-}
+module DerivingVia2 where
+
+import Control.Applicative
+import Data.Functor.Compose
+import Data.Proxy
+import Data.Semigroup
+
+newtype App (f :: * -> *) a = App (f a)
+  deriving newtype
+    (Functor, Applicative)
+
+instance (Applicative f, Semigroup a) => Semigroup (App f a) where
+  (<>) = liftA2 (<>)
+
+deriving via( App (Compose (f :: * -> *) g) a)
+         instance (Applicative f, Applicative g, Semigroup a)
+               => Semigroup (Compose f g a)
+
+class C (a :: k -> *)
+instance C Proxy
+
+newtype MyProxy a = MyProxy (Proxy a)
+deriving via( Proxy :: * -> *) instance C MyProxy
+
+class Z a b
+data T a
+data X1 a
+data X2 a
+data X3 a
+
+deriving via( forall a. T a) instance           Z a (X1 b)
+deriving via(           T a) instance forall b. Z a (X2 b)
+deriving via( forall a. T a) instance forall b. Z a (X3 b)
+
diff --git a/tests/examples/DerivingVia2.hs.parser.golden b/tests/examples/DerivingVia2.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia2.hs.parser.golden
@@ -0,0 +1,2346 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 1 42 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 16 1 16 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 20 1 20 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 42 1 42 1
+            , SrcSpan "tests/examples/DerivingVia2.hs" 42 1 42 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 26
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/DerivingVia2.hs" 9 1 9 7
+                  , SrcSpan "tests/examples/DerivingVia2.hs" 9 21 9 26
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 9 8 9 20
+                 , srcInfoPoints = []
+                 }
+               "DerivingVia2")
+            Nothing
+            Nothing))
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 36
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 1 1 1 13
+                , SrcSpan "tests/examples/DerivingVia2.hs" 1 33 1 36
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 1 14 1 32
+                , srcInfoPoints = []
+                }
+              "DerivingStrategies"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 29
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 2 1 2 13
+                , SrcSpan "tests/examples/DerivingVia2.hs" 2 26 2 29
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 2 14 2 25
+                , srcInfoPoints = []
+                }
+              "DerivingVia"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 35
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 3 1 3 13
+                , SrcSpan "tests/examples/DerivingVia2.hs" 3 32 3 35
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 3 14 3 31
+                , srcInfoPoints = []
+                }
+              "FlexibleInstances"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 44
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 4 1 4 13
+                , SrcSpan "tests/examples/DerivingVia2.hs" 4 41 4 44
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 4 14 4 40
+                , srcInfoPoints = []
+                }
+              "GeneralizedNewtypeDeriving"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 5 1 5 13
+                , SrcSpan "tests/examples/DerivingVia2.hs" 5 36 5 39
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 5 14 5 35
+                , srcInfoPoints = []
+                }
+              "MultiParamTypeClasses"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 27
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 6 1 6 13
+                , SrcSpan "tests/examples/DerivingVia2.hs" 6 24 6 27
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 6 14 6 23
+                , srcInfoPoints = []
+                }
+              "PolyKinds"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 28
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 7 1 7 13
+                , SrcSpan "tests/examples/DerivingVia2.hs" 7 25 7 28
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 7 14 7 24
+                , srcInfoPoints = []
+                }
+              "RankNTypes"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 36
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 8 1 8 13
+                , SrcSpan "tests/examples/DerivingVia2.hs" 8 33 8 36
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 8 14 8 32
+                , srcInfoPoints = []
+                }
+              "StandaloneDeriving"
+          ]
+      ]
+      [ ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 11 1 11 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 11 8 11 27
+                  , srcInfoPoints = []
+                  }
+                "Control.Applicative"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 28
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 12 1 12 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 12 8 12 28
+                  , srcInfoPoints = []
+                  }
+                "Data.Functor.Compose"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 18
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 13 1 13 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 13 8 13 18
+                  , srcInfoPoints = []
+                  }
+                "Data.Proxy"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 22
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 14 1 14 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 14 8 14 22
+                  , srcInfoPoints = []
+                  }
+                "Data.Semigroup"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      ]
+      [ DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 1 18 27
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 16 29 16 30 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 1 16 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 28
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 26
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 12
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 16 9 16 12
+                        , srcInfoPoints = []
+                        }
+                      "App"))
+                (KindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 16 13 16 26
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 16 13 16 14
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 16 16 16 18
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 16 25 16 26
+                         ]
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 16 14 16 15
+                        , srcInfoPoints = []
+                        }
+                      "f")
+                   (TyFun
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 16 19 16 25
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia2.hs" 16 21 16 23 ]
+                        }
+                      (TyStar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 16 19 16 20
+                           , srcInfoPoints = []
+                           })
+                      (TyStar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 16 24 16 25
+                           , srcInfoPoints = []
+                           }))))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 16 27 16 28
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 16 27 16 28
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 40
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 40
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia2.hs" 16 31 16 34
+                      , srcInfoPoints = []
+                      }
+                    "App")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia2.hs" 16 35 16 40
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia2.hs" 16 35 16 36
+                           , SrcSpan "tests/examples/DerivingVia2.hs" 16 39 16 40
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 39
+                          , srcInfoPoints = []
+                          }
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 37
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia2.hs" 16 36 16 37
+                                , srcInfoPoints = []
+                                }
+                              "f"))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia2.hs" 16 38 16 39
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia2.hs" 16 38 16 39
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          [ Deriving
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 17 3 18 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/DerivingVia2.hs" 17 3 17 11
+                    , SrcSpan "tests/examples/DerivingVia2.hs" 18 5 18 6
+                    , SrcSpan "tests/examples/DerivingVia2.hs" 18 13 18 14
+                    , SrcSpan "tests/examples/DerivingVia2.hs" 18 26 18 27
+                    ]
+                }
+              (Just
+                 (DerivNewtype
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia2.hs" 17 12 17 19
+                      , srcInfoPoints = []
+                      }))
+              [ IRule
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 18 6 18 13
+                             , srcInfoPoints = []
+                             }
+                           "Functor")))
+              , IRule
+                  SrcSpanInfo
+                    { srcInfoSpan =
+                        SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26
+                    , srcInfoPoints = []
+                    }
+                  Nothing
+                  Nothing
+                  (IHCon
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26
+                       , srcInfoPoints = []
+                       }
+                     (UnQual
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26
+                          , srcInfoPoints = []
+                          }
+                        (Ident
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia2.hs" 18 15 18 26
+                             , srcInfoPoints = []
+                             }
+                           "Applicative")))
+              ]
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 20 1 23 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 20 1 20 9
+                , SrcSpan "tests/examples/DerivingVia2.hs" 20 62 20 67
+                , SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 3
+                , SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 61
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 41
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 20 10 20 11
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 24 20 25
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 37 20 38
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 39 20 41
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 24
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 20 11 20 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 23 20 24
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 37
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 20 26 20 35
+                                     , srcInfoPoints = []
+                                     }
+                                   "Semigroup")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 20 36 20 37
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 61
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 20 42 20 51
+                           , srcInfoPoints = []
+                           }
+                         "Semigroup")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 20 52 20 61
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 20 52 20 53
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 20 60 20 61
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 60
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 58
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia2.hs" 20 53 20 56
+                                    , srcInfoPoints = []
+                                    }
+                                  "App")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 20 57 20 58
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 20 57 20 58
+                                 , srcInfoPoints = []
+                                 }
+                               "f")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 20 59 20 60
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 20 59 20 60
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          (Just
+             [ InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 21
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 21
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 7
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia2.hs" 21 3 21 4
+                             , SrcSpan "tests/examples/DerivingVia2.hs" 21 4 21 6
+                             , SrcSpan "tests/examples/DerivingVia2.hs" 21 6 21 7
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 4 21 6
+                            , srcInfoPoints = []
+                            }
+                          "<>"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 21 8 21 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/DerivingVia2.hs" 21 8 21 9 ]
+                         }
+                       (App
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 21
+                            , srcInfoPoints = []
+                            }
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 21 10 21 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "liftA2")))
+                          (Var
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 21
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 18
+                                   , SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20
+                                   , SrcSpan "tests/examples/DerivingVia2.hs" 21 20 21 21
+                                   ]
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 21
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/DerivingVia2.hs" 21 17 21 18
+                                      , SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20
+                                      , SrcSpan "tests/examples/DerivingVia2.hs" 21 20 21 21
+                                      ]
+                                  }
+                                (Symbol
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 21 18 21 20
+                                     , srcInfoPoints = []
+                                     }
+                                   "<>")))))
+                    Nothing)
+             ])
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 23 1 25 44
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 23 1 23 9
+                , SrcSpan "tests/examples/DerivingVia2.hs" 24 10 24 18
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 23 10 23 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 23 14 23 47
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 23 14 23 15
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 23 46 23 47
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 46
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 44
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia2.hs" 23 15 23 18
+                                    , srcInfoPoints = []
+                                    }
+                                  "App")))
+                         (TyParen
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 23 19 23 44
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/DerivingVia2.hs" 23 19 23 20
+                                  , SrcSpan "tests/examples/DerivingVia2.hs" 23 43 23 44
+                                  ]
+                              }
+                            (TyApp
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 43
+                                 , srcInfoPoints = []
+                                 }
+                               (TyApp
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 41
+                                    , srcInfoPoints = []
+                                    }
+                                  (TyCon
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 27
+                                       , srcInfoPoints = []
+                                       }
+                                     (UnQual
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia2.hs" 23 20 23 27
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia2.hs" 23 20 23 27
+                                             , srcInfoPoints = []
+                                             }
+                                           "Compose")))
+                                  (TyKind
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia2.hs" 23 28 23 41
+                                       , srcInfoPoints =
+                                           [ SrcSpan "tests/examples/DerivingVia2.hs" 23 28 23 29
+                                           , SrcSpan "tests/examples/DerivingVia2.hs" 23 31 23 33
+                                           , SrcSpan "tests/examples/DerivingVia2.hs" 23 40 23 41
+                                           ]
+                                       }
+                                     (TyVar
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia2.hs" 23 29 23 30
+                                          , srcInfoPoints = []
+                                          }
+                                        (Ident
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia2.hs" 23 29 23 30
+                                             , srcInfoPoints = []
+                                             }
+                                           "f"))
+                                     (TyFun
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/DerivingVia2.hs" 23 34 23 40
+                                          , srcInfoPoints =
+                                              [ SrcSpan "tests/examples/DerivingVia2.hs" 23 36 23 38
+                                              ]
+                                          }
+                                        (TyStar
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia2.hs" 23 34 23 35
+                                             , srcInfoPoints = []
+                                             })
+                                        (TyStar
+                                           SrcSpanInfo
+                                             { srcInfoSpan =
+                                                 SrcSpan
+                                                   "tests/examples/DerivingVia2.hs" 23 39 23 40
+                                             , srcInfoPoints = []
+                                             }))))
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia2.hs" 23 42 23 43
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia2.hs" 23 42 23 43
+                                       , srcInfoPoints = []
+                                       }
+                                     "g")))))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 23 45 23 46
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 23 45 23 46
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia2.hs" 24 19 25 44
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 24 19 25 18
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 24 19 24 20
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 24 33 24 34
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 24 48 24 49
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 24 61 24 62
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 25 16 25 18
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 33
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 24 20 24 31
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 32 24 33
+                                  , srcInfoPoints = []
+                                  }
+                                "f")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 48
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 24 35 24 46
+                                     , srcInfoPoints = []
+                                     }
+                                   "Applicative")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 47 24 48
+                                  , srcInfoPoints = []
+                                  }
+                                "g")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 61
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/DerivingVia2.hs" 24 50 24 59
+                                     , srcInfoPoints = []
+                                     }
+                                   "Semigroup")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 24 60 24 61
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   ]))
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 44
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 25 19 25 28
+                           , srcInfoPoints = []
+                           }
+                         "Semigroup")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 25 29 25 44
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 25 29 25 30
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 25 43 25 44
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 43
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 41
+                           , srcInfoPoints = []
+                           }
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 39
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/DerivingVia2.hs" 25 30 25 37
+                                       , srcInfoPoints = []
+                                       }
+                                     "Compose")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 25 38 25 39
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia2.hs" 25 38 25 39
+                                    , srcInfoPoints = []
+                                    }
+                                  "f")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 25 40 25 41
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 25 40 25 41
+                                 , srcInfoPoints = []
+                                 }
+                               "g")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 25 42 25 43
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 25 42 25 43
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 22
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 27 1 27 6 ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 22
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 8
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 7 27 8
+                     , srcInfoPoints = []
+                     }
+                   "C"))
+             (KindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 27 9 27 22
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingVia2.hs" 27 9 27 10
+                      , SrcSpan "tests/examples/DerivingVia2.hs" 27 12 27 14
+                      , SrcSpan "tests/examples/DerivingVia2.hs" 27 21 27 22
+                      ]
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 27 10 27 11
+                     , srcInfoPoints = []
+                     }
+                   "a")
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 21
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 27 17 27 19 ]
+                     }
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 16
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 27 15 27 16
+                           , srcInfoPoints = []
+                           }
+                         "k"))
+                   (TyStar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 27 20 27 21
+                        , srcInfoPoints = []
+                        }))))
+          []
+          Nothing
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 17
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 28 1 28 9 ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 17
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 17
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 28 10 28 11
+                           , srcInfoPoints = []
+                           }
+                         "C")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 28 12 28 17
+                           , srcInfoPoints = []
+                           }
+                         "Proxy")))))
+          Nothing
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 38
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 30 19 30 20 ]
+            }
+          (NewType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 1 30 8
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 18
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 16
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 30 9 30 16
+                     , srcInfoPoints = []
+                     }
+                   "MyProxy"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 30 17 30 18
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 30 17 30 18
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          [ QualConDecl
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 38
+                , srcInfoPoints = []
+                }
+              Nothing
+              Nothing
+              (ConDecl
+                 SrcSpanInfo
+                   { srcInfoSpan =
+                       SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 38
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia2.hs" 30 21 30 28
+                      , srcInfoPoints = []
+                      }
+                    "MyProxy")
+                 [ TyParen
+                     SrcSpanInfo
+                       { srcInfoSpan =
+                           SrcSpan "tests/examples/DerivingVia2.hs" 30 29 30 38
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/DerivingVia2.hs" 30 29 30 30
+                           , SrcSpan "tests/examples/DerivingVia2.hs" 30 37 30 38
+                           ]
+                       }
+                     (TyApp
+                        SrcSpanInfo
+                          { srcInfoSpan =
+                              SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 37
+                          , srcInfoPoints = []
+                          }
+                        (TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/DerivingVia2.hs" 30 30 30 35
+                                   , srcInfoPoints = []
+                                   }
+                                 "Proxy")))
+                        (TyVar
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/DerivingVia2.hs" 30 36 30 37
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/DerivingVia2.hs" 30 36 30 37
+                                , srcInfoPoints = []
+                                }
+                              "a")))
+                 ])
+          ]
+          []
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 50
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 31 1 31 9
+                , SrcSpan "tests/examples/DerivingVia2.hs" 31 32 31 40
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 31 10 31 13
+                  , srcInfoPoints = []
+                  }
+                (TyKind
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 31 14 31 31
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 31 14 31 15
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 31 21 31 23
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 31 30 31 31
+                         ]
+                     }
+                   (TyCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 31 15 31 20
+                              , srcInfoPoints = []
+                              }
+                            "Proxy")))
+                   (TyFun
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 31 24 31 30
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia2.hs" 31 26 31 28 ]
+                        }
+                      (TyStar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 24 31 25
+                           , srcInfoPoints = []
+                           })
+                      (TyStar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 29 31 30
+                           , srcInfoPoints = []
+                           })))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 50
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 50
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 41 31 42
+                           , srcInfoPoints = []
+                           }
+                         "C")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 31 43 31 50
+                           , srcInfoPoints = []
+                           }
+                         "MyProxy")))))
+      , ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 12
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 33 1 33 6 ]
+            }
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 12
+               , srcInfoPoints = []
+               }
+             (DHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 10
+                  , srcInfoPoints = []
+                  }
+                (DHead
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 8
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 7 33 8
+                        , srcInfoPoints = []
+                        }
+                      "Z"))
+                (UnkindedVar
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 9 33 10
+                     , srcInfoPoints = []
+                     }
+                   (Ident
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 33 9 33 10
+                        , srcInfoPoints = []
+                        }
+                      "a")))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 33 11 33 12
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 33 11 33 12
+                     , srcInfoPoints = []
+                     }
+                   "b")))
+          []
+          Nothing
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 5
+            , srcInfoPoints = []
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 1 34 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 9
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 7
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 6 34 7
+                     , srcInfoPoints = []
+                     }
+                   "T"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 8 34 9
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 34 8 34 9
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          []
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 5
+            , srcInfoPoints = []
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 1 35 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 10
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 8
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 6 35 8
+                     , srcInfoPoints = []
+                     }
+                   "X1"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 9 35 10
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 35 9 35 10
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          []
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 5
+            , srcInfoPoints = []
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 1 36 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 10
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 8
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 6 36 8
+                     , srcInfoPoints = []
+                     }
+                   "X2"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 9 36 10
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 36 9 36 10
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          []
+      , DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 5
+            , srcInfoPoints = []
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 1 37 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 10
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 8
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 6 37 8
+                     , srcInfoPoints = []
+                     }
+                   "X3"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 9 37 10
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 37 9 37 10
+                     , srcInfoPoints = []
+                     }
+                   "a")))
+          []
+          []
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 59
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 39 1 39 9
+                , SrcSpan "tests/examples/DerivingVia2.hs" 39 30 39 38
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 39 10 39 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 39 14 39 29
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 39 14 39 15
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 39 28 39 29
+                         ]
+                     }
+                   (TyForall
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 39 15 39 28
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia2.hs" 39 15 39 21
+                            , SrcSpan "tests/examples/DerivingVia2.hs" 39 23 39 24
+                            ]
+                        }
+                      (Just
+                         [ UnkindedVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 39 22 39 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 39 22 39 23
+                                  , srcInfoPoints = []
+                                  }
+                                "a")
+                         ])
+                      Nothing
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 28
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia2.hs" 39 25 39 26
+                                    , srcInfoPoints = []
+                                    }
+                                  "T")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 27 39 28
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 39 27 39 28
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 59
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 59
+                  , srcInfoPoints = []
+                  }
+                (IHApp
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 52
+                     , srcInfoPoints = []
+                     }
+                   (IHCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 49 39 50
+                              , srcInfoPoints = []
+                              }
+                            "Z")))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 39 51 39 52
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 51 39 52
+                           , srcInfoPoints = []
+                           }
+                         "a")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 39 53 39 59
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 39 53 39 54
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 39 58 39 59
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 58
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 39 54 39 56
+                                 , srcInfoPoints = []
+                                 }
+                               "X1")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 39 57 39 58
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 39 57 39 58
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 59
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 40 1 40 9
+                , SrcSpan "tests/examples/DerivingVia2.hs" 40 30 40 38
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 40 10 40 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 40 24 40 29
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 40 24 40 25
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 40 28 40 29
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 28
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 40 25 40 26
+                                 , srcInfoPoints = []
+                                 }
+                               "T")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 27 40 28
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 27 40 28
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia2.hs" 40 39 40 59
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/DerivingVia2.hs" 40 39 40 45
+                   , SrcSpan "tests/examples/DerivingVia2.hs" 40 47 40 48
+                   ]
+               }
+             (Just
+                [ UnkindedVar
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia2.hs" 40 46 40 47
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia2.hs" 40 46 40 47
+                         , srcInfoPoints = []
+                         }
+                       "b")
+                ])
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 59
+                  , srcInfoPoints = []
+                  }
+                (IHApp
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 52
+                     , srcInfoPoints = []
+                     }
+                   (IHCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 49 40 50
+                              , srcInfoPoints = []
+                              }
+                            "Z")))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 40 51 40 52
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 51 40 52
+                           , srcInfoPoints = []
+                           }
+                         "a")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 40 53 40 59
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 40 53 40 54
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 40 58 40 59
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 58
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 40 54 40 56
+                                 , srcInfoPoints = []
+                                 }
+                               "X2")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 40 57 40 58
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 40 57 40 58
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
+      , DerivDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 59
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/DerivingVia2.hs" 41 1 41 9
+                , SrcSpan "tests/examples/DerivingVia2.hs" 41 30 41 38
+                ]
+            }
+          (Just
+             (DerivVia
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 41 10 41 13
+                  , srcInfoPoints = []
+                  }
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 41 14 41 29
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 41 14 41 15
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 41 28 41 29
+                         ]
+                     }
+                   (TyForall
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 41 15 41 28
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingVia2.hs" 41 15 41 21
+                            , SrcSpan "tests/examples/DerivingVia2.hs" 41 23 41 24
+                            ]
+                        }
+                      (Just
+                         [ UnkindedVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/DerivingVia2.hs" 41 22 41 23
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/DerivingVia2.hs" 41 22 41 23
+                                  , srcInfoPoints = []
+                                  }
+                                "a")
+                         ])
+                      Nothing
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 28
+                           , srcInfoPoints = []
+                           }
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26
+                              , srcInfoPoints = []
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/DerivingVia2.hs" 41 25 41 26
+                                    , srcInfoPoints = []
+                                    }
+                                  "T")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 27 41 28
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 41 27 41 28
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))))))
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingVia2.hs" 41 39 41 59
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/DerivingVia2.hs" 41 39 41 45
+                   , SrcSpan "tests/examples/DerivingVia2.hs" 41 47 41 48
+                   ]
+               }
+             (Just
+                [ UnkindedVar
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/DerivingVia2.hs" 41 46 41 47
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/DerivingVia2.hs" 41 46 41 47
+                         , srcInfoPoints = []
+                         }
+                       "b")
+                ])
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 59
+                  , srcInfoPoints = []
+                  }
+                (IHApp
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 52
+                     , srcInfoPoints = []
+                     }
+                   (IHCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 49 41 50
+                              , srcInfoPoints = []
+                              }
+                            "Z")))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 41 51 41 52
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 51 41 52
+                           , srcInfoPoints = []
+                           }
+                         "a")))
+                (TyParen
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingVia2.hs" 41 53 41 59
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingVia2.hs" 41 53 41 54
+                         , SrcSpan "tests/examples/DerivingVia2.hs" 41 58 41 59
+                         ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 58
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/DerivingVia2.hs" 41 54 41 56
+                                 , srcInfoPoints = []
+                                 }
+                               "X3")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/DerivingVia2.hs" 41 57 41 58
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/DerivingVia2.hs" 41 57 41 58
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
+      ]
+  , []
+  )
diff --git a/tests/examples/DerivingVia2.hs.prettyparser.golden b/tests/examples/DerivingVia2.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia2.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/DerivingVia2.hs.prettyprinter.golden b/tests/examples/DerivingVia2.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingVia2.hs.prettyprinter.golden
@@ -0,0 +1,47 @@
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DerivingVia #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE StandaloneDeriving #-}
+module DerivingVia2 where
+import Control.Applicative
+import Data.Functor.Compose
+import Data.Proxy
+import Data.Semigroup
+
+newtype App (f :: * -> *) a = App (f a)
+                                deriving newtype (Functor, Applicative)
+
+instance (Applicative f, Semigroup a) => Semigroup (App f a) where
+        (<>) = liftA2 (<>)
+
+deriving via (App (Compose (f :: * -> *) g) a) instance
+         (Applicative f, Applicative g, Semigroup a) =>
+         Semigroup (Compose f g a)
+
+class C (a :: k -> *)
+
+instance C Proxy
+
+newtype MyProxy a = MyProxy (Proxy a)
+
+deriving via (Proxy :: * -> *) instance C MyProxy
+
+class Z a b
+
+data T a
+
+data X1 a
+
+data X2 a
+
+data X3 a
+
+deriving via (forall a . T a) instance Z a (X1 b)
+
+deriving via (T a) instance forall b . Z a (X2 b)
+
+deriving via (forall a . T a) instance forall b . Z a (X3 b)
diff --git a/tests/examples/DerivingViaStealing.hs b/tests/examples/DerivingViaStealing.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingViaStealing.hs
@@ -0,0 +1,5 @@
+module DerivingViaStealing where
+
+via = ()
+stock = ()
+anyclass = ()
diff --git a/tests/examples/DerivingViaStealing.hs.exactprinter.golden b/tests/examples/DerivingViaStealing.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingViaStealing.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/DerivingViaStealing.hs.parser.golden b/tests/examples/DerivingViaStealing.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingViaStealing.hs.parser.golden
@@ -0,0 +1,201 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan =
+            SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 6 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 1
+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 1
+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 1
+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 1
+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 1
+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 6 1 6 1
+            , SrcSpan "tests/examples/DerivingViaStealing.hs" 6 1 6 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan =
+                  SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 33
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/DerivingViaStealing.hs" 1 1 1 7
+                  , SrcSpan "tests/examples/DerivingViaStealing.hs" 1 28 1 33
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan =
+                     SrcSpan "tests/examples/DerivingViaStealing.hs" 1 8 1 27
+                 , srcInfoPoints = []
+                 }
+               "DerivingViaStealing")
+            Nothing
+            Nothing))
+      []
+      []
+      [ PatBind
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 9
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 4
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 3 1 3 4
+                  , srcInfoPoints = []
+                  }
+                "via"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 3 5 3 9
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 5 3 6 ]
+               }
+             (Con
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 9
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 8
+                      , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 8 3 9
+                      ]
+                  }
+                (Special
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 9
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 8
+                         , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 8 3 9
+                         ]
+                     }
+                   (UnitCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 9
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingViaStealing.hs" 3 7 3 8
+                            , SrcSpan "tests/examples/DerivingViaStealing.hs" 3 8 3 9
+                            ]
+                        }))))
+          Nothing
+      , PatBind
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 11
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 6
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 4 1 4 6
+                  , srcInfoPoints = []
+                  }
+                "stock"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 4 7 4 11
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 7 4 8 ]
+               }
+             (Con
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 11
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 10
+                      , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 10 4 11
+                      ]
+                  }
+                (Special
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 11
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 10
+                         , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 10 4 11
+                         ]
+                     }
+                   (UnitCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 11
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingViaStealing.hs" 4 9 4 10
+                            , SrcSpan "tests/examples/DerivingViaStealing.hs" 4 10 4 11
+                            ]
+                        }))))
+          Nothing
+      , PatBind
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 14
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 9
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 5 1 5 9
+                  , srcInfoPoints = []
+                  }
+                "anyclass"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/DerivingViaStealing.hs" 5 10 5 14
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 10 5 11 ]
+               }
+             (Con
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 14
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 13
+                      , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 13 5 14
+                      ]
+                  }
+                (Special
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 14
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 13
+                         , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 13 5 14
+                         ]
+                     }
+                   (UnitCon
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 14
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/DerivingViaStealing.hs" 5 12 5 13
+                            , SrcSpan "tests/examples/DerivingViaStealing.hs" 5 13 5 14
+                            ]
+                        }))))
+          Nothing
+      ]
+  , []
+  )
diff --git a/tests/examples/DerivingViaStealing.hs.prettyparser.golden b/tests/examples/DerivingViaStealing.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingViaStealing.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/DerivingViaStealing.hs.prettyprinter.golden b/tests/examples/DerivingViaStealing.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/DerivingViaStealing.hs.prettyprinter.golden
@@ -0,0 +1,4 @@
+module DerivingViaStealing where
+via = ()
+stock = ()
+anyclass = ()
diff --git a/tests/examples/Directory.hs.parser.golden b/tests/examples/Directory.hs.parser.golden
--- a/tests/examples/Directory.hs.parser.golden
+++ b/tests/examples/Directory.hs.parser.golden
@@ -25159,7 +25159,7 @@
                                                         "tests/examples/Directory.hs" 766 54 766 56
                                                     ]
                                                 }
-                                              (ClassA
+                                              (TypeA
                                                  SrcSpanInfo
                                                    { srcInfoSpan =
                                                        SrcSpan
@@ -25173,7 +25173,7 @@
                                                            56
                                                        ]
                                                    }
-                                                 (UnQual
+                                                 (TyApp
                                                     SrcSpanInfo
                                                       { srcInfoSpan =
                                                           SrcSpan
@@ -25181,10 +25181,17 @@
                                                             766
                                                             47
                                                             766
-                                                            51
-                                                      , srcInfoPoints = []
+                                                            56
+                                                      , srcInfoPoints =
+                                                          [ SrcSpan
+                                                              "tests/examples/Directory.hs"
+                                                              766
+                                                              54
+                                                              766
+                                                              56
+                                                          ]
                                                       }
-                                                    (Ident
+                                                    (TyCon
                                                        SrcSpanInfo
                                                          { srcInfoSpan =
                                                              SrcSpan
@@ -25192,34 +25199,62 @@
                                                                766
                                                                47
                                                                766
-                                                               51
+                                                               56
+                                                         , srcInfoPoints =
+                                                             [ SrcSpan
+                                                                 "tests/examples/Directory.hs"
+                                                                 766
+                                                                 54
+                                                                 766
+                                                                 56
+                                                             ]
+                                                         }
+                                                       (UnQual
+                                                          SrcSpanInfo
+                                                            { srcInfoSpan =
+                                                                SrcSpan
+                                                                  "tests/examples/Directory.hs"
+                                                                  766
+                                                                  47
+                                                                  766
+                                                                  51
+                                                            , srcInfoPoints = []
+                                                            }
+                                                          (Ident
+                                                             SrcSpanInfo
+                                                               { srcInfoSpan =
+                                                                   SrcSpan
+                                                                     "tests/examples/Directory.hs"
+                                                                     766
+                                                                     47
+                                                                     766
+                                                                     51
+                                                               , srcInfoPoints = []
+                                                               }
+                                                             "Real")))
+                                                    (TyVar
+                                                       SrcSpanInfo
+                                                         { srcInfoSpan =
+                                                             SrcSpan
+                                                               "tests/examples/Directory.hs"
+                                                               766
+                                                               52
+                                                               766
+                                                               53
                                                          , srcInfoPoints = []
                                                          }
-                                                       "Real"))
-                                                 [ TyVar
-                                                     SrcSpanInfo
-                                                       { srcInfoSpan =
-                                                           SrcSpan
-                                                             "tests/examples/Directory.hs"
-                                                             766
-                                                             52
-                                                             766
-                                                             53
-                                                       , srcInfoPoints = []
-                                                       }
-                                                     (Ident
-                                                        SrcSpanInfo
-                                                          { srcInfoSpan =
-                                                              SrcSpan
-                                                                "tests/examples/Directory.hs"
-                                                                766
-                                                                52
-                                                                766
-                                                                53
-                                                          , srcInfoPoints = []
-                                                          }
-                                                        "a")
-                                                 ])))
+                                                       (Ident
+                                                          SrcSpanInfo
+                                                            { srcInfoSpan =
+                                                                SrcSpan
+                                                                  "tests/examples/Directory.hs"
+                                                                  766
+                                                                  52
+                                                                  766
+                                                                  53
+                                                            , srcInfoPoints = []
+                                                            }
+                                                          "a"))))))
                                         (TyFun
                                            SrcSpanInfo
                                              { srcInfoSpan =
diff --git a/tests/examples/DsStrictData.hs.parser.golden b/tests/examples/DsStrictData.hs.parser.golden
--- a/tests/examples/DsStrictData.hs.parser.golden
+++ b/tests/examples/DsStrictData.hs.parser.golden
@@ -370,6 +370,8 @@
                    }
                  "S3")
               Nothing
+              Nothing
+              Nothing
               (TyFun
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/DsStrictData.hs" 12 9 12 23
@@ -665,6 +667,8 @@
                    , srcInfoPoints = []
                    }
                  "L2")
+              Nothing
+              Nothing
               Nothing
               (TyFun
                  SrcSpanInfo
diff --git a/tests/examples/EqualityConstraints1.hs.parser.golden b/tests/examples/EqualityConstraints1.hs.parser.golden
--- a/tests/examples/EqualityConstraints1.hs.parser.golden
+++ b/tests/examples/EqualityConstraints1.hs.parser.golden
@@ -61,47 +61,60 @@
                      { srcInfoSpan =
                          SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18
                      , srcInfoPoints =
-                         [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18 ]
+                         [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11
+                         , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18
+                         ]
                      }
-                   (EqualP
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 15
+                            SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18
                         , srcInfoPoints =
-                            [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11 ]
+                            [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11
+                            , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18
+                            ]
                         }
-                      (TyVar
+                      (TyEquals
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 18
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/EqualityConstraints1.hs" 4 10 4 11
+                               , SrcSpan "tests/examples/EqualityConstraints1.hs" 4 16 4 18
+                               ]
                            }
-                         (Ident
+                         (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9
                               , srcInfoPoints = []
                               }
-                            "a"))
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/EqualityConstraints1.hs" 4 8 4 9
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15
                                  , srcInfoPoints = []
                                  }
-                               "Int"))))))
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/EqualityConstraints1.hs" 4 12 4 15
+                                    , srcInfoPoints = []
+                                    }
+                                  "Int")))))))
              (TyVar
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/FamilyKindSig.hs.parser.golden b/tests/examples/FamilyKindSig.hs.parser.golden
--- a/tests/examples/FamilyKindSig.hs.parser.golden
+++ b/tests/examples/FamilyKindSig.hs.parser.golden
@@ -84,18 +84,18 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindFn
+                (TyFun
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 31 4 37
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/FamilyKindSig.hs" 4 33 4 35 ]
                      }
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 31 4 32
                         , srcInfoPoints = []
                         })
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/FamilyKindSig.hs" 4 36 4 37
                         , srcInfoPoints = []
diff --git a/tests/examples/Fixity3.hs.parser.golden b/tests/examples/Fixity3.hs.parser.golden
--- a/tests/examples/Fixity3.hs.parser.golden
+++ b/tests/examples/Fixity3.hs.parser.golden
@@ -88,37 +88,51 @@
                                { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28
                                , srcInfoPoints = [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]
                                }
-                             (ClassA
+                             (TypeA
                                 SrcSpanInfo
                                   { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28
                                   , srcInfoPoints =
                                       [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]
                                   }
-                                (UnQual
+                                (TyApp
                                    SrcSpanInfo
-                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23
-                                     , srcInfoPoints = []
+                                     { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]
                                      }
-                                   (Ident
+                                   (TyCon
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23
+                                            SrcSpan "tests/examples/Fixity3.hs" 2 12 2 28
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/Fixity3.hs" 2 26 2 28 ]
+                                        }
+                                      (UnQual
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/Fixity3.hs" 2 12 2 23
+                                              , srcInfoPoints = []
+                                              }
+                                            "Applicative")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25
                                         , srcInfoPoints = []
                                         }
-                                      "Applicative"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25
-                                         , srcInfoPoints = []
-                                         }
-                                       "f")
-                                ])))
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/Fixity3.hs" 2 24 2 25
+                                           , srcInfoPoints = []
+                                           }
+                                         "f"))))))
                        (TyFun
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/Fixity3.hs" 2 29 2 53
diff --git a/tests/examples/FlexibleContextsWithoutVars.hs.parser.golden b/tests/examples/FlexibleContextsWithoutVars.hs.parser.golden
--- a/tests/examples/FlexibleContextsWithoutVars.hs.parser.golden
+++ b/tests/examples/FlexibleContextsWithoutVars.hs.parser.golden
@@ -64,7 +64,7 @@
                          [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18
                          ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18
@@ -72,27 +72,36 @@
                             [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18
                             ]
                         }
-                      (Qual
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 18
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 16 2 18
+                               ]
                            }
-                         (ModuleName
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
-                              , srcInfoPoints = []
-                              }
-                            "Log")
-                         (Ident
+                         (Qual
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
                               , srcInfoPoints = []
                               }
-                            "Stack"))
-                      [])))
+                            (ModuleName
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
+                                 , srcInfoPoints = []
+                                 }
+                               "Log")
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/FlexibleContextsWithoutVars.hs" 2 6 2 15
+                                 , srcInfoPoints = []
+                                 }
+                               "Stack"))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/ForallInInstance.hs.parser.golden b/tests/examples/ForallInInstance.hs.parser.golden
--- a/tests/examples/ForallInInstance.hs.parser.golden
+++ b/tests/examples/ForallInInstance.hs.parser.golden
@@ -95,40 +95,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27
+                                  SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 32
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ForallInInstance.hs" 4 30 4 32 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ForallInInstance.hs" 4 20 4 27
+                                    , srcInfoPoints = []
+                                    }
+                                  "MyClass")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29
                               , srcInfoPoints = []
                               }
-                            "MyClass"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ForallInInstance.hs" 4 28 4 29
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/GADTRecord.hs.parser.golden b/tests/examples/GADTRecord.hs.parser.golden
--- a/tests/examples/GADTRecord.hs.parser.golden
+++ b/tests/examples/GADTRecord.hs.parser.golden
@@ -72,6 +72,8 @@
                    , srcInfoPoints = []
                    }
                  "T")
+              Nothing
+              Nothing
               (Just
                  [ FieldDecl
                      SrcSpanInfo
diff --git a/tests/examples/GADTRecord2.hs b/tests/examples/GADTRecord2.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/GADTRecord2.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE GADTs #-}
+
+data T where
+  T :: () => { field :: Int } -> T
diff --git a/tests/examples/GADTRecord2.hs.exactprinter.golden b/tests/examples/GADTRecord2.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/GADTRecord2.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/GADTRecord2.hs.parser.golden b/tests/examples/GADTRecord2.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/GADTRecord2.hs.parser.golden
@@ -0,0 +1,137 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 1 1 5 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/GADTRecord2.hs" 1 1 1 1
+            , SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 1
+            , SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 1
+            , SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 1
+            , SrcSpan "tests/examples/GADTRecord2.hs" 5 1 5 1
+            , SrcSpan "tests/examples/GADTRecord2.hs" 5 1 5 1
+            ]
+        }
+      Nothing
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 1 1 1 23
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/GADTRecord2.hs" 1 1 1 13
+                , SrcSpan "tests/examples/GADTRecord2.hs" 1 20 1 23
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 1 14 1 19
+                , srcInfoPoints = []
+                }
+              "GADTs"
+          ]
+      ]
+      []
+      [ GDataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 1 5 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/GADTRecord2.hs" 3 8 3 13
+                , SrcSpan "tests/examples/GADTRecord2.hs" 4 3 4 3
+                , SrcSpan "tests/examples/GADTRecord2.hs" 5 1 5 0
+                ]
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 1 3 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 6 3 7
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 3 6 3 7
+                  , srcInfoPoints = []
+                  }
+                "T"))
+          Nothing
+          [ GadtDecl
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 3 4 35
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/GADTRecord2.hs" 4 5 4 7
+                    , SrcSpan "tests/examples/GADTRecord2.hs" 4 14 4 15
+                    , SrcSpan "tests/examples/GADTRecord2.hs" 4 29 4 30
+                    , SrcSpan "tests/examples/GADTRecord2.hs" 4 31 4 33
+                    ]
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 3 4 4
+                   , srcInfoPoints = []
+                   }
+                 "T")
+              Nothing
+              (Just
+                 (CxEmpty
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 8 4 13
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/GADTRecord2.hs" 4 8 4 9
+                          , SrcSpan "tests/examples/GADTRecord2.hs" 4 9 4 10
+                          , SrcSpan "tests/examples/GADTRecord2.hs" 4 11 4 13
+                          ]
+                      }))
+              (Just
+                 [ FieldDecl
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 16 4 28
+                       , srcInfoPoints =
+                           [ SrcSpan "tests/examples/GADTRecord2.hs" 4 22 4 24 ]
+                       }
+                     [ Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 16 4 21
+                           , srcInfoPoints = []
+                           }
+                         "field"
+                     ]
+                     (TyCon
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 25 4 28
+                          , srcInfoPoints = []
+                          }
+                        (UnQual
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 25 4 28
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 25 4 28
+                                , srcInfoPoints = []
+                                }
+                              "Int")))
+                 ])
+              (TyCon
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 34 4 35
+                   , srcInfoPoints = []
+                   }
+                 (UnQual
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 34 4 35
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/GADTRecord2.hs" 4 34 4 35
+                         , srcInfoPoints = []
+                         }
+                       "T")))
+          ]
+          []
+      ]
+  , []
+  )
diff --git a/tests/examples/GADTRecord2.hs.prettyparser.golden b/tests/examples/GADTRecord2.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/GADTRecord2.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/GADTRecord2.hs.prettyprinter.golden b/tests/examples/GADTRecord2.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/GADTRecord2.hs.prettyprinter.golden
@@ -0,0 +1,4 @@
+{-# LANGUAGE GADTs #-}
+
+data T where
+        T :: () => {field :: Int} -> T
diff --git a/tests/examples/GadtDeriving.hs.parser.golden b/tests/examples/GadtDeriving.hs.parser.golden
--- a/tests/examples/GadtDeriving.hs.parser.golden
+++ b/tests/examples/GadtDeriving.hs.parser.golden
@@ -70,6 +70,8 @@
                    }
                  "Foo")
               Nothing
+              Nothing
+              Nothing
               (TyFun
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/GadtDeriving.hs" 4 12 4 22
diff --git a/tests/examples/GadtRecordFields.hs.parser.golden b/tests/examples/GadtRecordFields.hs.parser.golden
--- a/tests/examples/GadtRecordFields.hs.parser.golden
+++ b/tests/examples/GadtRecordFields.hs.parser.golden
@@ -83,6 +83,8 @@
                    , srcInfoPoints = []
                    }
                  "TCon")
+              Nothing
+              Nothing
               (Just
                  [ FieldDecl
                      SrcSpanInfo
@@ -186,6 +188,8 @@
                    , srcInfoPoints = []
                    }
                  "TCon2")
+              Nothing
+              Nothing
               Nothing
               (TyCon
                  SrcSpanInfo
diff --git a/tests/examples/GadtStrictness.hs.parser.golden b/tests/examples/GadtStrictness.hs.parser.golden
--- a/tests/examples/GadtStrictness.hs.parser.golden
+++ b/tests/examples/GadtStrictness.hs.parser.golden
@@ -70,6 +70,8 @@
                    }
                  "X")
               Nothing
+              Nothing
+              Nothing
               (TyFun
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/GadtStrictness.hs" 4 8 4 17
diff --git a/tests/examples/GenericTree.hs.parser.golden b/tests/examples/GenericTree.hs.parser.golden
--- a/tests/examples/GenericTree.hs.parser.golden
+++ b/tests/examples/GenericTree.hs.parser.golden
@@ -106,34 +106,46 @@
                             , SrcSpan "tests/examples/GenericTree.hs" 6 24 6 26
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20
+                              { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20
+                                 { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 12 6 22
                                  , srcInfoPoints = []
                                  }
-                               "Typeable"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/GenericTree.hs" 6 12 6 20
+                                       , srcInfoPoints = []
+                                       }
+                                     "Typeable")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/GenericTree.hs" 6 21 6 22
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 27 6 83
@@ -217,39 +229,51 @@
                                       , SrcSpan "tests/examples/GenericTree.hs" 6 65 6 67
                                       ]
                                   }
-                                (ClassA
+                                (TypeA
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63
                                      , srcInfoPoints = []
                                      }
-                                   (UnQual
+                                   (TyApp
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/GenericTree.hs" 6 53 6 61
+                                            SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyCon
                                          SrcSpanInfo
                                            { srcInfoSpan =
-                                               SrcSpan "tests/examples/GenericTree.hs" 6 53 6 61
+                                               SrcSpan "tests/examples/GenericTree.hs" 6 53 6 63
                                            , srcInfoPoints = []
                                            }
-                                         "Typeable"))
-                                   [ TyVar
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63
-                                         , srcInfoPoints = []
-                                         }
-                                       (Ident
-                                          SrcSpanInfo
-                                            { srcInfoSpan =
-                                                SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63
-                                            , srcInfoPoints = []
-                                            }
-                                          "b")
-                                   ]))))
+                                         (UnQual
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/GenericTree.hs" 6 53 6 61
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/GenericTree.hs" 6 53 6 61
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "Typeable")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/GenericTree.hs" 6 62 6 63
+                                              , srcInfoPoints = []
+                                              }
+                                            "b")))))))
                        (TyFun
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/GenericTree.hs" 6 68 6 82
diff --git a/tests/examples/ImportQualifiedPost.hs b/tests/examples/ImportQualifiedPost.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/ImportQualifiedPost.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE ImportQualifiedPost #-}
+module ImportQualifiedPost where
+
+import Data.List qualified as L
diff --git a/tests/examples/ImportQualifiedPost.hs.exactprinter.golden b/tests/examples/ImportQualifiedPost.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/ImportQualifiedPost.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/ImportQualifiedPost.hs.parser.golden b/tests/examples/ImportQualifiedPost.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/ImportQualifiedPost.hs.parser.golden
@@ -0,0 +1,89 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan =
+            SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 5 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 1
+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 1
+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 1
+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 1
+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 5 1 5 1
+            , SrcSpan "tests/examples/ImportQualifiedPost.hs" 5 1 5 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan =
+                  SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 33
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 7
+                  , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 28 2 33
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan =
+                     SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 8 2 27
+                 , srcInfoPoints = []
+                 }
+               "ImportQualifiedPost")
+            Nothing
+            Nothing))
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 37
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 13
+                , SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 34 1 37
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 14 1 33
+                , srcInfoPoints = []
+                }
+              "ImportQualifiedPost"
+          ]
+      ]
+      [ ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 32
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 7
+                    , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 18 4 27
+                    , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 28 4 30
+                    ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 8 4 17
+                  , srcInfoPoints = []
+                  }
+                "Data.List"
+          , importQualified = True
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs =
+              Just
+                (ModuleName
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 31 4 32
+                     , srcInfoPoints = []
+                     }
+                   "L")
+          , importSpecs = Nothing
+          }
+      ]
+      []
+  , []
+  )
diff --git a/tests/examples/ImportQualifiedPost.hs.prettyparser.golden b/tests/examples/ImportQualifiedPost.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/ImportQualifiedPost.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/ImportQualifiedPost.hs.prettyprinter.golden b/tests/examples/ImportQualifiedPost.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/ImportQualifiedPost.hs.prettyprinter.golden
@@ -0,0 +1,3 @@
+{-# LANGUAGE ImportQualifiedPost #-}
+module ImportQualifiedPost where
+import qualified Data.List as L
diff --git a/tests/examples/InfixTypeMinus.hs.parser.golden b/tests/examples/InfixTypeMinus.hs.parser.golden
--- a/tests/examples/InfixTypeMinus.hs.parser.golden
+++ b/tests/examples/InfixTypeMinus.hs.parser.golden
@@ -121,7 +121,7 @@
                      , srcInfoPoints = []
                      }
                    "n")
-                (KindVar
+                (TyCon
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InfixTypeMinus.hs" 5 16 5 19
@@ -156,6 +156,8 @@
                    }
                  "VCons")
               Nothing
+              Nothing
+              Nothing
               (TyForall
                  SrcSpanInfo
                    { srcInfoSpan =
@@ -184,88 +186,98 @@
                                 , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 50 5 52
                                 ]
                             }
-                          (EqualP
+                          (TypeA
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 48
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 41 5 42 ]
                                }
-                             (TyVar
+                             (TyEquals
                                 SrcSpanInfo
                                   { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40
-                                  , srcInfoPoints = []
+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 48
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 41 5 42 ]
                                   }
-                                (Ident
+                                (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40
                                      , srcInfoPoints = []
                                      }
-                                   "m"))
-                             (TyParen
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 48
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 44
-                                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 47 5 48
-                                      ]
-                                  }
-                                (TyInfix
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 39 5 40
+                                        , srcInfoPoints = []
+                                        }
+                                      "m"))
+                                (TyParen
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 47
-                                     , srcInfoPoints = []
+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 48
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 5 43 5 44
+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 5 47 5 48
+                                         ]
                                      }
-                                   (TyVar
+                                   (TyInfix
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 45
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 47
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 44 5 45
                                            , srcInfoPoints = []
                                            }
-                                         "n"))
-                                   (UnpromotedName
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 45 5 46
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 5 44 5 45
+                                              , srcInfoPoints = []
+                                              }
+                                            "n"))
+                                      (UnpromotedName
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 45 5 46
                                            , srcInfoPoints = []
                                            }
-                                         (Symbol
+                                         (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/InfixTypeMinus.hs" 5 45 5 46
                                               , srcInfoPoints = []
                                               }
-                                            "-")))
-                                   (TyPromoted
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 5 46 5 47
-                                        , srcInfoPoints = []
-                                        }
-                                      (PromotedInteger
+                                            (Symbol
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/InfixTypeMinus.hs" 5 45 5 46
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "-")))
+                                      (TyPromoted
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 5 46 5 47
                                            , srcInfoPoints = []
                                            }
-                                         1
-                                         "1"))))))))
+                                         (PromotedInteger
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 5 46 5 47
+                                              , srcInfoPoints = []
+                                              }
+                                            1
+                                            "1")))))))))
                  (TyFun
                     SrcSpanInfo
                       { srcInfoSpan =
@@ -425,7 +437,7 @@
                      , srcInfoPoints = []
                      }
                    "n")
-                (KindVar
+                (TyCon
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InfixTypeMinus.hs" 6 16 6 19
@@ -460,6 +472,8 @@
                    }
                  "VCons")
               Nothing
+              Nothing
+              Nothing
               (TyForall
                  SrcSpanInfo
                    { srcInfoSpan =
@@ -488,88 +502,98 @@
                                 , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 50 6 52
                                 ]
                             }
-                          (EqualP
+                          (TypeA
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 48
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 45 6 46 ]
                                }
-                             (TyParen
+                             (TyEquals
                                 SrcSpanInfo
                                   { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 44
+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 48
                                   , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 40
-                                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 43 6 44
-                                      ]
+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 45 6 46 ]
                                   }
-                                (TyInfix
+                                (TyParen
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 43
-                                     , srcInfoPoints = []
+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 44
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 6 39 6 40
+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 6 43 6 44
+                                         ]
                                      }
-                                   (TyVar
+                                   (TyInfix
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 41
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 43
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 40 6 41
                                            , srcInfoPoints = []
                                            }
-                                         "n"))
-                                   (UnpromotedName
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 41 6 42
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 6 40 6 41
+                                              , srcInfoPoints = []
+                                              }
+                                            "n"))
+                                      (UnpromotedName
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 41 6 42
                                            , srcInfoPoints = []
                                            }
-                                         (Symbol
+                                         (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/InfixTypeMinus.hs" 6 41 6 42
                                               , srcInfoPoints = []
                                               }
-                                            "-")))
-                                   (TyPromoted
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 42 6 43
-                                        , srcInfoPoints = []
-                                        }
-                                      (PromotedInteger
+                                            (Symbol
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/InfixTypeMinus.hs" 6 41 6 42
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "-")))
+                                      (TyPromoted
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 6 42 6 43
                                            , srcInfoPoints = []
                                            }
-                                         1
-                                         "1"))))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
+                                         (PromotedInteger
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 6 42 6 43
+                                              , srcInfoPoints = []
+                                              }
+                                            1
+                                            "1"))))
+                                (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48
                                      , srcInfoPoints = []
                                      }
-                                   "m"))))))
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 6 47 6 48
+                                        , srcInfoPoints = []
+                                        }
+                                      "m")))))))
                  (TyFun
                     SrcSpanInfo
                       { srcInfoSpan =
@@ -729,7 +753,7 @@
                      , srcInfoPoints = []
                      }
                    "n")
-                (KindVar
+                (TyCon
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InfixTypeMinus.hs" 7 16 7 19
@@ -764,6 +788,8 @@
                    }
                  "VCons")
               Nothing
+              Nothing
+              Nothing
               (TyForall
                  SrcSpanInfo
                    { srcInfoSpan =
@@ -792,88 +818,98 @@
                                 , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 50 7 52
                                 ]
                             }
-                          (EqualP
+                          (TypeA
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 48
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 45 7 46 ]
                                }
-                             (TyParen
+                             (TyEquals
                                 SrcSpanInfo
                                   { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 44
+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 48
                                   , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 40
-                                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 43 7 44
-                                      ]
+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 45 7 46 ]
                                   }
-                                (TyInfix
+                                (TyParen
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 43
-                                     , srcInfoPoints = []
+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 44
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 7 39 7 40
+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 7 43 7 44
+                                         ]
                                      }
-                                   (TyVar
+                                   (TyInfix
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 41
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 43
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 40 7 41
                                            , srcInfoPoints = []
                                            }
-                                         "m"))
-                                   (UnpromotedName
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 41 7 42
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 7 40 7 41
+                                              , srcInfoPoints = []
+                                              }
+                                            "m"))
+                                      (UnpromotedName
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 41 7 42
                                            , srcInfoPoints = []
                                            }
-                                         (Symbol
+                                         (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/InfixTypeMinus.hs" 7 41 7 42
                                               , srcInfoPoints = []
                                               }
-                                            "+")))
-                                   (TyPromoted
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 42 7 43
-                                        , srcInfoPoints = []
-                                        }
-                                      (PromotedInteger
+                                            (Symbol
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/InfixTypeMinus.hs" 7 41 7 42
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "+")))
+                                      (TyPromoted
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 7 42 7 43
                                            , srcInfoPoints = []
                                            }
-                                         1
-                                         "1"))))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
+                                         (PromotedInteger
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 7 42 7 43
+                                              , srcInfoPoints = []
+                                              }
+                                            1
+                                            "1"))))
+                                (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48
                                      , srcInfoPoints = []
                                      }
-                                   "n"))))))
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 7 47 7 48
+                                        , srcInfoPoints = []
+                                        }
+                                      "n")))))))
                  (TyFun
                     SrcSpanInfo
                       { srcInfoSpan =
@@ -1033,7 +1069,7 @@
                      , srcInfoPoints = []
                      }
                    "n")
-                (KindVar
+                (TyCon
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InfixTypeMinus.hs" 8 16 8 19
@@ -1068,6 +1104,8 @@
                    }
                  "VCons")
               Nothing
+              Nothing
+              Nothing
               (TyForall
                  SrcSpanInfo
                    { srcInfoSpan =
@@ -1096,88 +1134,98 @@
                                 , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 50 8 52
                                 ]
                             }
-                          (EqualP
+                          (TypeA
                              SrcSpanInfo
                                { srcInfoSpan =
                                    SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 48
                                , srcInfoPoints =
                                    [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 41 8 42 ]
                                }
-                             (TyVar
+                             (TyEquals
                                 SrcSpanInfo
                                   { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40
-                                  , srcInfoPoints = []
+                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 48
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 41 8 42 ]
                                   }
-                                (Ident
+                                (TyVar
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40
                                      , srcInfoPoints = []
                                      }
-                                   "n"))
-                             (TyParen
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 48
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 44
-                                      , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 47 8 48
-                                      ]
-                                  }
-                                (TyInfix
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 39 8 40
+                                        , srcInfoPoints = []
+                                        }
+                                      "n"))
+                                (TyParen
                                    SrcSpanInfo
                                      { srcInfoSpan =
-                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 47
-                                     , srcInfoPoints = []
+                                         SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 48
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/InfixTypeMinus.hs" 8 43 8 44
+                                         , SrcSpan "tests/examples/InfixTypeMinus.hs" 8 47 8 48
+                                         ]
                                      }
-                                   (TyVar
+                                   (TyInfix
                                       SrcSpanInfo
                                         { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 45
+                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 47
                                         , srcInfoPoints = []
                                         }
-                                      (Ident
+                                      (TyVar
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 44 8 45
                                            , srcInfoPoints = []
                                            }
-                                         "m"))
-                                   (UnpromotedName
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 45 8 46
-                                        , srcInfoPoints = []
-                                        }
-                                      (UnQual
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 8 44 8 45
+                                              , srcInfoPoints = []
+                                              }
+                                            "m"))
+                                      (UnpromotedName
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 45 8 46
                                            , srcInfoPoints = []
                                            }
-                                         (Symbol
+                                         (UnQual
                                             SrcSpanInfo
                                               { srcInfoSpan =
                                                   SrcSpan
                                                     "tests/examples/InfixTypeMinus.hs" 8 45 8 46
                                               , srcInfoPoints = []
                                               }
-                                            "+")))
-                                   (TyPromoted
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/InfixTypeMinus.hs" 8 46 8 47
-                                        , srcInfoPoints = []
-                                        }
-                                      (PromotedInteger
+                                            (Symbol
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/InfixTypeMinus.hs" 8 45 8 46
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "+")))
+                                      (TyPromoted
                                          SrcSpanInfo
                                            { srcInfoSpan =
                                                SrcSpan "tests/examples/InfixTypeMinus.hs" 8 46 8 47
                                            , srcInfoPoints = []
                                            }
-                                         1
-                                         "1"))))))))
+                                         (PromotedInteger
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan
+                                                    "tests/examples/InfixTypeMinus.hs" 8 46 8 47
+                                              , srcInfoPoints = []
+                                              }
+                                            1
+                                            "1")))))))))
                  (TyFun
                     SrcSpanInfo
                       { srcInfoSpan =
diff --git a/tests/examples/InjectiveTypeFamilies.hs.parser.golden b/tests/examples/InjectiveTypeFamilies.hs.parser.golden
--- a/tests/examples/InjectiveTypeFamilies.hs.parser.golden
+++ b/tests/examples/InjectiveTypeFamilies.hs.parser.golden
@@ -415,25 +415,19 @@
                         , srcInfoPoints = []
                         }
                       "result")
-                   (KindVar
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 34 14 35
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 34 14 35
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 14 34 14 35
-                              , srcInfoPoints = []
-                              }
-                            "k"))))))
+                         "k")))))
           (Just
              (InjectivityInfo
                 SrcSpanInfo
@@ -1022,25 +1016,19 @@
                            , srcInfoPoints = []
                            }
                          "a")
-                      (KindVar
+                      (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 21 22 22
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 21 22 22
                               , srcInfoPoints = []
                               }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 21 22 22
-                                 , srcInfoPoints = []
-                                 }
-                               "k")))))
+                            "k"))))
                 (UnkindedVar
                    SrcSpanInfo
                      { srcInfoSpan =
@@ -1071,25 +1059,19 @@
                      , srcInfoPoints = []
                      }
                    "c")
-                (KindVar
+                (TyVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 32 22 33
                      , srcInfoPoints = []
                      }
-                   (UnQual
+                   (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 32 22 33
                         , srcInfoPoints = []
                         }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 22 32 22 33
-                           , srcInfoPoints = []
-                           }
-                         "k")))))
+                      "k"))))
           (Just
              (TyVarSig
                 SrcSpanInfo
@@ -1576,25 +1558,19 @@
                      , srcInfoPoints = []
                      }
                    "b")
-                (KindVar
+                (TyVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 23 29 24
                      , srcInfoPoints = []
                      }
-                   (UnQual
+                   (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 23 29 24
                         , srcInfoPoints = []
                         }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 29 23 29 24
-                           , srcInfoPoints = []
-                           }
-                         "k")))))
+                      "k"))))
           (Just
              (TyVarSig
                 SrcSpanInfo
@@ -2988,7 +2964,7 @@
                            , srcInfoPoints = []
                            }
                          "a")
-                      (KindStar
+                      (TyStar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 27 53 28
@@ -3011,7 +2987,7 @@
                         , srcInfoPoints = []
                         }
                       "b")
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 36 53 37
@@ -3034,7 +3010,7 @@
                      , srcInfoPoints = []
                      }
                    "c")
-                (KindStar
+                (TyStar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 53 45 53 46
@@ -3519,25 +3495,19 @@
                      , srcInfoPoints = []
                      }
                    "b")
-                (KindVar
+                (TyVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 29 58 30
                      , srcInfoPoints = []
                      }
-                   (UnQual
+                   (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 29 58 30
                         , srcInfoPoints = []
                         }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 58 29 58 30
-                           , srcInfoPoints = []
-                           }
-                         "k")))))
+                      "k"))))
           (Just
              (TyVarSig
                 SrcSpanInfo
@@ -8793,25 +8763,19 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindVar
+                (TyVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 21 170 23
                      , srcInfoPoints = []
                      }
-                   (UnQual
+                   (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 21 170 23
                         , srcInfoPoints = []
                         }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 21 170 23
-                           , srcInfoPoints = []
-                           }
-                         "k1")))))
+                      "k1"))))
           (Just
              (TyVarSig
                 SrcSpanInfo
@@ -8837,25 +8801,19 @@
                         , srcInfoPoints = []
                         }
                       "r")
-                   (KindVar
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 33 170 35
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 33 170 35
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 170 33 170 35
-                              , srcInfoPoints = []
-                              }
-                            "k2"))))))
+                         "k2")))))
           (Just
              (InjectivityInfo
                 SrcSpanInfo
@@ -9220,7 +9178,7 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindStar
+                (TyStar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 176 19 176 20
@@ -9295,13 +9253,13 @@
                      , srcInfoPoints = []
                      }
                    "kproxy")
-                (KindApp
+                (TyApp
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 35
                      , srcInfoPoints = []
                      }
-                   (KindVar
+                   (TyCon
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 27 177 33
@@ -9320,25 +9278,19 @@
                               , srcInfoPoints = []
                               }
                             "KProxy")))
-                   (KindVar
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 34 177 35
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 34 177 35
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 177 34 177 35
-                              , srcInfoPoints = []
-                              }
-                            "k"))))))
+                         "k")))))
           (Just
              (TyVarSig
                 SrcSpanInfo
@@ -9458,13 +9410,13 @@
                               , srcInfoPoints = []
                               }
                             "KProxy"))))
-                (KindApp
+                (TyApp
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 41
                      , srcInfoPoints = []
                      }
-                   (KindVar
+                   (TyCon
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 30 178 36
@@ -9483,7 +9435,7 @@
                               , srcInfoPoints = []
                               }
                             "KProxy")))
-                   (KindVar
+                   (TyCon
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 178 37 178 41
@@ -9594,13 +9546,13 @@
                               , srcInfoPoints = []
                               }
                             "KProxy"))))
-                (KindApp
+                (TyApp
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 38
                      , srcInfoPoints = []
                      }
-                   (KindVar
+                   (TyCon
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 30 179 36
@@ -9619,7 +9571,7 @@
                               , srcInfoPoints = []
                               }
                             "KProxy")))
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 179 37 179 38
@@ -9729,13 +9681,13 @@
                                  , srcInfoPoints = []
                                  }
                                "KProxy"))))
-                   (KindApp
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 37
                         , srcInfoPoints = []
                         }
-                      (KindVar
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 29 181 35
@@ -9754,25 +9706,19 @@
                                  , srcInfoPoints = []
                                  }
                                "KProxy")))
-                      (KindVar
+                      (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 36 181 37
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 36 181 37
                               , srcInfoPoints = []
                               }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 36 181 37
-                                 , srcInfoPoints = []
-                                 }
-                               "k"))))))
+                            "k")))))
              (TyApp
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -9836,13 +9782,13 @@
                                  , srcInfoPoints = []
                                  }
                                "KProxy"))))
-                   (KindApp
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 65
                         , srcInfoPoints = []
                         }
-                      (KindVar
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 57 181 63
@@ -9861,25 +9807,19 @@
                                  , srcInfoPoints = []
                                  }
                                "KProxy")))
-                      (KindVar
+                      (TyVar
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 64 181 65
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (Ident
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 64 181 65
                               , srcInfoPoints = []
                               }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan =
-                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 181 64 181 65
-                                 , srcInfoPoints = []
-                                 }
-                               "k")))))))
+                            "k"))))))
       , FunBind
           SrcSpanInfo
             { srcInfoSpan =
@@ -12015,25 +11955,19 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindVar
+                (TyVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 22 217 23
                      , srcInfoPoints = []
                      }
-                   (UnQual
+                   (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 22 217 23
                         , srcInfoPoints = []
                         }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 22 217 23
-                           , srcInfoPoints = []
-                           }
-                         "k")))))
+                      "k"))))
           (Just
              (TyVarSig
                 SrcSpanInfo
@@ -12059,25 +11993,19 @@
                         , srcInfoPoints = []
                         }
                       "result")
-                   (KindVar
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 38 217 39
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 38 217 39
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 217 38 217 39
-                              , srcInfoPoints = []
-                              }
-                            "k"))))))
+                         "k")))))
           (Just
              (InjectivityInfo
                 SrcSpanInfo
@@ -12215,25 +12143,19 @@
                         , srcInfoPoints = []
                         }
                       "a")
-                   (KindVar
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 27 222 28
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 27 222 28
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 222 27 222 28
-                              , srcInfoPoints = []
-                              }
-                            "k")))))
+                         "k"))))
              (UnkindedVar
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -12556,25 +12478,19 @@
                         , srcInfoPoints = []
                         }
                       "a")
-                   (KindVar
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 30 227 31
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 30 227 31
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 227 30 227 31
-                              , srcInfoPoints = []
-                              }
-                            "k")))))
+                         "k"))))
              (UnkindedVar
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -12818,25 +12734,19 @@
                         , srcInfoPoints = []
                         }
                       "a")
-                   (KindVar
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 22 232 23
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 22 232 23
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 22 232 23
-                              , srcInfoPoints = []
-                              }
-                            "k")))))
+                         "k"))))
              (KindedVar
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -12854,25 +12764,19 @@
                      , srcInfoPoints = []
                      }
                    "b")
-                (KindVar
+                (TyVar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 31 232 32
                      , srcInfoPoints = []
                      }
-                   (UnQual
+                   (Ident
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 31 232 32
                         , srcInfoPoints = []
                         }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 31 232 32
-                           , srcInfoPoints = []
-                           }
-                         "k")))))
+                      "k"))))
           (Just
              (TyVarSig
                 SrcSpanInfo
@@ -12898,25 +12802,19 @@
                         , srcInfoPoints = []
                         }
                       "r")
-                   (KindVar
+                   (TyVar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 42 232 44
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (Ident
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 42 232 44
                            , srcInfoPoints = []
                            }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 232 42 232 44
-                              , srcInfoPoints = []
-                              }
-                            "k2"))))))
+                         "k2")))))
           (Just
              (InjectivityInfo
                 SrcSpanInfo
@@ -13079,20 +12977,20 @@
                            , srcInfoPoints = []
                            }
                          "repr")
-                      (KindFn
+                      (TyFun
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 26 236 32
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 28 236 30 ]
                            }
-                         (KindStar
+                         (TyStar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 26 236 27
                               , srcInfoPoints = []
                               })
-                         (KindStar
+                         (TyStar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 31 236 32
@@ -13115,7 +13013,7 @@
                         , srcInfoPoints = []
                         }
                       "a")
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 40 236 41
@@ -13138,7 +13036,7 @@
                      , srcInfoPoints = []
                      }
                    "b")
-                (KindStar
+                (TyStar
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 49 236 50
@@ -13169,7 +13067,7 @@
                         , srcInfoPoints = []
                         }
                       "r")
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 236 60 236 61
@@ -15569,40 +15467,53 @@
                             , SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 34 254 36
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29
+                                  SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29
+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 31
                                  , srcInfoPoints = []
                                  }
-                               "Manifold'"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan
-                                        "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan
+                                          "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/InjectiveTypeFamilies.hs" 254 20 254 29
+                                       , srcInfoPoints = []
+                                       }
+                                     "Manifold'")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan
+                                          "tests/examples/InjectiveTypeFamilies.hs" 254 30 254 31
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/MultiCtxt.hs.parser.golden b/tests/examples/MultiCtxt.hs.parser.golden
--- a/tests/examples/MultiCtxt.hs.parser.golden
+++ b/tests/examples/MultiCtxt.hs.parser.golden
@@ -72,35 +72,46 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18
-                           , srcInfoPoints = []
+                           { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18
+                              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 23
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/MultiCtxt.hs" 5 21 5 23 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 16 5 18
+                                    , srcInfoPoints = []
+                                    }
+                                  "Eq")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20
                               , srcInfoPoints = []
                               }
-                            "Eq"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 19 5 20
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (TyParen
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 24 5 37
@@ -122,35 +133,49 @@
                            , srcInfoPoints =
                                [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]
                            }
-                         (ClassA
+                         (TypeA
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34
                               , srcInfoPoints =
                                   [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]
                               }
-                            (UnQual
+                            (TyApp
                                SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29
-                                 , srcInfoPoints = []
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]
                                  }
-                               (Ident
+                               (TyCon
                                   SrcSpanInfo
-                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 34
+                                    , srcInfoPoints =
+                                        [ SrcSpan "tests/examples/MultiCtxt.hs" 5 32 5 34 ]
+                                    }
+                                  (UnQual
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan "tests/examples/MultiCtxt.hs" 5 25 5 29
+                                          , srcInfoPoints = []
+                                          }
+                                        "Show")))
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31
                                     , srcInfoPoints = []
                                     }
-                                  "Show"))
-                            [ TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")
-                            ])))
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/MultiCtxt.hs" 5 30 5 31
+                                       , srcInfoPoints = []
+                                       }
+                                     "a"))))))
                    (TyVar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/MultiCtxt.hs" 5 35 5 36
diff --git a/tests/examples/MultiParam.hs.parser.golden b/tests/examples/MultiParam.hs.parser.golden
--- a/tests/examples/MultiParam.hs.parser.golden
+++ b/tests/examples/MultiParam.hs.parser.golden
@@ -56,46 +56,64 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18
-                           , srcInfoPoints = []
+                           { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
                            }
-                         (Ident
+                         (TyApp
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18
+                              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 25
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/MultiParam.hs" 3 23 3 25 ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/MultiParam.hs" 3 8 3 18
+                                       , srcInfoPoints = []
+                                       }
+                                     "MonadError")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20
+                                    , srcInfoPoints = []
+                                    }
+                                  "e")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22
                               , srcInfoPoints = []
                               }
-                            "MonadError"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 19 3 20
-                               , srcInfoPoints = []
-                               }
-                             "e")
-                      , TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22
-                               , srcInfoPoints = []
-                               }
-                             "m")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 21 3 22
+                                 , srcInfoPoints = []
+                                 }
+                               "m"))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/MultiParam.hs" 3 26 3 35
diff --git a/tests/examples/NoStartNumIdents.hs b/tests/examples/NoStartNumIdents.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs
@@ -0,0 +1,1 @@
+1a = ()
diff --git a/tests/examples/NoStartNumIdents.hs.exactprinter.golden b/tests/examples/NoStartNumIdents.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
diff --git a/tests/examples/NoStartNumIdents.hs.parser.golden b/tests/examples/NoStartNumIdents.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs.parser.golden
@@ -0,0 +1,3 @@
+ParseFailed
+  (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1)
+  "Parse error in pattern: 1"
diff --git a/tests/examples/NoStartNumIdents.hs.prettyparser.golden b/tests/examples/NoStartNumIdents.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
diff --git a/tests/examples/NoStartNumIdents.hs.prettyprinter.golden b/tests/examples/NoStartNumIdents.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/NoStartNumIdents.hs.prettyprinter.golden
@@ -0,0 +1,1 @@
+ParseFailed (SrcLoc "tests/examples/NoStartNumIdents.hs" 2 1) "Parse error in pattern: 1"
diff --git a/tests/examples/OverloadedLabels.hs.parser.golden b/tests/examples/OverloadedLabels.hs.parser.golden
--- a/tests/examples/OverloadedLabels.hs.parser.golden
+++ b/tests/examples/OverloadedLabels.hs.parser.golden
@@ -425,54 +425,74 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
                            }
-                         (Ident
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13
+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 25
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/OverloadedLabels.hs" 19 23 19 25 ]
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/OverloadedLabels.hs" 19 6 19 13
+                                       , srcInfoPoints = []
+                                       }
+                                     "IsLabel")))
+                            (TyPromoted
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20
+                                 , srcInfoPoints = []
+                                 }
+                               (PromotedString
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20
+                                    , srcInfoPoints = []
+                                    }
+                                  "true"
+                                  "true")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22
                               , srcInfoPoints = []
                               }
-                            "IsLabel"))
-                      [ TyPromoted
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20
-                            , srcInfoPoints = []
-                            }
-                          (PromotedString
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/OverloadedLabels.hs" 19 14 19 20
-                               , srcInfoPoints = []
-                               }
-                             "true"
-                             "true")
-                      , TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22
-                               , srcInfoPoints = []
-                               }
-                             "t")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/OverloadedLabels.hs" 19 21 19 22
+                                 , srcInfoPoints = []
+                                 }
+                               "t"))))))
              (TyVar
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/PartialSignatures.hs.parser.golden b/tests/examples/PartialSignatures.hs.parser.golden
--- a/tests/examples/PartialSignatures.hs.parser.golden
+++ b/tests/examples/PartialSignatures.hs.parser.golden
@@ -4024,14 +4024,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 51 10 51 14
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 51 12 51 14 ]
+                           }
+                         Nothing))))
              (TyWildCard
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -4110,14 +4117,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 55 10 55 14
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 55 12 55 14 ]
+                           }
+                         Nothing))))
              (TyWildCard
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -4440,47 +4454,60 @@
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19
                      , srcInfoPoints =
-                         [ SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19 ]
+                         [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11
+                         , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19
+                         ]
                      }
-                   (EqualP
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 16
+                            SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19
                         , srcInfoPoints =
-                            [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11 ]
+                            [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11
+                            , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19
+                            ]
                         }
-                      (TyVar
+                      (TyEquals
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 19
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 61 10 61 11
+                               , SrcSpan "tests/examples/PartialSignatures.hs" 61 17 61 19
+                               ]
                            }
-                         (Ident
+                         (TyVar
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9
                               , srcInfoPoints = []
                               }
-                            "a"))
-                      (TyCon
-                         SrcSpanInfo
-                           { srcInfoSpan =
-                               SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16
-                           , srcInfoPoints = []
-                           }
-                         (UnQual
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PartialSignatures.hs" 61 8 61 9
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
                                   SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (UnQual
                                SrcSpanInfo
                                  { srcInfoSpan =
                                      SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16
                                  , srcInfoPoints = []
                                  }
-                               "Bool"))))))
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 61 12 61 16
+                                    , srcInfoPoints = []
+                                    }
+                                  "Bool")))))))
              (TyTuple
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -5765,14 +5792,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 82 13 82 17
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 82 15 82 17 ]
+                           }
+                         Nothing))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -6093,46 +6127,63 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 85 25 85 27
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18
+                                SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 20
                                , srcInfoPoints = []
                                }
-                             "Show"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 85 14 85 18
+                                     , srcInfoPoints = []
+                                     }
+                                   "Show")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 85 19 85 20
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 85 22 85 23
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 85 22 85 23
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -6294,79 +6345,107 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 88 33 88 35
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18
+                                SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 20
                                , srcInfoPoints = []
                                }
-                             "Show"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 88 14 88 18
+                                     , srcInfoPoints = []
+                                     }
+                                   "Show")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 19 88 20
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26
+                                SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 28
                                , srcInfoPoints = []
                                }
-                             "Enum"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 88 22 88 26
+                                     , srcInfoPoints = []
+                                     }
+                                   "Enum")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 88 27 88 28
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 88 30 88 31
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 88 30 88 31
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -6527,46 +6606,63 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 91 23 91 25
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16
+                                SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 18
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 91 14 91 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 91 17 91 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 91 20 91 21
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 91 20 91 21
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -6729,112 +6825,151 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 94 39 94 41
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16
+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 18
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 94 14 94 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 17 94 18
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24
+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 26
                                , srcInfoPoints = []
                                }
-                             "Enum"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 94 20 94 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "Enum")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 25 94 26
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32
+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 34
                                , srcInfoPoints = []
                                }
-                             "Show"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 94 28 94 32
+                                     , srcInfoPoints = []
+                                     }
+                                   "Show")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 94 33 94 34
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 94 36 94 37
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 94 36 94 37
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -6991,14 +7126,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 98 8 98 12
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 98 10 98 12 ]
+                           }
+                         Nothing))))
              (TyCon
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -7089,14 +7231,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 105 8 105 12
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 105 10 105 12 ]
+                           }
+                         Nothing))))
              (TyVar
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -7181,14 +7330,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 109 8 109 12
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 109 10 109 12 ]
+                           }
+                         Nothing))))
              (TyVar
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -10535,13 +10691,19 @@
                             , SrcSpan "tests/examples/PartialSignatures.hs" 187 10 187 12
                             ]
                         }
-                      (WildCardA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/PartialSignatures.hs" 187 7 187 8
                            , srcInfoPoints = []
                            }
-                         Nothing))))
+                         (TyWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 187 7 187 8
+                              , srcInfoPoints = []
+                              }
+                            Nothing)))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -12349,41 +12511,54 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 22
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 230 20 230 22 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 230 12 230 16
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 230 17 230 19
                               , srcInfoPoints = []
                               }
-                            "Show"))
-                      [ TyWildCard
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 230 17 230 19
-                            , srcInfoPoints = []
-                            }
-                          (Just
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/PartialSignatures.hs" 230 18 230 19
-                                  , srcInfoPoints = []
-                                  }
-                                "a"))
-                      ])))
+                            (Just
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 230 18 230 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -13138,41 +13313,54 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 32
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/PartialSignatures.hs" 246 30 246 32 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 246 22 246 26
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyWildCard
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PartialSignatures.hs" 246 27 246 29
                               , srcInfoPoints = []
                               }
-                            "Show"))
-                      [ TyWildCard
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 246 27 246 29
-                            , srcInfoPoints = []
-                            }
-                          (Just
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/PartialSignatures.hs" 246 28 246 29
-                                  , srcInfoPoints = []
-                                  }
-                                "x"))
-                      ])))
+                            (Just
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PartialSignatures.hs" 246 28 246 29
+                                    , srcInfoPoints = []
+                                    }
+                                  "x")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -14211,14 +14399,21 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]
                      }
-                   (WildCardA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]
                         }
-                      Nothing)))
+                      (TyWildCard
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PartialSignatures.hs" 261 7 261 11
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PartialSignatures.hs" 261 9 261 11 ]
+                           }
+                         Nothing))))
              (TyWildCard
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -16075,47 +16270,64 @@
                          , SrcSpan "tests/examples/PartialSignatures.hs" 289 21 289 23
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13
+                                SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 16
                                , srcInfoPoints = []
                                }
-                             "Show"))
-                       [ TyWildCard
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/PartialSignatures.hs" 289 14 289 16
-                             , srcInfoPoints = []
-                             }
-                           (Just
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/PartialSignatures.hs" 289 15 289 16
-                                   , srcInfoPoints = []
-                                   }
-                                 "a"))
-                       ]
-                   , WildCardA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 289 9 289 13
+                                     , srcInfoPoints = []
+                                     }
+                                   "Show")))
+                          (TyWildCard
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PartialSignatures.hs" 289 14 289 16
+                               , srcInfoPoints = []
+                               }
+                             (Just
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PartialSignatures.hs" 289 15 289 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "a"))))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/PartialSignatures.hs" 289 18 289 19
                          , srcInfoPoints = []
                          }
-                       Nothing
+                       (TyWildCard
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PartialSignatures.hs" 289 18 289 19
+                            , srcInfoPoints = []
+                            }
+                          Nothing)
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/PatternSynonymSignatures.hs.parser.golden b/tests/examples/PatternSynonymSignatures.hs.parser.golden
--- a/tests/examples/PatternSynonymSignatures.hs.parser.golden
+++ b/tests/examples/PatternSynonymSignatures.hs.parser.golden
@@ -57,6 +57,7 @@
           Nothing
           Nothing
           Nothing
+          Nothing
           (TyCon
              SrcSpanInfo
                { srcInfoSpan =
@@ -105,6 +106,7 @@
                       , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 6 19 6 21
                       ]
                   }))
+          Nothing
           (Just
              (CxEmpty
                 SrcSpanInfo
@@ -161,40 +163,54 @@
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 23 8 25 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 16 8 20
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22
-                            , srcInfoPoints = []
-                            }
-                          "a")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 21 8 22
+                              , srcInfoPoints = []
+                              }
+                            "a"))))))
+          Nothing
           (Just
              (CxSingle
                 SrcSpanInfo
@@ -203,40 +219,53 @@
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 35
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 33 8 35 ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 26 8 30
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 8 31 8 32
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
           (TyCon
              SrcSpanInfo
                { srcInfoSpan =
@@ -283,7 +312,7 @@
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25
                       ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25
@@ -291,34 +320,51 @@
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25
                          ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25
+                            ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 23 10 25
+                               ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/PatternSynonymSignatures.hs" 10 16 10 20
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 10 21 10 22
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
           Nothing
+          Nothing
           (TyCon
              SrcSpanInfo
                { srcInfoSpan =
@@ -365,7 +411,7 @@
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25
                       ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25
@@ -373,33 +419,50 @@
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25
                          ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25
+                            ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 25
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 23 12 25
+                               ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/PatternSynonymSignatures.hs" 12 16 12 20
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 12 21 12 22
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
+          Nothing
           (Just
              (CxEmpty
                 SrcSpanInfo
@@ -459,6 +522,7 @@
                       , SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 19 14 21
                       ]
                   }))
+          Nothing
           (Just
              (CxSingle
                 SrcSpanInfo
@@ -468,7 +532,7 @@
                       [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31
                       ]
                   }
-                (ClassA
+                (TypeA
                    SrcSpanInfo
                      { srcInfoSpan =
                          SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31
@@ -476,33 +540,49 @@
                          [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31
                          ]
                      }
-                   (UnQual
+                   (TyApp
                       SrcSpanInfo
                         { srcInfoSpan =
-                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26
-                        , srcInfoPoints = []
+                            SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31
+                            ]
                         }
-                      (Ident
+                      (TyCon
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 31
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 29 14 31
+                               ]
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan
+                                       "tests/examples/PatternSynonymSignatures.hs" 14 22 14 26
+                                 , srcInfoPoints = []
+                                 }
+                               "Show")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28
                            , srcInfoPoints = []
                            }
-                         "Show"))
-                   [ TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan =
-                             SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28
-                            , srcInfoPoints = []
-                            }
-                          "b")
-                   ])))
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonymSignatures.hs" 14 27 14 28
+                              , srcInfoPoints = []
+                              }
+                            "b"))))))
           (TyCon
              SrcSpanInfo
                { srcInfoSpan =
diff --git a/tests/examples/PatternSynonyms3.hs.parser.golden b/tests/examples/PatternSynonyms3.hs.parser.golden
--- a/tests/examples/PatternSynonyms3.hs.parser.golden
+++ b/tests/examples/PatternSynonyms3.hs.parser.golden
@@ -464,6 +464,7 @@
           Nothing
           Nothing
           Nothing
+          Nothing
           (TyFun
              SrcSpanInfo
                { srcInfoSpan =
@@ -601,6 +602,7 @@
                       , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 22 16 24
                       ]
                   }))
+          Nothing
           (Just
              (CxSingle
                 SrcSpanInfo
@@ -622,39 +624,50 @@
                          , SrcSpan "tests/examples/PatternSynonyms3.hs" 16 34 16 36
                          ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30
+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32
                            , srcInfoPoints = []
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 32
                               , srcInfoPoints = []
                               }
-                            "Show"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ]))))
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 16 26 16 30
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 16 31 16 32
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))))))
           (TyFun
              SrcSpanInfo
                { srcInfoSpan =
@@ -806,39 +819,50 @@
                             , SrcSpan "tests/examples/PatternSynonyms3.hs" 19 15 19 17
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 13
                                  , srcInfoPoints = []
                                  }
-                               "Show"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/PatternSynonyms3.hs" 19 7 19 11
+                                       , srcInfoPoints = []
+                                       }
+                                     "Show")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 19 12 19 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -991,6 +1015,7 @@
           Nothing
           Nothing
           Nothing
+          Nothing
           (TyFun
              SrcSpanInfo
                { srcInfoSpan =
@@ -1192,39 +1217,50 @@
                             , SrcSpan "tests/examples/PatternSynonyms3.hs" 25 15 25 17
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 13
                                  , srcInfoPoints = []
                                  }
-                               "Show"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/PatternSynonyms3.hs" 25 7 25 11
+                                       , srcInfoPoints = []
+                                       }
+                                     "Show")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 25 12 25 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
@@ -1483,6 +1519,7 @@
           Nothing
           Nothing
           Nothing
+          Nothing
           (TyFun
              SrcSpanInfo
                { srcInfoSpan =
@@ -1776,6 +1813,7 @@
                       , SrcSpan "tests/examples/PatternSynonyms3.hs" 34 37 34 39
                       ]
                   }))
+          Nothing
           (Just
              (CxEmpty
                 SrcSpanInfo
@@ -1845,71 +1883,83 @@
                          , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 31 36 33
                          ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29
                         , srcInfoPoints = []
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19
+                               SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29
                            , srcInfoPoints = []
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 29
                               , srcInfoPoints = []
                               }
-                            "Show"))
-                      [ TyTuple
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 29
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 21
-                                , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 22 36 23
-                                , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 28 36 29
-                                ]
-                            }
-                          Boxed
-                          [ TyVar
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22
-                                , srcInfoPoints = []
-                                }
-                              (Ident
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22
-                                   , srcInfoPoints = []
-                                   }
-                                 "a")
-                          , TyCon
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
-                                , srcInfoPoints = []
-                                }
-                              (UnQual
-                                 SrcSpanInfo
-                                   { srcInfoSpan =
-                                       SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
-                                   , srcInfoPoints = []
-                                   }
-                                 (Ident
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
-                                      , srcInfoPoints = []
-                                      }
-                                    "Bool"))
-                          ]
-                      ]))))
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/PatternSynonyms3.hs" 36 15 36 19
+                                    , srcInfoPoints = []
+                                    }
+                                  "Show")))
+                         (TyTuple
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 29
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/PatternSynonyms3.hs" 36 20 36 21
+                                  , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 22 36 23
+                                  , SrcSpan "tests/examples/PatternSynonyms3.hs" 36 28 36 29
+                                  ]
+                              }
+                            Boxed
+                            [ TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 21 36 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")
+                            , TyCon
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
+                                  , srcInfoPoints = []
+                                  }
+                                (UnQual
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/PatternSynonyms3.hs" 36 24 36 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "Bool"))
+                            ]))))))
           Nothing
+          Nothing
           (TyFun
              SrcSpanInfo
                { srcInfoSpan =
@@ -2215,6 +2265,7 @@
           Nothing
           Nothing
           Nothing
+          Nothing
           (TyApp
              SrcSpanInfo
                { srcInfoSpan =
@@ -2368,6 +2419,7 @@
           Nothing
           Nothing
           Nothing
+          Nothing
           (TyFun
              SrcSpanInfo
                { srcInfoSpan =
@@ -3237,6 +3289,8 @@
                    , srcInfoPoints = []
                    }
                  "MkT")
+              Nothing
+              Nothing
               Nothing
               (TyFun
                  SrcSpanInfo
diff --git a/tests/examples/PolyKindSigs.hs.parser.golden b/tests/examples/PolyKindSigs.hs.parser.golden
--- a/tests/examples/PolyKindSigs.hs.parser.golden
+++ b/tests/examples/PolyKindSigs.hs.parser.golden
@@ -89,18 +89,18 @@
                   }
                 "Foo"))
           (Just
-             (KindFn
+             (TyFun
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 13 7 19
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/PolyKindSigs.hs" 7 15 7 17 ]
                   }
-                (KindStar
+                (TyStar
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 13 7 14
                      , srcInfoPoints = []
                      })
-                (KindStar
+                (TyStar
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/PolyKindSigs.hs" 7 18 7 19
                      , srcInfoPoints = []
@@ -117,6 +117,8 @@
                    , srcInfoPoints = []
                    }
                  "Foo")
+              Nothing
+              Nothing
               Nothing
               (TyApp
                  SrcSpanInfo
diff --git a/tests/examples/PromotedSpace.hs b/tests/examples/PromotedSpace.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/PromotedSpace.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE DataKinds #-}
+module PromotedSpace where
+
+-- Promoted list containing promoted constructor with quote
+type PL1 = '[ 'True ]
+
+-- Promoted list containing promoted list
+type PL2 = '[ '[Int] ]
+
+-- Promoted list containing promoted tuple
+type PL3 = '[ '(Int, Bool) ]
+
+-- Promoted tuple containing promoted constructor with quote
+type PT1 = '( 'True, False )
+
+-- Promoted tuple containing promoted list
+type PT2 = '( '[Int], Bool )
+
+-- Promoted tuple containing promoted tuple
+type PT3 = '( '(Int, Bool), Char )
diff --git a/tests/examples/PromotedSpace.hs.exactprinter.golden b/tests/examples/PromotedSpace.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/PromotedSpace.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/PromotedSpace.hs.parser.golden b/tests/examples/PromotedSpace.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/PromotedSpace.hs.parser.golden
@@ -0,0 +1,617 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 1 21 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 21 1 21 1
+            , SrcSpan "tests/examples/PromotedSpace.hs" 21 1 21 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 27
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 7
+                  , SrcSpan "tests/examples/PromotedSpace.hs" 2 22 2 27
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 2 8 2 21
+                 , srcInfoPoints = []
+                 }
+               "PromotedSpace")
+            Nothing
+            Nothing))
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 27
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 13
+                , SrcSpan "tests/examples/PromotedSpace.hs" 1 24 1 27
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 14 1 23
+                , srcInfoPoints = []
+                }
+              "DataKinds"
+          ]
+      ]
+      []
+      [ TypeDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 22
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 5
+                , SrcSpan "tests/examples/PromotedSpace.hs" 5 10 5 11
+                ]
+            }
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 6 5 9
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 6 5 9
+                  , srcInfoPoints = []
+                  }
+                "PL1"))
+          (TyPromoted
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 22
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 13
+                   , SrcSpan "tests/examples/PromotedSpace.hs" 5 21 5 22
+                   ]
+               }
+             (PromotedList
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 22
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 13
+                      , SrcSpan "tests/examples/PromotedSpace.hs" 5 21 5 22
+                      ]
+                  }
+                True
+                [ TyPromoted
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 20
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 16 ]
+                      }
+                    (PromotedCon
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 16 ]
+                         }
+                       True
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 16 5 20
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 16 5 20
+                               , srcInfoPoints = []
+                               }
+                             "True")))
+                ]))
+      , TypeDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 23
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 5
+                , SrcSpan "tests/examples/PromotedSpace.hs" 8 10 8 11
+                ]
+            }
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 6 8 9
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 6 8 9
+                  , srcInfoPoints = []
+                  }
+                "PL2"))
+          (TyPromoted
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 23
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 13
+                   , SrcSpan "tests/examples/PromotedSpace.hs" 8 22 8 23
+                   ]
+               }
+             (PromotedList
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 23
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 13
+                      , SrcSpan "tests/examples/PromotedSpace.hs" 8 22 8 23
+                      ]
+                  }
+                True
+                [ TyPromoted
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 21
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 16
+                          , SrcSpan "tests/examples/PromotedSpace.hs" 8 20 8 21
+                          ]
+                      }
+                    (PromotedList
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 16
+                             , SrcSpan "tests/examples/PromotedSpace.hs" 8 20 8 21
+                             ]
+                         }
+                       True
+                       [ TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20
+                                   , srcInfoPoints = []
+                                   }
+                                 "Int"))
+                       ])
+                ]))
+      , TypeDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 29
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 5
+                , SrcSpan "tests/examples/PromotedSpace.hs" 11 10 11 11
+                ]
+            }
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 11 6 11 9
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 11 6 11 9
+                  , srcInfoPoints = []
+                  }
+                "PL3"))
+          (TyPromoted
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 29
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 13
+                   , SrcSpan "tests/examples/PromotedSpace.hs" 11 28 11 29
+                   ]
+               }
+             (PromotedList
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 29
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 13
+                      , SrcSpan "tests/examples/PromotedSpace.hs" 11 28 11 29
+                      ]
+                  }
+                True
+                [ TyPromoted
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 27
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 16
+                          , SrcSpan "tests/examples/PromotedSpace.hs" 11 20 11 21
+                          , SrcSpan "tests/examples/PromotedSpace.hs" 11 26 11 27
+                          ]
+                      }
+                    (PromotedTuple
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 16
+                             , SrcSpan "tests/examples/PromotedSpace.hs" 11 20 11 21
+                             , SrcSpan "tests/examples/PromotedSpace.hs" 11 26 11 27
+                             ]
+                         }
+                       [ TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20
+                                   , srcInfoPoints = []
+                                   }
+                                 "Int"))
+                       , TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26
+                                   , srcInfoPoints = []
+                                   }
+                                 "Bool"))
+                       ])
+                ]))
+      , TypeDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 29
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 5
+                , SrcSpan "tests/examples/PromotedSpace.hs" 14 10 14 11
+                ]
+            }
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 14 6 14 9
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 14 6 14 9
+                  , srcInfoPoints = []
+                  }
+                "PT1"))
+          (TyPromoted
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 29
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 13
+                   , SrcSpan "tests/examples/PromotedSpace.hs" 14 20 14 21
+                   , SrcSpan "tests/examples/PromotedSpace.hs" 14 28 14 29
+                   ]
+               }
+             (PromotedTuple
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 29
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 13
+                      , SrcSpan "tests/examples/PromotedSpace.hs" 14 20 14 21
+                      , SrcSpan "tests/examples/PromotedSpace.hs" 14 28 14 29
+                      ]
+                  }
+                [ TyPromoted
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 20
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 16 ]
+                      }
+                    (PromotedCon
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 16 ]
+                         }
+                       True
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PromotedSpace.hs" 14 16 14 20
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/PromotedSpace.hs" 14 16 14 20
+                               , srcInfoPoints = []
+                               }
+                             "True")))
+                , TyCon
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27
+                            , srcInfoPoints = []
+                            }
+                          "False"))
+                ]))
+      , TypeDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 29
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 5
+                , SrcSpan "tests/examples/PromotedSpace.hs" 17 10 17 11
+                ]
+            }
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 17 6 17 9
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 17 6 17 9
+                  , srcInfoPoints = []
+                  }
+                "PT2"))
+          (TyPromoted
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 29
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 13
+                   , SrcSpan "tests/examples/PromotedSpace.hs" 17 21 17 22
+                   , SrcSpan "tests/examples/PromotedSpace.hs" 17 28 17 29
+                   ]
+               }
+             (PromotedTuple
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 29
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 13
+                      , SrcSpan "tests/examples/PromotedSpace.hs" 17 21 17 22
+                      , SrcSpan "tests/examples/PromotedSpace.hs" 17 28 17 29
+                      ]
+                  }
+                [ TyPromoted
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 21
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 16
+                          , SrcSpan "tests/examples/PromotedSpace.hs" 17 20 17 21
+                          ]
+                      }
+                    (PromotedList
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 21
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 16
+                             , SrcSpan "tests/examples/PromotedSpace.hs" 17 20 17 21
+                             ]
+                         }
+                       True
+                       [ TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20
+                                   , srcInfoPoints = []
+                                   }
+                                 "Int"))
+                       ])
+                , TyCon
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27
+                            , srcInfoPoints = []
+                            }
+                          "Bool"))
+                ]))
+      , TypeDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 35
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 5
+                , SrcSpan "tests/examples/PromotedSpace.hs" 20 10 20 11
+                ]
+            }
+          (DHead
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 20 6 20 9
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 20 6 20 9
+                  , srcInfoPoints = []
+                  }
+                "PT3"))
+          (TyPromoted
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 35
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 13
+                   , SrcSpan "tests/examples/PromotedSpace.hs" 20 27 20 28
+                   , SrcSpan "tests/examples/PromotedSpace.hs" 20 34 20 35
+                   ]
+               }
+             (PromotedTuple
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 35
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 13
+                      , SrcSpan "tests/examples/PromotedSpace.hs" 20 27 20 28
+                      , SrcSpan "tests/examples/PromotedSpace.hs" 20 34 20 35
+                      ]
+                  }
+                [ TyPromoted
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 27
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 16
+                          , SrcSpan "tests/examples/PromotedSpace.hs" 20 20 20 21
+                          , SrcSpan "tests/examples/PromotedSpace.hs" 20 26 20 27
+                          ]
+                      }
+                    (PromotedTuple
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 27
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 16
+                             , SrcSpan "tests/examples/PromotedSpace.hs" 20 20 20 21
+                             , SrcSpan "tests/examples/PromotedSpace.hs" 20 26 20 27
+                             ]
+                         }
+                       [ TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20
+                                   , srcInfoPoints = []
+                                   }
+                                 "Int"))
+                       , TyCon
+                           SrcSpanInfo
+                             { srcInfoSpan =
+                                 SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan =
+                                    SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan =
+                                       SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26
+                                   , srcInfoPoints = []
+                                   }
+                                 "Bool"))
+                       ])
+                , TyCon
+                    SrcSpanInfo
+                      { srcInfoSpan =
+                          SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan =
+                             SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan =
+                                SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33
+                            , srcInfoPoints = []
+                            }
+                          "Char"))
+                ]))
+      ]
+  , [ Comment
+        False
+        (SrcSpan "tests/examples/PromotedSpace.hs" 4 1 4 60)
+        " Promoted list containing promoted constructor with quote"
+    , Comment
+        False
+        (SrcSpan "tests/examples/PromotedSpace.hs" 7 1 7 42)
+        " Promoted list containing promoted list"
+    , Comment
+        False
+        (SrcSpan "tests/examples/PromotedSpace.hs" 10 1 10 43)
+        " Promoted list containing promoted tuple"
+    , Comment
+        False
+        (SrcSpan "tests/examples/PromotedSpace.hs" 13 1 13 61)
+        " Promoted tuple containing promoted constructor with quote"
+    , Comment
+        False
+        (SrcSpan "tests/examples/PromotedSpace.hs" 16 1 16 43)
+        " Promoted tuple containing promoted list"
+    , Comment
+        False
+        (SrcSpan "tests/examples/PromotedSpace.hs" 19 1 19 44)
+        " Promoted tuple containing promoted tuple"
+    ]
+  )
diff --git a/tests/examples/PromotedSpace.hs.prettyparser.golden b/tests/examples/PromotedSpace.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/PromotedSpace.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/PromotedSpace.hs.prettyprinter.golden b/tests/examples/PromotedSpace.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/PromotedSpace.hs.prettyprinter.golden
@@ -0,0 +1,14 @@
+{-# LANGUAGE DataKinds #-}
+module PromotedSpace where
+
+type PL1 = '[ 'True]
+
+type PL2 = '[ '[Int]]
+
+type PL3 = '[ '(Int, Bool)]
+
+type PT1 = '( 'True, False)
+
+type PT2 = '( '[Int], Bool)
+
+type PT3 = '( '(Int, Bool), Char)
diff --git a/tests/examples/QuantifiedConstraints.hs b/tests/examples/QuantifiedConstraints.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE ExplicitForAll #-}
+{-# LANGUAGE QuantifiedConstraints #-}
+
+class (forall a. Eq (f a)) => C f
diff --git a/tests/examples/QuantifiedConstraints.hs.exactprinter.golden b/tests/examples/QuantifiedConstraints.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/QuantifiedConstraints.hs.parser.golden b/tests/examples/QuantifiedConstraints.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs.parser.golden
@@ -0,0 +1,222 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan =
+            SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 5 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 5 1 5 1
+            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 5 1 5 1
+            ]
+        }
+      Nothing
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 32
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 1 1 13
+                , SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 29 1 32
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/QuantifiedConstraints.hs" 1 14 1 28
+                , srcInfoPoints = []
+                }
+              "ExplicitForAll"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 1 2 13
+                , SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 36 2 39
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/QuantifiedConstraints.hs" 2 14 2 35
+                , srcInfoPoints = []
+                }
+              "QuantifiedConstraints"
+          ]
+      ]
+      []
+      [ ClassDecl
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 34
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 1 4 6 ]
+            }
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 30
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 8
+                      , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 26 4 27
+                      , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 28 4 30
+                      ]
+                  }
+                (ParenA
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 30
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 7 4 8
+                         , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 26 4 27
+                         , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 28 4 30
+                         ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 26
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 14
+                            , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 16 4 17
+                            ]
+                        }
+                      (TyForall
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 26
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 8 4 14
+                               , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 16 4 17
+                               ]
+                           }
+                         (Just
+                            [ UnkindedVar
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 15 4 16
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 15 4 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")
+                            ])
+                         Nothing
+                         (TyApp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 26
+                              , srcInfoPoints = []
+                              }
+                            (TyCon
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 20
+                                 , srcInfoPoints = []
+                                 }
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 18 4 20
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/QuantifiedConstraints.hs" 4 18 4 20
+                                       , srcInfoPoints = []
+                                       }
+                                     "Eq")))
+                            (TyParen
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 21 4 26
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 21 4 22
+                                     , SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 25 4 26
+                                     ]
+                                 }
+                               (TyApp
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 22 4 25
+                                    , srcInfoPoints = []
+                                    }
+                                  (TyVar
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/QuantifiedConstraints.hs" 4 22 4 23
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan
+                                                "tests/examples/QuantifiedConstraints.hs" 4 22 4 23
+                                          , srcInfoPoints = []
+                                          }
+                                        "f"))
+                                  (TyVar
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan
+                                             "tests/examples/QuantifiedConstraints.hs" 4 24 4 25
+                                       , srcInfoPoints = []
+                                       }
+                                     (Ident
+                                        SrcSpanInfo
+                                          { srcInfoSpan =
+                                              SrcSpan
+                                                "tests/examples/QuantifiedConstraints.hs" 4 24 4 25
+                                          , srcInfoPoints = []
+                                          }
+                                        "a"))))))))))
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 34
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 32
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 31 4 32
+                     , srcInfoPoints = []
+                     }
+                   "C"))
+             (UnkindedVar
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 33 4 34
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/QuantifiedConstraints.hs" 4 33 4 34
+                     , srcInfoPoints = []
+                     }
+                   "f")))
+          []
+          Nothing
+      ]
+  , []
+  )
diff --git a/tests/examples/QuantifiedConstraints.hs.prettyparser.golden b/tests/examples/QuantifiedConstraints.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/QuantifiedConstraints.hs.prettyprinter.golden b/tests/examples/QuantifiedConstraints.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/QuantifiedConstraints.hs.prettyprinter.golden
@@ -0,0 +1,4 @@
+{-# LANGUAGE ExplicitForAll #-}
+{-# LANGUAGE QuantifiedConstraints #-}
+
+class (forall a . Eq (f a)) => C f
diff --git a/tests/examples/RCategory.hs.parser.golden b/tests/examples/RCategory.hs.parser.golden
--- a/tests/examples/RCategory.hs.parser.golden
+++ b/tests/examples/RCategory.hs.parser.golden
@@ -286,1650 +286,1928 @@
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/RCategory.hs" 15 30 15 32 ]
                          }
-                       (KindVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43
-                            , srcInfoPoints = []
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43
-                                  , srcInfoPoints = []
-                                  }
-                                "Constraint")))))
-                 Nothing
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 19 16
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/RCategory.hs" 18 6 18 8 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 19 16
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/RCategory.hs" 18 6 18 8 ]
-                      }
-                    [ Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 18 5
-                          , srcInfoPoints = []
-                          }
-                        "id"
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 16
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxSingle
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
-                               }
-                             (ClassA
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
-                                  }
-                                (UnQual
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 18 9 18 22
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 18 9 18 22
-                                        , srcInfoPoints = []
-                                        }
-                                      "RCategoryCtxt"))
-                                [ TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 18 23 18 26
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 18 23 18 26
-                                         , srcInfoPoints = []
-                                         }
-                                       "cat")
-                                , TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 18 27 18 28
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 18 27 18 28
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                , TyVar
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 18 29 18 30
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 18 29 18 30
-                                         , srcInfoPoints = []
-                                         }
-                                       "a")
-                                ])))
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 16
-                            , srcInfoPoints = []
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 14
-                               , srcInfoPoints = []
-                               }
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 12
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 19 9 19 12
-                                     , srcInfoPoints = []
-                                     }
-                                   "cat"))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 13 19 14
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 19 13 19 14
-                                     , srcInfoPoints = []
-                                     }
-                                   "a")))
-                          (TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16
-                                  , srcInfoPoints = []
-                                  }
-                                "a")))))
-             , ClsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]
-                   }
-                 (TypeSig
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]
-                      }
-                    [ Symbol
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 22 6
-                          , srcInfoPoints =
-                              [ SrcSpan "tests/examples/RCategory.hs" 22 3 22 4
-                              , SrcSpan "tests/examples/RCategory.hs" 22 4 22 5
-                              , SrcSpan "tests/examples/RCategory.hs" 22 5 22 6
-                              ]
-                          }
-                        "."
-                    ]
-                    (TyForall
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 39
-                         , srcInfoPoints = []
-                         }
-                       Nothing
-                       (Just
-                          (CxTuple
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 9
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/RCategory.hs" 22 10 22 11
-                                   , SrcSpan "tests/examples/RCategory.hs" 22 32 22 33
-                                   , SrcSpan "tests/examples/RCategory.hs" 22 55 22 56
-                                   , SrcSpan "tests/examples/RCategory.hs" 22 78 22 79
-                                   , SrcSpan "tests/examples/RCategory.hs" 23 7 23 9
-                                   ]
-                               }
-                             [ ClassA
-                                 SrcSpanInfo
-                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 22 11 22 24
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 22 11 22 24
-                                         , srcInfoPoints = []
-                                         }
-                                       "RCategoryCtxt"))
-                                 [ TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 25 22 28
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 25 22 28
-                                          , srcInfoPoints = []
-                                          }
-                                        "cat")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 29 22 30
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 29 22 30
-                                          , srcInfoPoints = []
-                                          }
-                                        "b")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 31 22 32
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 31 22 32
-                                          , srcInfoPoints = []
-                                          }
-                                        "c")
-                                 ]
-                             , ClassA
-                                 SrcSpanInfo
-                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 22 34 22 47
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 22 34 22 47
-                                         , srcInfoPoints = []
-                                         }
-                                       "RCategoryCtxt"))
-                                 [ TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 48 22 51
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 48 22 51
-                                          , srcInfoPoints = []
-                                          }
-                                        "cat")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 52 22 53
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 52 22 53
-                                          , srcInfoPoints = []
-                                          }
-                                        "a")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 54 22 55
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 54 22 55
-                                          , srcInfoPoints = []
-                                          }
-                                        "b")
-                                 ]
-                             , ClassA
-                                 SrcSpanInfo
-                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
-                                   , srcInfoPoints = []
-                                   }
-                                 (UnQual
-                                    SrcSpanInfo
-                                      { srcInfoSpan =
-                                          SrcSpan "tests/examples/RCategory.hs" 22 57 22 70
-                                      , srcInfoPoints = []
-                                      }
-                                    (Ident
-                                       SrcSpanInfo
-                                         { srcInfoSpan =
-                                             SrcSpan "tests/examples/RCategory.hs" 22 57 22 70
-                                         , srcInfoPoints = []
-                                         }
-                                       "RCategoryCtxt"))
-                                 [ TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 71 22 74
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 71 22 74
-                                          , srcInfoPoints = []
-                                          }
-                                        "cat")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 75 22 76
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 75 22 76
-                                          , srcInfoPoints = []
-                                          }
-                                        "a")
-                                 , TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan =
-                                           SrcSpan "tests/examples/RCategory.hs" 22 77 22 78
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/RCategory.hs" 22 77 22 78
-                                          , srcInfoPoints = []
-                                          }
-                                        "c")
-                                 ]
-                             ]))
-                       (TyFun
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 39
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/RCategory.hs" 23 18 23 20 ]
-                            }
-                          (TyApp
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 17
-                               , srcInfoPoints = []
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 15
-                                  , srcInfoPoints = []
-                                  }
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 10 23 13
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 10 23 13
-                                        , srcInfoPoints = []
-                                        }
-                                      "cat"))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 14 23 15
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 14 23 15
-                                        , srcInfoPoints = []
-                                        }
-                                      "b")))
-                             (TyVar
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 16 23 17
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 16 23 17
-                                     , srcInfoPoints = []
-                                     }
-                                   "c")))
-                          (TyFun
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 39
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/RCategory.hs" 23 29 23 31 ]
-                               }
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 28
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 21 23 26
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 21 23 24
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/RCategory.hs" 23 21 23 24
-                                           , srcInfoPoints = []
-                                           }
-                                         "cat"))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 25 23 26
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/RCategory.hs" 23 25 23 26
-                                           , srcInfoPoints = []
-                                           }
-                                         "a")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 27 23 28
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 27 23 28
-                                        , srcInfoPoints = []
-                                        }
-                                      "b")))
-                             (TyApp
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 32 23 39
-                                  , srcInfoPoints = []
-                                  }
-                                (TyApp
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 32 23 37
-                                     , srcInfoPoints = []
-                                     }
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 32 23 35
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/RCategory.hs" 23 32 23 35
-                                           , srcInfoPoints = []
-                                           }
-                                         "cat"))
-                                   (TyVar
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 36 23 37
-                                        , srcInfoPoints = []
-                                        }
-                                      (Ident
-                                         SrcSpanInfo
-                                           { srcInfoSpan =
-                                               SrcSpan "tests/examples/RCategory.hs" 23 36 23 37
-                                           , srcInfoPoints = []
-                                           }
-                                         "a")))
-                                (TyVar
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 23 38 23 39
-                                     , srcInfoPoints = []
-                                     }
-                                   (Ident
-                                      SrcSpanInfo
-                                        { srcInfoSpan =
-                                            SrcSpan "tests/examples/RCategory.hs" 23 38 23 39
-                                        , srcInfoPoints = []
-                                        }
-                                      "c")))))))
-             ])
-      , RulePragmaDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 25 1 30 5
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/RCategory.hs" 25 1 25 10
-                , SrcSpan "tests/examples/RCategory.hs" 30 2 30 5
-                ]
-            }
-          [ Rule
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 1 27 27
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/RCategory.hs" 26 1 26 16
-                    , SrcSpan "tests/examples/RCategory.hs" 26 17 26 23
-                    , SrcSpan "tests/examples/RCategory.hs" 26 26 26 27
-                    , SrcSpan "tests/examples/RCategory.hs" 27 24 27 25
-                    ]
-                }
-              "identity/left"
-              Nothing
-              (Just
-                 [ RuleVar
-                     SrcSpanInfo
-                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25
-                          , srcInfoPoints = []
-                          }
-                        "p")
-                 ])
-              (InfixApp
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 23
-                   , srcInfoPoints = []
-                   }
-                 (Var
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
-                            , srcInfoPoints = []
-                            }
-                          "id")))
-                 (QVarOp
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
-                         , srcInfoPoints = []
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
-                            , srcInfoPoints = []
-                            }
-                          ".")))
-                 (Var
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
-                            , srcInfoPoints = []
-                            }
-                          "p"))))
-              (Var
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
-                   , srcInfoPoints = []
-                   }
-                 (UnQual
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
-                      , srcInfoPoints = []
-                      }
-                    (Ident
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
-                         , srcInfoPoints = []
-                         }
-                       "p")))
-          , Rule
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 1 29 27
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/RCategory.hs" 28 1 28 17
-                    , SrcSpan "tests/examples/RCategory.hs" 28 25 28 31
-                    , SrcSpan "tests/examples/RCategory.hs" 28 34 28 35
-                    , SrcSpan "tests/examples/RCategory.hs" 29 24 29 25
-                    ]
-                }
-              "identity/right"
-              Nothing
-              (Just
-                 [ RuleVar
-                     SrcSpanInfo
-                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33
-                       , srcInfoPoints = []
-                       }
-                     (Ident
-                        SrcSpanInfo
-                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33
-                          , srcInfoPoints = []
-                          }
-                        "p")
-                 ])
-              (InfixApp
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 23
-                   , srcInfoPoints = []
-                   }
-                 (Var
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
-                            , srcInfoPoints = []
-                            }
-                          "p")))
-                 (QVarOp
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
-                         , srcInfoPoints = []
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
-                            , srcInfoPoints = []
-                            }
-                          ".")))
-                 (Var
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
-                      , srcInfoPoints = []
-                      }
-                    (UnQual
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
-                            , srcInfoPoints = []
-                            }
-                          "id"))))
-              (Var
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
-                   , srcInfoPoints = []
-                   }
-                 (UnQual
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
-                      , srcInfoPoints = []
-                      }
-                    (Ident
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
-                         , srcInfoPoints = []
-                         }
-                       "p")))
-          ]
-      , InstDecl
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 1 38 0
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/RCategory.hs" 32 1 32 9
-                , SrcSpan "tests/examples/RCategory.hs" 32 25 32 30
-                , SrcSpan "tests/examples/RCategory.hs" 33 3 33 3
-                , SrcSpan "tests/examples/RCategory.hs" 34 3 34 3
-                , SrcSpan "tests/examples/RCategory.hs" 35 3 35 3
-                , SrcSpan "tests/examples/RCategory.hs" 38 1 38 0
-                ]
-            }
-          Nothing
-          (IRule
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24
-               , srcInfoPoints = []
-               }
-             Nothing
-             Nothing
-             (IHApp
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24
-                  , srcInfoPoints = []
-                  }
-                (IHCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
-                     , srcInfoPoints = []
-                     }
-                   (UnQual
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
-                           , srcInfoPoints = []
-                           }
-                         "RCategory")))
-                (TyCon
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
-                         , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
-                         , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
-                         ]
-                     }
-                   (Special
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
-                        , srcInfoPoints =
-                            [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
-                            , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
-                            , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
-                            ]
-                        }
-                      (FunCon
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
-                           , srcInfoPoints =
-                               [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
-                               , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
-                               , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
-                               ]
-                           })))))
-          (Just
-             [ InsType
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 3 33 35
-                   , srcInfoPoints =
-                       [ SrcSpan "tests/examples/RCategory.hs" 33 3 33 7
-                       , SrcSpan "tests/examples/RCategory.hs" 33 31 33 32
-                       ]
-                   }
-                 (TyApp
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 30
-                      , srcInfoPoints = []
-                      }
-                    (TyApp
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 28
-                         , srcInfoPoints = []
-                         }
-                       (TyApp
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 26
-                            , srcInfoPoints = []
-                            }
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
-                                  , srcInfoPoints = []
-                                  }
-                                (Ident
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
-                                     , srcInfoPoints = []
-                                     }
-                                   "RCategoryCtxt")))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
-                                   , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
-                                   , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
-                                   ]
-                               }
-                             (Special
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
-                                  , srcInfoPoints =
-                                      [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
-                                      , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
-                                      , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
-                                      ]
-                                  }
-                                (FunCon
-                                   SrcSpanInfo
-                                     { srcInfoSpan =
-                                         SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
-                                     , srcInfoPoints =
-                                         [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
-                                         , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
-                                         , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
-                                         ]
-                                     }))))
-                       (TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28
-                               , srcInfoPoints = []
-                               }
-                             "a")))
-                    (TyVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30
-                            , srcInfoPoints = []
-                            }
-                          "a")))
-                 (TyCon
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
-                      , srcInfoPoints =
-                          [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
-                          , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
-                          ]
-                      }
-                    (Special
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
-                             , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
-                             ]
-                         }
-                       (UnitCon
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
-                                , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
-                                ]
-                            })))
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5
-                         , srcInfoPoints = []
-                         }
-                       (Ident
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5
-                            , srcInfoPoints = []
-                            }
-                          "id"))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 6 34 18
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/RCategory.hs" 34 6 34 7 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
-                            , srcInfoPoints = []
-                            }
-                          (Qual
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
-                               , srcInfoPoints = []
-                               }
-                             (ModuleName
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
-                                  , srcInfoPoints = []
-                                  }
-                                "Prelude")
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
-                                  , srcInfoPoints = []
-                                  }
-                                "id"))))
-                    Nothing)
-             , InsDecl
-                 SrcSpanInfo
-                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20
-                   , srcInfoPoints = []
-                   }
-                 (PatBind
-                    SrcSpanInfo
-                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20
-                      , srcInfoPoints = []
-                      }
-                    (PVar
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 6
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/RCategory.hs" 35 3 35 4
-                             , SrcSpan "tests/examples/RCategory.hs" 35 4 35 5
-                             , SrcSpan "tests/examples/RCategory.hs" 35 5 35 6
-                             ]
-                         }
-                       (Symbol
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 4 35 5
-                            , srcInfoPoints = []
-                            }
-                          "."))
-                    (UnGuardedRhs
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 7 35 20
-                         , srcInfoPoints =
-                             [ SrcSpan "tests/examples/RCategory.hs" 35 7 35 8 ]
-                         }
-                       (Var
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10
-                                , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
-                                , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20
-                                ]
-                            }
-                          (Qual
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10
-                                   , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
-                                   , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20
-                                   ]
-                               }
-                             (ModuleName
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
-                                  , srcInfoPoints = []
-                                  }
-                                "Prelude")
-                             (Symbol
-                                SrcSpanInfo
-                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
-                                  , srcInfoPoints = []
-                                  }
-                                "."))))
-                    Nothing)
-             ])
-      , TypeSig
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 39 39
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/RCategory.hs" 38 7 38 9 ]
-            }
-          [ Symbol
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 38 6
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/RCategory.hs" 38 1 38 2
-                    , SrcSpan "tests/examples/RCategory.hs" 38 2 38 5
-                    , SrcSpan "tests/examples/RCategory.hs" 38 5 38 6
-                    ]
-                }
-              "<<<"
-          ]
-          (TyForall
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 39
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 9
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 38 10 38 11
-                         , SrcSpan "tests/examples/RCategory.hs" 38 32 38 33
-                         , SrcSpan "tests/examples/RCategory.hs" 38 55 38 56
-                         , SrcSpan "tests/examples/RCategory.hs" 38 78 38 79
-                         , SrcSpan "tests/examples/RCategory.hs" 38 93 38 94
-                         , SrcSpan "tests/examples/RCategory.hs" 39 7 39 9
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 24
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 24
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 25 38 28
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 25 38 28
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 29 38 30
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 29 38 30
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32
-                                , srcInfoPoints = []
-                                }
-                              "c")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 47
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 47
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 48 38 51
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 48 38 51
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 52 38 53
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 52 38 53
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 70
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 70
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 71 38 74
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 71 38 74
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 75 38 76
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 75 38 76
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78
-                                , srcInfoPoints = []
-                                }
-                              "c")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 89
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 89
-                               , srcInfoPoints = []
-                               }
-                             "RCategory"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       ]
-                   ]))
-             (TyFun
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 39
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/RCategory.hs" 39 18 39 20 ]
-                  }
-                (TyApp
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 17
-                     , srcInfoPoints = []
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 15
-                        , srcInfoPoints = []
-                        }
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13
-                              , srcInfoPoints = []
-                              }
-                            "cat"))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15
-                              , srcInfoPoints = []
-                              }
-                            "b")))
-                   (TyVar
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17
-                        , srcInfoPoints = []
-                        }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17
-                           , srcInfoPoints = []
-                           }
-                         "c")))
-                (TyFun
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 39
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 39 29 39 31 ]
-                     }
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 28
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 26
-                           , srcInfoPoints = []
-                           }
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24
-                                 , srcInfoPoints = []
-                                 }
-                               "cat"))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26
-                                 , srcInfoPoints = []
-                                 }
-                               "a")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28
-                              , srcInfoPoints = []
-                              }
-                            "b")))
-                   (TyApp
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 39
-                        , srcInfoPoints = []
-                        }
-                      (TyApp
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 37
-                           , srcInfoPoints = []
-                           }
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35
-                                 , srcInfoPoints = []
-                                 }
-                               "cat"))
-                         (TyVar
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37
-                              , srcInfoPoints = []
-                              }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37
-                                 , srcInfoPoints = []
-                                 }
-                               "a")))
-                      (TyVar
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39
-                           , srcInfoPoints = []
-                           }
-                         (Ident
-                            SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39
-                              , srcInfoPoints = []
-                              }
-                            "c"))))))
-      , PatBind
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 12
-            , srcInfoPoints = []
-            }
-          (PVar
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 6
-               , srcInfoPoints =
-                   [ SrcSpan "tests/examples/RCategory.hs" 40 1 40 2
-                   , SrcSpan "tests/examples/RCategory.hs" 40 2 40 5
-                   , SrcSpan "tests/examples/RCategory.hs" 40 5 40 6
-                   ]
-               }
-             (Symbol
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 2 40 5
-                  , srcInfoPoints = []
-                  }
-                "<<<"))
-          (UnGuardedRhs
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 7 40 12
-               , srcInfoPoints =
-                   [ SrcSpan "tests/examples/RCategory.hs" 40 7 40 8 ]
-               }
-             (Var
-                SrcSpanInfo
-                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12
-                  , srcInfoPoints =
-                      [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10
-                      , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
-                      , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12
-                      ]
-                  }
-                (UnQual
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10
-                         , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
-                         , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12
-                         ]
-                     }
-                   (Symbol
-                      SrcSpanInfo
-                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
-                        , srcInfoPoints = []
-                        }
-                      "."))))
-          Nothing
-      , TypeSig
-          SrcSpanInfo
-            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 44 39
-            , srcInfoPoints =
-                [ SrcSpan "tests/examples/RCategory.hs" 43 7 43 9 ]
-            }
-          [ Symbol
-              SrcSpanInfo
-                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 43 6
-                , srcInfoPoints =
-                    [ SrcSpan "tests/examples/RCategory.hs" 43 1 43 2
-                    , SrcSpan "tests/examples/RCategory.hs" 43 2 43 5
-                    , SrcSpan "tests/examples/RCategory.hs" 43 5 43 6
-                    ]
-                }
-              ">>>"
-          ]
-          (TyForall
-             SrcSpanInfo
-               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 39
-               , srcInfoPoints = []
-               }
-             Nothing
-             (Just
-                (CxTuple
-                   SrcSpanInfo
-                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 9
-                     , srcInfoPoints =
-                         [ SrcSpan "tests/examples/RCategory.hs" 43 10 43 11
-                         , SrcSpan "tests/examples/RCategory.hs" 43 32 43 33
-                         , SrcSpan "tests/examples/RCategory.hs" 43 55 43 56
-                         , SrcSpan "tests/examples/RCategory.hs" 43 78 43 79
-                         , SrcSpan "tests/examples/RCategory.hs" 43 93 43 94
-                         , SrcSpan "tests/examples/RCategory.hs" 44 7 44 9
-                         ]
-                     }
-                   [ ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 24
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 24
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 25 43 28
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 25 43 28
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 29 43 30
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 29 43 30
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32
-                                , srcInfoPoints = []
-                                }
-                              "c")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 47
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 47
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 48 43 51
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 48 43 51
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 52 43 53
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 52 43 53
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 70
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 70
-                               , srcInfoPoints = []
-                               }
-                             "RCategoryCtxt"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 71 43 74
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 71 43 74
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 75 43 76
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 75 43 76
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       , TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78
-                                , srcInfoPoints = []
-                                }
-                              "c")
-                       ]
-                   , ClassA
-                       SrcSpanInfo
-                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93
-                         , srcInfoPoints = []
-                         }
-                       (UnQual
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 89
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 89
-                               , srcInfoPoints = []
-                               }
-                             "RCategory"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93
-                                , srcInfoPoints = []
-                                }
-                              "cat")
-                       ]
+                       (TyCon
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43
+                            , srcInfoPoints = []
+                            }
+                          (UnQual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 15 33 15 43
+                                  , srcInfoPoints = []
+                                  }
+                                "Constraint")))))
+                 Nothing
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 19 16
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/RCategory.hs" 18 6 18 8 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 19 16
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/RCategory.hs" 18 6 18 8 ]
+                      }
+                    [ Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 3 18 5
+                          , srcInfoPoints = []
+                          }
+                        "id"
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 16
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxSingle
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
+                               }
+                             (TypeA
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
+                                     }
+                                   (TyApp
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                        , srcInfoPoints =
+                                            [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
+                                        }
+                                      (TyApp
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                           , srcInfoPoints =
+                                               [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8 ]
+                                           }
+                                         (TyCon
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/RCategory.hs" 18 9 19 8
+                                              , srcInfoPoints =
+                                                  [ SrcSpan "tests/examples/RCategory.hs" 19 6 19 8
+                                                  ]
+                                              }
+                                            (UnQual
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/RCategory.hs" 18 9 18 22
+                                                 , srcInfoPoints = []
+                                                 }
+                                               (Ident
+                                                  SrcSpanInfo
+                                                    { srcInfoSpan =
+                                                        SrcSpan
+                                                          "tests/examples/RCategory.hs" 18 9 18 22
+                                                    , srcInfoPoints = []
+                                                    }
+                                                  "RCategoryCtxt")))
+                                         (TyVar
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/RCategory.hs" 18 23 18 26
+                                              , srcInfoPoints = []
+                                              }
+                                            (Ident
+                                               SrcSpanInfo
+                                                 { srcInfoSpan =
+                                                     SrcSpan
+                                                       "tests/examples/RCategory.hs" 18 23 18 26
+                                                 , srcInfoPoints = []
+                                                 }
+                                               "cat")))
+                                      (TyVar
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 18 27 18 28
+                                           , srcInfoPoints = []
+                                           }
+                                         (Ident
+                                            SrcSpanInfo
+                                              { srcInfoSpan =
+                                                  SrcSpan "tests/examples/RCategory.hs" 18 27 18 28
+                                              , srcInfoPoints = []
+                                              }
+                                            "a")))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 18 29 18 30
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 18 29 18 30
+                                           , srcInfoPoints = []
+                                           }
+                                         "a"))))))
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 16
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 14
+                               , srcInfoPoints = []
+                               }
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 9 19 12
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 19 9 19 12
+                                     , srcInfoPoints = []
+                                     }
+                                   "cat"))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 13 19 14
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 19 13 19 14
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 19 15 19 16
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))))
+             , ClsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]
+                   }
+                 (TypeSig
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 23 39
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/RCategory.hs" 22 7 22 9 ]
+                      }
+                    [ Symbol
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 3 22 6
+                          , srcInfoPoints =
+                              [ SrcSpan "tests/examples/RCategory.hs" 22 3 22 4
+                              , SrcSpan "tests/examples/RCategory.hs" 22 4 22 5
+                              , SrcSpan "tests/examples/RCategory.hs" 22 5 22 6
+                              ]
+                          }
+                        "."
+                    ]
+                    (TyForall
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 39
+                         , srcInfoPoints = []
+                         }
+                       Nothing
+                       (Just
+                          (CxTuple
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 10 23 9
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/RCategory.hs" 22 10 22 11
+                                   , SrcSpan "tests/examples/RCategory.hs" 22 32 22 33
+                                   , SrcSpan "tests/examples/RCategory.hs" 22 55 22 56
+                                   , SrcSpan "tests/examples/RCategory.hs" 22 78 22 79
+                                   , SrcSpan "tests/examples/RCategory.hs" 23 7 23 9
+                                   ]
+                               }
+                             [ TypeA
+                                 SrcSpanInfo
+                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                   , srcInfoPoints = []
+                                   }
+                                 (TyApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                      , srcInfoPoints = []
+                                      }
+                                    (TyApp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (TyApp
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                            , srcInfoPoints = []
+                                            }
+                                          (TyCon
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 11 22 32
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 11 22 24
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/RCategory.hs" 22 11 22 24
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "RCategoryCtxt")))
+                                          (TyVar
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 25 22 28
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 25 22 28
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "cat")))
+                                       (TyVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 29 22 30
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 29 22 30
+                                               , srcInfoPoints = []
+                                               }
+                                             "b")))
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 31 22 32
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 31 22 32
+                                            , srcInfoPoints = []
+                                            }
+                                          "c")))
+                             , TypeA
+                                 SrcSpanInfo
+                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                   , srcInfoPoints = []
+                                   }
+                                 (TyApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                      , srcInfoPoints = []
+                                      }
+                                    (TyApp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                         , srcInfoPoints = []
+                                         }
+                                       (TyApp
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                            , srcInfoPoints = []
+                                            }
+                                          (TyCon
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 34 22 55
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 34 22 47
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/RCategory.hs" 22 34 22 47
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "RCategoryCtxt")))
+                                          (TyVar
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 48 22 51
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 48 22 51
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "cat")))
+                                       (TyVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 52 22 53
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 52 22 53
+                                               , srcInfoPoints = []
+                                               }
+                                             "a")))
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 54 22 55
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 54 22 55
+                                            , srcInfoPoints = []
+                                            }
+                                          "b")))
+                             , TypeA
+                                 SrcSpanInfo
+                                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                   , srcInfoPoints = []
+                                   }
+                                 (TyApp
+                                    SrcSpanInfo
+                                      { srcInfoSpan =
+                                          SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                      , srcInfoPoints = []
+                                      }
+                                    (TyApp
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                         , srcInfoPoints = []
+                                         }
+                                       (TyApp
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                            , srcInfoPoints = []
+                                            }
+                                          (TyCon
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 57 22 78
+                                               , srcInfoPoints = []
+                                               }
+                                             (UnQual
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 57 22 70
+                                                  , srcInfoPoints = []
+                                                  }
+                                                (Ident
+                                                   SrcSpanInfo
+                                                     { srcInfoSpan =
+                                                         SrcSpan
+                                                           "tests/examples/RCategory.hs" 22 57 22 70
+                                                     , srcInfoPoints = []
+                                                     }
+                                                   "RCategoryCtxt")))
+                                          (TyVar
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 71 22 74
+                                               , srcInfoPoints = []
+                                               }
+                                             (Ident
+                                                SrcSpanInfo
+                                                  { srcInfoSpan =
+                                                      SrcSpan
+                                                        "tests/examples/RCategory.hs" 22 71 22 74
+                                                  , srcInfoPoints = []
+                                                  }
+                                                "cat")))
+                                       (TyVar
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 75 22 76
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/RCategory.hs" 22 75 22 76
+                                               , srcInfoPoints = []
+                                               }
+                                             "a")))
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/RCategory.hs" 22 77 22 78
+                                         , srcInfoPoints = []
+                                         }
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/RCategory.hs" 22 77 22 78
+                                            , srcInfoPoints = []
+                                            }
+                                          "c")))
+                             ]))
+                       (TyFun
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 39
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/RCategory.hs" 23 18 23 20 ]
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 17
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 10 23 15
+                                  , srcInfoPoints = []
+                                  }
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 10 23 13
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 10 23 13
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat"))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 14 23 15
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 14 23 15
+                                        , srcInfoPoints = []
+                                        }
+                                      "b")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 16 23 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 16 23 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "c")))
+                          (TyFun
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 39
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/RCategory.hs" 23 29 23 31 ]
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 21 23 28
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 21 23 26
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 21 23 24
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 23 21 23 24
+                                           , srcInfoPoints = []
+                                           }
+                                         "cat"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 25 23 26
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 23 25 23 26
+                                           , srcInfoPoints = []
+                                           }
+                                         "a")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 27 23 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 27 23 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "b")))
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 23 32 23 39
+                                  , srcInfoPoints = []
+                                  }
+                                (TyApp
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 32 23 37
+                                     , srcInfoPoints = []
+                                     }
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 32 23 35
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 23 32 23 35
+                                           , srcInfoPoints = []
+                                           }
+                                         "cat"))
+                                   (TyVar
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 36 23 37
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 23 36 23 37
+                                           , srcInfoPoints = []
+                                           }
+                                         "a")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 23 38 23 39
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 23 38 23 39
+                                        , srcInfoPoints = []
+                                        }
+                                      "c")))))))
+             ])
+      , RulePragmaDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 25 1 30 5
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/RCategory.hs" 25 1 25 10
+                , SrcSpan "tests/examples/RCategory.hs" 30 2 30 5
+                ]
+            }
+          [ Rule
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 1 27 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/RCategory.hs" 26 1 26 16
+                    , SrcSpan "tests/examples/RCategory.hs" 26 17 26 23
+                    , SrcSpan "tests/examples/RCategory.hs" 26 26 26 27
+                    , SrcSpan "tests/examples/RCategory.hs" 27 24 27 25
+                    ]
+                }
+              "identity/left"
+              Nothing
+              (Just
+                 [ RuleVar
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 26 24 26 25
+                          , srcInfoPoints = []
+                          }
+                        "p")
+                 ])
+              (InfixApp
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 23
+                   , srcInfoPoints = []
+                   }
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 17 27 19
+                            , srcInfoPoints = []
+                            }
+                          "id")))
+                 (QVarOp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
+                         , srcInfoPoints = []
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 20 27 21
+                            , srcInfoPoints = []
+                            }
+                          ".")))
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 22 27 23
+                            , srcInfoPoints = []
+                            }
+                          "p"))))
+              (Var
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
+                   , srcInfoPoints = []
+                   }
+                 (UnQual
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 27 26 27 27
+                         , srcInfoPoints = []
+                         }
+                       "p")))
+          , Rule
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 1 29 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/RCategory.hs" 28 1 28 17
+                    , SrcSpan "tests/examples/RCategory.hs" 28 25 28 31
+                    , SrcSpan "tests/examples/RCategory.hs" 28 34 28 35
+                    , SrcSpan "tests/examples/RCategory.hs" 29 24 29 25
+                    ]
+                }
+              "identity/right"
+              Nothing
+              (Just
+                 [ RuleVar
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33
+                       , srcInfoPoints = []
+                       }
+                     (Ident
+                        SrcSpanInfo
+                          { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 28 32 28 33
+                          , srcInfoPoints = []
+                          }
+                        "p")
+                 ])
+              (InfixApp
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 23
+                   , srcInfoPoints = []
+                   }
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 17 29 18
+                            , srcInfoPoints = []
+                            }
+                          "p")))
+                 (QVarOp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
+                         , srcInfoPoints = []
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 19 29 20
+                            , srcInfoPoints = []
+                            }
+                          ".")))
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 21 29 23
+                            , srcInfoPoints = []
+                            }
+                          "id"))))
+              (Var
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
+                   , srcInfoPoints = []
+                   }
+                 (UnQual
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
+                      , srcInfoPoints = []
+                      }
+                    (Ident
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 29 26 29 27
+                         , srcInfoPoints = []
+                         }
+                       "p")))
+          ]
+      , InstDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 1 38 0
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/RCategory.hs" 32 1 32 9
+                , SrcSpan "tests/examples/RCategory.hs" 32 25 32 30
+                , SrcSpan "tests/examples/RCategory.hs" 33 3 33 3
+                , SrcSpan "tests/examples/RCategory.hs" 34 3 34 3
+                , SrcSpan "tests/examples/RCategory.hs" 35 3 35 3
+                , SrcSpan "tests/examples/RCategory.hs" 38 1 38 0
+                ]
+            }
+          Nothing
+          (IRule
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24
+               , srcInfoPoints = []
+               }
+             Nothing
+             Nothing
+             (IHApp
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 24
+                  , srcInfoPoints = []
+                  }
+                (IHCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 10 32 19
+                           , srcInfoPoints = []
+                           }
+                         "RCategory")))
+                (TyCon
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
+                         , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
+                         , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
+                            , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
+                            , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
+                            ]
+                        }
+                      (FunCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 32 20 32 24
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/RCategory.hs" 32 20 32 21
+                               , SrcSpan "tests/examples/RCategory.hs" 32 21 32 23
+                               , SrcSpan "tests/examples/RCategory.hs" 32 23 32 24
+                               ]
+                           })))))
+          (Just
+             [ InsType
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 3 33 35
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/RCategory.hs" 33 3 33 7
+                       , SrcSpan "tests/examples/RCategory.hs" 33 31 33 32
+                       ]
+                   }
+                 (TyApp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 30
+                      , srcInfoPoints = []
+                      }
+                    (TyApp
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 28
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 26
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 33 8 33 21
+                                     , srcInfoPoints = []
+                                     }
+                                   "RCategoryCtxt")))
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
+                                   , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
+                                   , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
+                                   ]
+                               }
+                             (Special
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
+                                  , srcInfoPoints =
+                                      [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
+                                      , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
+                                      , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
+                                      ]
+                                  }
+                                (FunCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 33 22 33 26
+                                     , srcInfoPoints =
+                                         [ SrcSpan "tests/examples/RCategory.hs" 33 22 33 23
+                                         , SrcSpan "tests/examples/RCategory.hs" 33 23 33 25
+                                         , SrcSpan "tests/examples/RCategory.hs" 33 25 33 26
+                                         ]
+                                     }))))
+                       (TyVar
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 27 33 28
+                               , srcInfoPoints = []
+                               }
+                             "a")))
+                    (TyVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 29 33 30
+                            , srcInfoPoints = []
+                            }
+                          "a")))
+                 (TyCon
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
+                      , srcInfoPoints =
+                          [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
+                          , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
+                          ]
+                      }
+                    (Special
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
+                             , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
+                             ]
+                         }
+                       (UnitCon
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 33 33 33 35
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/RCategory.hs" 33 33 33 34
+                                , SrcSpan "tests/examples/RCategory.hs" 33 34 33 35
+                                ]
+                            })))
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 18
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 3 34 5
+                            , srcInfoPoints = []
+                            }
+                          "id"))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 6 34 18
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/RCategory.hs" 34 6 34 7 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
+                            , srcInfoPoints = []
+                            }
+                          (Qual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
+                               , srcInfoPoints = []
+                               }
+                             (ModuleName
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
+                                  , srcInfoPoints = []
+                                  }
+                                "Prelude")
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 34 8 34 18
+                                  , srcInfoPoints = []
+                                  }
+                                "id"))))
+                    Nothing)
+             , InsDecl
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20
+                   , srcInfoPoints = []
+                   }
+                 (PatBind
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 20
+                      , srcInfoPoints = []
+                      }
+                    (PVar
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 3 35 6
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/RCategory.hs" 35 3 35 4
+                             , SrcSpan "tests/examples/RCategory.hs" 35 4 35 5
+                             , SrcSpan "tests/examples/RCategory.hs" 35 5 35 6
+                             ]
+                         }
+                       (Symbol
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 4 35 5
+                            , srcInfoPoints = []
+                            }
+                          "."))
+                    (UnGuardedRhs
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 7 35 20
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/RCategory.hs" 35 7 35 8 ]
+                         }
+                       (Var
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20
+                            , srcInfoPoints =
+                                [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10
+                                , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
+                                , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20
+                                ]
+                            }
+                          (Qual
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 9 35 20
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/RCategory.hs" 35 9 35 10
+                                   , SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
+                                   , SrcSpan "tests/examples/RCategory.hs" 35 19 35 20
+                                   ]
+                               }
+                             (ModuleName
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
+                                  , srcInfoPoints = []
+                                  }
+                                "Prelude")
+                             (Symbol
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 35 10 35 19
+                                  , srcInfoPoints = []
+                                  }
+                                "."))))
+                    Nothing)
+             ])
+      , TypeSig
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 39 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/RCategory.hs" 38 7 38 9 ]
+            }
+          [ Symbol
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 1 38 6
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/RCategory.hs" 38 1 38 2
+                    , SrcSpan "tests/examples/RCategory.hs" 38 2 38 5
+                    , SrcSpan "tests/examples/RCategory.hs" 38 5 38 6
+                    ]
+                }
+              "<<<"
+          ]
+          (TyForall
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 39
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 10 39 9
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 38 10 38 11
+                         , SrcSpan "tests/examples/RCategory.hs" 38 32 38 33
+                         , SrcSpan "tests/examples/RCategory.hs" 38 55 38 56
+                         , SrcSpan "tests/examples/RCategory.hs" 38 78 38 79
+                         , SrcSpan "tests/examples/RCategory.hs" 38 93 38 94
+                         , SrcSpan "tests/examples/RCategory.hs" 39 7 39 9
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 11 38 32
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 11 38 24
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 38 11 38 24
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 25 38 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 25 38 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 29 38 30
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 29 38 30
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 31 38 32
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 34 38 55
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 34 38 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 38 34 38 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 48 38 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 48 38 51
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 52 38 53
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 52 38 53
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 54 38 55
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 57 38 78
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 57 38 70
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 38 57 38 70
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 71 38 74
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 38 71 38 74
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 75 38 76
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 75 38 76
+                                     , srcInfoPoints = []
+                                     }
+                                   "b")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 77 38 78
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 93
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 80 38 89
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 38 80 38 89
+                                     , srcInfoPoints = []
+                                     }
+                                   "RCategory")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 38 90 38 93
+                                  , srcInfoPoints = []
+                                  }
+                                "cat")))
+                   ]))
+             (TyFun
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 39
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/RCategory.hs" 39 18 39 20 ]
+                  }
+                (TyApp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 17
+                     , srcInfoPoints = []
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 15
+                        , srcInfoPoints = []
+                        }
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 10 39 13
+                              , srcInfoPoints = []
+                              }
+                            "cat"))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 14 39 15
+                              , srcInfoPoints = []
+                              }
+                            "b")))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 16 39 17
+                           , srcInfoPoints = []
+                           }
+                         "c")))
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 39
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 39 29 39 31 ]
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 28
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 26
+                           , srcInfoPoints = []
+                           }
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 21 39 24
+                                 , srcInfoPoints = []
+                                 }
+                               "cat"))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 25 39 26
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 27 39 28
+                              , srcInfoPoints = []
+                              }
+                            "b")))
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 39
+                        , srcInfoPoints = []
+                        }
+                      (TyApp
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 37
+                           , srcInfoPoints = []
+                           }
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 32 39 35
+                                 , srcInfoPoints = []
+                                 }
+                               "cat"))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 36 39 37
+                                 , srcInfoPoints = []
+                                 }
+                               "a")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 39 38 39 39
+                              , srcInfoPoints = []
+                              }
+                            "c"))))))
+      , PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 12
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 1 40 6
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/RCategory.hs" 40 1 40 2
+                   , SrcSpan "tests/examples/RCategory.hs" 40 2 40 5
+                   , SrcSpan "tests/examples/RCategory.hs" 40 5 40 6
+                   ]
+               }
+             (Symbol
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 2 40 5
+                  , srcInfoPoints = []
+                  }
+                "<<<"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 7 40 12
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/RCategory.hs" 40 7 40 8 ]
+               }
+             (Var
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10
+                      , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
+                      , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12
+                      ]
+                  }
+                (UnQual
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 9 40 12
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 40 9 40 10
+                         , SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
+                         , SrcSpan "tests/examples/RCategory.hs" 40 11 40 12
+                         ]
+                     }
+                   (Symbol
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 40 10 40 11
+                        , srcInfoPoints = []
+                        }
+                      "."))))
+          Nothing
+      , TypeSig
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 44 39
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/RCategory.hs" 43 7 43 9 ]
+            }
+          [ Symbol
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 1 43 6
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/RCategory.hs" 43 1 43 2
+                    , SrcSpan "tests/examples/RCategory.hs" 43 2 43 5
+                    , SrcSpan "tests/examples/RCategory.hs" 43 5 43 6
+                    ]
+                }
+              ">>>"
+          ]
+          (TyForall
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 39
+               , srcInfoPoints = []
+               }
+             Nothing
+             (Just
+                (CxTuple
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 10 44 9
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/RCategory.hs" 43 10 43 11
+                         , SrcSpan "tests/examples/RCategory.hs" 43 32 43 33
+                         , SrcSpan "tests/examples/RCategory.hs" 43 55 43 56
+                         , SrcSpan "tests/examples/RCategory.hs" 43 78 43 79
+                         , SrcSpan "tests/examples/RCategory.hs" 43 93 43 94
+                         , SrcSpan "tests/examples/RCategory.hs" 44 7 44 9
+                         ]
+                     }
+                   [ TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 11 43 32
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 11 43 24
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 43 11 43 24
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 25 43 28
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 25 43 28
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 29 43 30
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 29 43 30
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 31 43 32
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 34 43 55
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 34 43 47
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 43 34 43 47
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 48 43 51
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 48 43 51
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 52 43 53
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 52 43 53
+                                     , srcInfoPoints = []
+                                     }
+                                   "a")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 54 43 55
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                            , srcInfoPoints = []
+                            }
+                          (TyApp
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                               , srcInfoPoints = []
+                               }
+                             (TyApp
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                                  , srcInfoPoints = []
+                                  }
+                                (TyCon
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 57 43 78
+                                     , srcInfoPoints = []
+                                     }
+                                   (UnQual
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 57 43 70
+                                        , srcInfoPoints = []
+                                        }
+                                      (Ident
+                                         SrcSpanInfo
+                                           { srcInfoSpan =
+                                               SrcSpan "tests/examples/RCategory.hs" 43 57 43 70
+                                           , srcInfoPoints = []
+                                           }
+                                         "RCategoryCtxt")))
+                                (TyVar
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 71 43 74
+                                     , srcInfoPoints = []
+                                     }
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/RCategory.hs" 43 71 43 74
+                                        , srcInfoPoints = []
+                                        }
+                                      "cat")))
+                             (TyVar
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 75 43 76
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 75 43 76
+                                     , srcInfoPoints = []
+                                     }
+                                   "b")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 77 43 78
+                                  , srcInfoPoints = []
+                                  }
+                                "c")))
+                   , TypeA
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93
+                         , srcInfoPoints = []
+                         }
+                       (TyApp
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93
+                            , srcInfoPoints = []
+                            }
+                          (TyCon
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 93
+                               , srcInfoPoints = []
+                               }
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 80 43 89
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/RCategory.hs" 43 80 43 89
+                                     , srcInfoPoints = []
+                                     }
+                                   "RCategory")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/RCategory.hs" 43 90 43 93
+                                  , srcInfoPoints = []
+                                  }
+                                "cat")))
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/RCategory2.hs.parser.golden b/tests/examples/RCategory2.hs.parser.golden
--- a/tests/examples/RCategory2.hs.parser.golden
+++ b/tests/examples/RCategory2.hs.parser.golden
@@ -170,7 +170,7 @@
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/RCategory2.hs" 6 30 6 32 ]
                          }
-                       (KindVar
+                       (TyCon
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/RCategory2.hs" 6 33 6 43
                             , srcInfoPoints = []
diff --git a/tests/examples/ScopedTypeVariables.hs.parser.golden b/tests/examples/ScopedTypeVariables.hs.parser.golden
--- a/tests/examples/ScopedTypeVariables.hs.parser.golden
+++ b/tests/examples/ScopedTypeVariables.hs.parser.golden
@@ -363,40 +363,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28
+                                  SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 33
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 31 11 33 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 26 11 28
+                                    , srcInfoPoints = []
+                                    }
+                                  "Eq")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30
                               , srcInfoPoints = []
                               }
-                            "Eq"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30
-                               , srcInfoPoints = []
-                               }
-                             "x")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/ScopedTypeVariables.hs" 11 29 11 30
+                                 , srcInfoPoints = []
+                                 }
+                               "x"))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/SingleClassAsst.hs.parser.golden b/tests/examples/SingleClassAsst.hs.parser.golden
--- a/tests/examples/SingleClassAsst.hs.parser.golden
+++ b/tests/examples/SingleClassAsst.hs.parser.golden
@@ -74,39 +74,50 @@
                             , SrcSpan "tests/examples/SingleClassAsst.hs" 3 15 3 17
                             ]
                         }
-                      (ClassA
+                      (TypeA
                          SrcSpanInfo
                            { srcInfoSpan =
                                SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (TyApp
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11
+                                  SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13
                               , srcInfoPoints = []
                               }
-                            (Ident
+                            (TyCon
                                SrcSpanInfo
                                  { srcInfoSpan =
-                                     SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11
+                                     SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 13
                                  , srcInfoPoints = []
                                  }
-                               "Eq"))
-                         [ TyVar
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13
-                               , srcInfoPoints = []
-                               }
-                             (Ident
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13
-                                  , srcInfoPoints = []
-                                  }
-                                "a")
-                         ]))))
+                               (UnQual
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/SingleClassAsst.hs" 3 9 3 11
+                                       , srcInfoPoints = []
+                                       }
+                                     "Eq")))
+                            (TyVar
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/SingleClassAsst.hs" 3 12 3 13
+                                    , srcInfoPoints = []
+                                    }
+                                  "a")))))))
              (TyFun
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/SpecializeInstance.hs.parser.golden b/tests/examples/SpecializeInstance.hs.parser.golden
--- a/tests/examples/SpecializeInstance.hs.parser.golden
+++ b/tests/examples/SpecializeInstance.hs.parser.golden
@@ -43,40 +43,53 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15
+                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 20
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/SpecializeInstance.hs" 1 18 1 20 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/SpecializeInstance.hs" 1 10 1 15
+                                    , srcInfoPoints = []
+                                    }
+                                  "Sized")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17
                               , srcInfoPoints = []
                               }
-                            "Sized"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/SpecializeInstance.hs" 1 16 1 17
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (IHApp
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/SpecializePhaseControl.hs.parser.golden b/tests/examples/SpecializePhaseControl.hs.parser.golden
--- a/tests/examples/SpecializePhaseControl.hs.parser.golden
+++ b/tests/examples/SpecializePhaseControl.hs.parser.golden
@@ -331,72 +331,95 @@
                          , SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 26 6 28
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10
+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 12
                                , srcInfoPoints = []
                                }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 7 6 10
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 11 6 12
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 22
+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 22
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 24
                                , srcInfoPoints = []
                                }
-                             "Integral"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 14 6 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan
+                                           "tests/examples/SpecializePhaseControl.hs" 6 14 6 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Integral")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 6 23 6 24
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
                    ]))
              (TyFun
                 SrcSpanInfo
@@ -810,72 +833,96 @@
                          , SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 26 14 28
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 10
+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 10
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 12
                                , srcInfoPoints = []
                                }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 7 14 10
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan
+                                           "tests/examples/SpecializePhaseControl.hs" 14 7 14 10
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 11 14 12
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 22
+                                SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 22
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 24
                                , srcInfoPoints = []
                                }
-                             "Integral"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24
-                                , srcInfoPoints = []
-                                }
-                              "b")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 14 14 22
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan
+                                           "tests/examples/SpecializePhaseControl.hs" 14 14 14 22
+                                     , srcInfoPoints = []
+                                     }
+                                   "Integral")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/SpecializePhaseControl.hs" 14 23 14 24
+                                  , srcInfoPoints = []
+                                  }
+                                "b")))
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/T11727.hs.parser.golden b/tests/examples/T11727.hs.parser.golden
--- a/tests/examples/T11727.hs.parser.golden
+++ b/tests/examples/T11727.hs.parser.golden
@@ -72,6 +72,7 @@
           Nothing
           Nothing
           Nothing
+          Nothing
           (TyCon
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/T11727.hs" 5 16 5 19
diff --git a/tests/examples/T326.hs b/tests/examples/T326.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/T326.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE TypeApplications #-}
+module T326 where
+
+(@:) a b = a
diff --git a/tests/examples/T326.hs.exactprinter.golden b/tests/examples/T326.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/T326.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/T326.hs.parser.golden b/tests/examples/T326.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/T326.hs.parser.golden
@@ -0,0 +1,116 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 1 5 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/T326.hs" 1 1 1 1
+            , SrcSpan "tests/examples/T326.hs" 2 1 2 1
+            , SrcSpan "tests/examples/T326.hs" 2 1 2 1
+            , SrcSpan "tests/examples/T326.hs" 4 1 4 1
+            , SrcSpan "tests/examples/T326.hs" 5 1 5 1
+            , SrcSpan "tests/examples/T326.hs" 5 1 5 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 2 1 2 18
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/T326.hs" 2 1 2 7
+                  , SrcSpan "tests/examples/T326.hs" 2 13 2 18
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 2 8 2 12
+                 , srcInfoPoints = []
+                 }
+               "T326")
+            Nothing
+            Nothing))
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 1 1 34
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/T326.hs" 1 1 1 13
+                , SrcSpan "tests/examples/T326.hs" 1 31 1 34
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 14 1 30
+                , srcInfoPoints = []
+                }
+              "TypeApplications"
+          ]
+      ]
+      []
+      [ FunBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 1 4 13
+            , srcInfoPoints = []
+            }
+          [ Match
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 1 4 13
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/T326.hs" 4 1 4 2
+                    , SrcSpan "tests/examples/T326.hs" 4 2 4 4
+                    , SrcSpan "tests/examples/T326.hs" 4 4 4 5
+                    ]
+                }
+              (Symbol
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 2 4 4
+                   , srcInfoPoints = []
+                   }
+                 "@:")
+              [ PVar
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 6 4 7
+                    , srcInfoPoints = []
+                    }
+                  (Ident
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 6 4 7
+                       , srcInfoPoints = []
+                       }
+                     "a")
+              , PVar
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 8 4 9
+                    , srcInfoPoints = []
+                    }
+                  (Ident
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 8 4 9
+                       , srcInfoPoints = []
+                       }
+                     "b")
+              ]
+              (UnGuardedRhs
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 10 4 13
+                   , srcInfoPoints = [ SrcSpan "tests/examples/T326.hs" 4 10 4 11 ]
+                   }
+                 (Var
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13
+                      , srcInfoPoints = []
+                      }
+                    (UnQual
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13
+                         , srcInfoPoints = []
+                         }
+                       (Ident
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13
+                            , srcInfoPoints = []
+                            }
+                          "a"))))
+              Nothing
+          ]
+      ]
+  , []
+  )
diff --git a/tests/examples/T326.hs.prettyparser.golden b/tests/examples/T326.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/T326.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/T326.hs.prettyprinter.golden b/tests/examples/T326.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/T326.hs.prettyprinter.golden
@@ -0,0 +1,3 @@
+{-# LANGUAGE TypeApplications #-}
+module T326 where
+(@:) a b = a
diff --git a/tests/examples/THTypedSplices.hs b/tests/examples/THTypedSplices.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE TemplateHaskell #-}
+import Language.Haskell.TH
+
+import THTypedSplices.Defs
+
+main = $$justTH ($$([e|| 2 ||]))
diff --git a/tests/examples/THTypedSplices.hs.exactprinter.golden b/tests/examples/THTypedSplices.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs.exactprinter.golden
@@ -0,0 +1,7 @@
+{-# LANGUAGE TemplateHaskell #-}
+import Language.Haskell.TH
+
+import THTypedSplices.Defs
+
+main = $$justTH ($$([||  2 ||]))
+
diff --git a/tests/examples/THTypedSplices.hs.parser.golden b/tests/examples/THTypedSplices.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs.parser.golden
@@ -0,0 +1,177 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 1 1 7 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 7 1 7 1
+            , SrcSpan "tests/examples/THTypedSplices.hs" 7 1 7 1
+            ]
+        }
+      Nothing
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 33
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/THTypedSplices.hs" 1 1 1 13
+                , SrcSpan "tests/examples/THTypedSplices.hs" 1 30 1 33
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/THTypedSplices.hs" 1 14 1 29
+                , srcInfoPoints = []
+                }
+              "TemplateHaskell"
+          ]
+      ]
+      [ ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/THTypedSplices.hs" 2 1 2 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 2 8 2 27
+                  , srcInfoPoints = []
+                  }
+                "Language.Haskell.TH"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      , ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 27
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/THTypedSplices.hs" 4 1 4 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 4 8 4 27
+                  , srcInfoPoints = []
+                  }
+                "THTypedSplices.Defs"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      ]
+      [ PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 33
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 5
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 1 6 5
+                  , srcInfoPoints = []
+                  }
+                "main"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 6 6 33
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/THTypedSplices.hs" 6 6 6 7 ]
+               }
+             (App
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 33
+                  , srcInfoPoints = []
+                  }
+                (SpliceExp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 16
+                     , srcInfoPoints = []
+                     }
+                   (TIdSplice
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/THTypedSplices.hs" 6 8 6 16
+                        , srcInfoPoints = []
+                        }
+                      "justTH"))
+                (Paren
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/THTypedSplices.hs" 6 17 6 33
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/THTypedSplices.hs" 6 17 6 18
+                         , SrcSpan "tests/examples/THTypedSplices.hs" 6 32 6 33
+                         ]
+                     }
+                   (SpliceExp
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 32
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 21
+                            , SrcSpan "tests/examples/THTypedSplices.hs" 6 31 6 32
+                            ]
+                        }
+                      (TParenSplice
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 32
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/THTypedSplices.hs" 6 18 6 21
+                               , SrcSpan "tests/examples/THTypedSplices.hs" 6 31 6 32
+                               ]
+                           }
+                         (BracketExp
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 31
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 25
+                                  , SrcSpan "tests/examples/THTypedSplices.hs" 6 28 6 31
+                                  ]
+                              }
+                            (TExpBracket
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 31
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/THTypedSplices.hs" 6 21 6 25
+                                     , SrcSpan "tests/examples/THTypedSplices.hs" 6 28 6 31
+                                     ]
+                                 }
+                               (Lit
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/THTypedSplices.hs" 6 26 6 27
+                                    , srcInfoPoints = []
+                                    }
+                                  (Int
+                                     SrcSpanInfo
+                                       { srcInfoSpan =
+                                           SrcSpan "tests/examples/THTypedSplices.hs" 6 26 6 27
+                                       , srcInfoPoints = []
+                                       }
+                                     2
+                                     "2")))))))))
+          Nothing
+      ]
+  , []
+  )
diff --git a/tests/examples/THTypedSplices.hs.prettyparser.golden b/tests/examples/THTypedSplices.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/THTypedSplices.hs.prettyprinter.golden b/tests/examples/THTypedSplices.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/THTypedSplices.hs.prettyprinter.golden
@@ -0,0 +1,4 @@
+{-# LANGUAGE TemplateHaskell #-}
+import Language.Haskell.TH
+import THTypedSplices.Defs
+main = $$justTH ($$( [|| 2 ||] ))
diff --git a/tests/examples/TemplateHaskellQuotedNames.hs b/tests/examples/TemplateHaskellQuotedNames.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/TemplateHaskellQuotedNames.hs
@@ -0,0 +1,3 @@
+{-# LANGUAGE TemplateHaskell #-}
+f = g 'Constructor 'function
+h = g '() '[]
diff --git a/tests/examples/TemplateHaskellQuotedNames.hs.exactprinter.golden b/tests/examples/TemplateHaskellQuotedNames.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/TemplateHaskellQuotedNames.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/TemplateHaskellQuotedNames.hs.parser.golden b/tests/examples/TemplateHaskellQuotedNames.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/TemplateHaskellQuotedNames.hs.parser.golden
@@ -0,0 +1,246 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan =
+            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 4 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 1 1
+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 1
+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 1
+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 1
+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 1
+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 4 1 4 1
+            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 4 1 4 1
+            ]
+        }
+      Nothing
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 1 33
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 1 1 13
+                , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 30 1 33
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan =
+                    SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 1 14 1 29
+                , srcInfoPoints = []
+                }
+              "TemplateHaskell"
+          ]
+      ]
+      []
+      [ PatBind
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 29
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 2
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 1 2 2
+                  , srcInfoPoints = []
+                  }
+                "f"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 3 2 29
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 3 2 4 ]
+               }
+             (App
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 29
+                  , srcInfoPoints = []
+                  }
+                (App
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 19
+                     , srcInfoPoints = []
+                     }
+                   (Var
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 6
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 6
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 5 2 6
+                              , srcInfoPoints = []
+                              }
+                            "g")))
+                   (VarQuote
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 7 2 19
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 7 2 8 ]
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 8 2 19
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 8 2 19
+                              , srcInfoPoints = []
+                              }
+                            "Constructor"))))
+                (VarQuote
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 20 2 29
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 20 2 21
+                         ]
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 21 2 29
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 2 21 2 29
+                           , srcInfoPoints = []
+                           }
+                         "function")))))
+          Nothing
+      , PatBind
+          SrcSpanInfo
+            { srcInfoSpan =
+                SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 14
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 2
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 1 3 2
+                  , srcInfoPoints = []
+                  }
+                "h"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan =
+                   SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 3 3 14
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 3 3 4 ]
+               }
+             (App
+                SrcSpanInfo
+                  { srcInfoSpan =
+                      SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 14
+                  , srcInfoPoints = []
+                  }
+                (App
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 10
+                     , srcInfoPoints = []
+                     }
+                   (Var
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 6
+                        , srcInfoPoints = []
+                        }
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 6
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 5 3 6
+                              , srcInfoPoints = []
+                              }
+                            "g")))
+                   (VarQuote
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 7 3 10
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 7 3 8 ]
+                        }
+                      (Special
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 10
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 9
+                               , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 9 3 10
+                               ]
+                           }
+                         (UnitCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 10
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 8 3 9
+                                  , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 9 3 10
+                                  ]
+                              }))))
+                (VarQuote
+                   SrcSpanInfo
+                     { srcInfoSpan =
+                         SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 11 3 14
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 11 3 12
+                         ]
+                     }
+                   (Special
+                      SrcSpanInfo
+                        { srcInfoSpan =
+                            SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 14
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 13
+                            , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 13 3 14
+                            ]
+                        }
+                      (ListCon
+                         SrcSpanInfo
+                           { srcInfoSpan =
+                               SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 14
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 12 3 13
+                               , SrcSpan "tests/examples/TemplateHaskellQuotedNames.hs" 3 13 3 14
+                               ]
+                           })))))
+          Nothing
+      ]
+  , []
+  )
diff --git a/tests/examples/TemplateHaskellQuotedNames.hs.prettyparser.golden b/tests/examples/TemplateHaskellQuotedNames.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/TemplateHaskellQuotedNames.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/TemplateHaskellQuotedNames.hs.prettyprinter.golden b/tests/examples/TemplateHaskellQuotedNames.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/TemplateHaskellQuotedNames.hs.prettyprinter.golden
@@ -0,0 +1,3 @@
+{-# LANGUAGE TemplateHaskell #-}
+f = g 'Constructor 'function
+h = g '() '[]
diff --git a/tests/examples/TypeEqualityParen.hs.parser.golden b/tests/examples/TypeEqualityParen.hs.parser.golden
--- a/tests/examples/TypeEqualityParen.hs.parser.golden
+++ b/tests/examples/TypeEqualityParen.hs.parser.golden
@@ -67,39 +67,50 @@
                          , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 26 2 28
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan =
                              SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
                             { srcInfoSpan =
-                                SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10
+                                SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10
+                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 12
                                , srcInfoPoints = []
                                }
-                             "Eq"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan =
-                                 SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan =
-                                    SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 8 2 10
+                                     , srcInfoPoints = []
+                                     }
+                                   "Eq")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan =
+                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan =
+                                      SrcSpan "tests/examples/TypeEqualityParen.hs" 2 11 2 12
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
                    , ParenA
                        SrcSpanInfo
                          { srcInfoSpan =
@@ -109,45 +120,52 @@
                              , SrcSpan "tests/examples/TypeEqualityParen.hs" 2 22 2 23
                              ]
                          }
-                       (EqualP
+                       (TypeA
                           SrcSpanInfo
                             { srcInfoSpan =
                                 SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 22
                             , srcInfoPoints =
                                 [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 17 2 18 ]
                             }
-                          (TyVar
+                          (TyEquals
                              SrcSpanInfo
                                { srcInfoSpan =
-                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16
-                               , srcInfoPoints = []
+                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 22
+                               , srcInfoPoints =
+                                   [ SrcSpan "tests/examples/TypeEqualityParen.hs" 2 17 2 18 ]
                                }
-                             (Ident
+                             (TyVar
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16
                                   , srcInfoPoints = []
                                   }
-                                "a"))
-                          (TyCon
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22
-                               , srcInfoPoints = []
-                               }
-                             (UnQual
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan =
+                                         SrcSpan "tests/examples/TypeEqualityParen.hs" 2 15 2 16
+                                     , srcInfoPoints = []
+                                     }
+                                   "a"))
+                             (TyCon
                                 SrcSpanInfo
                                   { srcInfoSpan =
                                       SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22
                                   , srcInfoPoints = []
                                   }
-                                (Ident
+                                (UnQual
                                    SrcSpanInfo
                                      { srcInfoSpan =
                                          SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22
                                      , srcInfoPoints = []
                                      }
-                                   "Int"))))
+                                   (Ident
+                                      SrcSpanInfo
+                                        { srcInfoSpan =
+                                            SrcSpan "tests/examples/TypeEqualityParen.hs" 2 19 2 22
+                                        , srcInfoPoints = []
+                                        }
+                                      "Int")))))
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/TypeFunctions.hs.parser.golden b/tests/examples/TypeFunctions.hs.parser.golden
--- a/tests/examples/TypeFunctions.hs.parser.golden
+++ b/tests/examples/TypeFunctions.hs.parser.golden
@@ -126,18 +126,18 @@
                         , srcInfoPoints = []
                         }
                       "f")
-                   (KindFn
+                   (TyFun
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 23 5 29
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/TypeFunctions.hs" 5 25 5 27 ]
                         }
-                      (KindStar
+                      (TyStar
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 23 5 24
                            , srcInfoPoints = []
                            })
-                      (KindStar
+                      (TyStar
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 28 5 29
                            , srcInfoPoints = []
@@ -160,7 +160,7 @@
                   , srcInfoPoints =
                       [ SrcSpan "tests/examples/TypeFunctions.hs" 5 33 5 35 ]
                   }
-                (KindStar
+                (TyStar
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/TypeFunctions.hs" 5 36 5 37
                      , srcInfoPoints = []
diff --git a/tests/examples/TypeInstances.hs.parser.golden b/tests/examples/TypeInstances.hs.parser.golden
--- a/tests/examples/TypeInstances.hs.parser.golden
+++ b/tests/examples/TypeInstances.hs.parser.golden
@@ -111,7 +111,7 @@
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/TypeInstances.hs" 4 14 4 16 ]
                          }
-                       (KindStar
+                       (TyStar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 4 17 4 18
                             , srcInfoPoints = []
@@ -237,7 +237,7 @@
                          , srcInfoPoints =
                              [ SrcSpan "tests/examples/TypeInstances.hs" 7 17 7 19 ]
                          }
-                       (KindStar
+                       (TyStar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/TypeInstances.hs" 7 20 7 21
                             , srcInfoPoints = []
diff --git a/tests/examples/TypeOperatorsTest.hs.parser.golden b/tests/examples/TypeOperatorsTest.hs.parser.golden
--- a/tests/examples/TypeOperatorsTest.hs.parser.golden
+++ b/tests/examples/TypeOperatorsTest.hs.parser.golden
@@ -79,54 +79,67 @@
                      , srcInfoPoints =
                          [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan =
                             SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22
                         , srcInfoPoints =
                             [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
                            { srcInfoSpan =
-                               SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14
-                           , srcInfoPoints = []
+                               SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22
+                           , srcInfoPoints =
+                               [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
                               { srcInfoSpan =
-                                  SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14
-                              , srcInfoPoints = []
+                                  SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 22
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 20 3 22 ]
                               }
-                            "ArrowXml"))
-                      [ TyCon
-                          SrcSpanInfo
-                            { srcInfoSpan =
-                                SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19
-                            , srcInfoPoints =
-                                [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16
-                                , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
-                                , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19
-                                ]
-                            }
-                          (UnQual
-                             SrcSpanInfo
-                               { srcInfoSpan =
-                                   SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19
-                               , srcInfoPoints =
-                                   [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16
-                                   , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
-                                   , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19
-                                   ]
-                               }
-                             (Symbol
-                                SrcSpanInfo
-                                  { srcInfoSpan =
-                                      SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
-                                  , srcInfoPoints = []
-                                  }
-                                "~>"))
-                      ])))
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 6 3 14
+                                    , srcInfoPoints = []
+                                    }
+                                  "ArrowXml")))
+                         (TyCon
+                            SrcSpanInfo
+                              { srcInfoSpan =
+                                  SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16
+                                  , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
+                                  , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19
+                                  ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan =
+                                     SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 19
+                                 , srcInfoPoints =
+                                     [ SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 15 3 16
+                                     , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
+                                     , SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 18 3 19
+                                     ]
+                                 }
+                               (Symbol
+                                  SrcSpanInfo
+                                    { srcInfoSpan =
+                                        SrcSpan "tests/examples/TypeOperatorsTest.hs" 3 16 3 18
+                                    , srcInfoPoints = []
+                                    }
+                                  "~>")))))))
              (TyInfix
                 SrcSpanInfo
                   { srcInfoSpan =
diff --git a/tests/examples/Unicode.hs.parser.golden b/tests/examples/Unicode.hs.parser.golden
--- a/tests/examples/Unicode.hs.parser.golden
+++ b/tests/examples/Unicode.hs.parser.golden
@@ -3748,62 +3748,80 @@
                          , SrcSpan "tests/examples/Unicode.hs" 74 28 74 29
                          ]
                      }
-                   [ ClassA
+                   [ TypeA
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17
+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17
+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 19
                                , srcInfoPoints = []
                                }
-                             "Num"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
-                   , ClassA
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 14 74 17
+                                     , srcInfoPoints = []
+                                     }
+                                   "Num")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 18 74 19
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
+                   , TypeA
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26
                          , srcInfoPoints = []
                          }
-                       (UnQual
+                       (TyApp
                           SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24
+                            { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26
                             , srcInfoPoints = []
                             }
-                          (Ident
+                          (TyCon
                              SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24
+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 26
                                , srcInfoPoints = []
                                }
-                             "Ord"))
-                       [ TyVar
-                           SrcSpanInfo
-                             { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26
-                             , srcInfoPoints = []
-                             }
-                           (Ident
-                              SrcSpanInfo
-                                { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26
-                                , srcInfoPoints = []
-                                }
-                              "a")
-                       ]
+                             (UnQual
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24
+                                  , srcInfoPoints = []
+                                  }
+                                (Ident
+                                   SrcSpanInfo
+                                     { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 21 74 24
+                                     , srcInfoPoints = []
+                                     }
+                                   "Ord")))
+                          (TyVar
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26
+                               , srcInfoPoints = []
+                               }
+                             (Ident
+                                SrcSpanInfo
+                                  { srcInfoSpan = SrcSpan "tests/examples/Unicode.hs" 74 25 74 26
+                                  , srcInfoPoints = []
+                                  }
+                                "a")))
                    ]))
              (TyFun
                 SrcSpanInfo
diff --git a/tests/examples/UnicodeIdents.hs b/tests/examples/UnicodeIdents.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs
@@ -0,0 +1,2 @@
+猫 = ()
+自乗 x = x * x
diff --git a/tests/examples/UnicodeIdents.hs.exactprinter.golden b/tests/examples/UnicodeIdents.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/UnicodeIdents.hs.parser.golden b/tests/examples/UnicodeIdents.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs.parser.golden
@@ -0,0 +1,155 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 3 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 3 1 3 1
+            , SrcSpan "tests/examples/UnicodeIdents.hs" 3 1 3 1
+            ]
+        }
+      Nothing
+      []
+      []
+      [ PatBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 7
+            , srcInfoPoints = []
+            }
+          (PVar
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 2
+               , srcInfoPoints = []
+               }
+             (Ident
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 1 1 2
+                  , srcInfoPoints = []
+                  }
+                "\29483"))
+          (UnGuardedRhs
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 3 1 7
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 3 1 4 ]
+               }
+             (Con
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6
+                      , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7
+                      ]
+                  }
+                (Special
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6
+                         , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7
+                         ]
+                     }
+                   (UnitCon
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 7
+                        , srcInfoPoints =
+                            [ SrcSpan "tests/examples/UnicodeIdents.hs" 1 5 1 6
+                            , SrcSpan "tests/examples/UnicodeIdents.hs" 1 6 1 7
+                            ]
+                        }))))
+          Nothing
+      , FunBind
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 13
+            , srcInfoPoints = []
+            }
+          [ Match
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 13
+                , srcInfoPoints = []
+                }
+              (Ident
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 1 2 3
+                   , srcInfoPoints = []
+                   }
+                 "\33258\20055")
+              [ PVar
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 4 2 5
+                    , srcInfoPoints = []
+                    }
+                  (Ident
+                     SrcSpanInfo
+                       { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 4 2 5
+                       , srcInfoPoints = []
+                       }
+                     "x")
+              ]
+              (UnGuardedRhs
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 6 2 13
+                   , srcInfoPoints =
+                       [ SrcSpan "tests/examples/UnicodeIdents.hs" 2 6 2 7 ]
+                   }
+                 (InfixApp
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 13
+                      , srcInfoPoints = []
+                      }
+                    (Var
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 8 2 9
+                               , srcInfoPoints = []
+                               }
+                             "x")))
+                    (QVarOp
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11
+                            , srcInfoPoints = []
+                            }
+                          (Symbol
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 10 2 11
+                               , srcInfoPoints = []
+                               }
+                             "*")))
+                    (Var
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13
+                         , srcInfoPoints = []
+                         }
+                       (UnQual
+                          SrcSpanInfo
+                            { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13
+                            , srcInfoPoints = []
+                            }
+                          (Ident
+                             SrcSpanInfo
+                               { srcInfoSpan = SrcSpan "tests/examples/UnicodeIdents.hs" 2 12 2 13
+                               , srcInfoPoints = []
+                               }
+                             "x")))))
+              Nothing
+          ]
+      ]
+  , []
+  )
diff --git a/tests/examples/UnicodeIdents.hs.prettyparser.golden b/tests/examples/UnicodeIdents.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/UnicodeIdents.hs.prettyprinter.golden b/tests/examples/UnicodeIdents.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/UnicodeIdents.hs.prettyprinter.golden
@@ -0,0 +1,2 @@
++ = ()
+êW x = x * x
diff --git a/tests/examples/Unpack.hs.parser.golden b/tests/examples/Unpack.hs.parser.golden
--- a/tests/examples/Unpack.hs.parser.golden
+++ b/tests/examples/Unpack.hs.parser.golden
@@ -101,6 +101,8 @@
                    }
                  "CmmEntry")
               Nothing
+              Nothing
+              Nothing
               (TyFun
                  SrcSpanInfo
                    { srcInfoSpan = SrcSpan "tests/examples/Unpack.hs" 4 21 4 55
diff --git a/tests/examples/Vta1.hs.parser.golden b/tests/examples/Vta1.hs.parser.golden
--- a/tests/examples/Vta1.hs.parser.golden
+++ b/tests/examples/Vta1.hs.parser.golden
@@ -3152,34 +3152,43 @@
                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30
                      , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]
                      }
-                   (ClassA
+                   (TypeA
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30
                         , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]
                         }
-                      (UnQual
+                      (TyApp
                          SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25
-                           , srcInfoPoints = []
+                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30
+                           , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]
                            }
-                         (Ident
+                         (TyCon
                             SrcSpanInfo
-                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25
+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 30
+                              , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 55 28 55 30 ]
+                              }
+                            (UnQual
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25
+                                 , srcInfoPoints = []
+                                 }
+                               (Ident
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 22 55 25
+                                    , srcInfoPoints = []
+                                    }
+                                  "Num")))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27
                               , srcInfoPoints = []
                               }
-                            "Num"))
-                      [ TyVar
-                          SrcSpanInfo
-                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27
-                            , srcInfoPoints = []
-                            }
-                          (Ident
-                             SrcSpanInfo
-                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27
-                               , srcInfoPoints = []
-                               }
-                             "a")
-                      ])))
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 26 55 27
+                                 , srcInfoPoints = []
+                                 }
+                               "a"))))))
              (TyForall
                 SrcSpanInfo
                   { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 55 31 55 52
@@ -3418,40 +3427,54 @@
                                        , srcInfoPoints =
                                            [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]
                                        }
-                                     (ClassA
+                                     (TypeA
                                         SrcSpanInfo
                                           { srcInfoSpan =
                                               SrcSpan "tests/examples/Vta1.hs" 58 26 58 34
                                           , srcInfoPoints =
                                               [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]
                                           }
-                                        (UnQual
+                                        (TyApp
                                            SrcSpanInfo
                                              { srcInfoSpan =
-                                                 SrcSpan "tests/examples/Vta1.hs" 58 26 58 29
-                                             , srcInfoPoints = []
+                                                 SrcSpan "tests/examples/Vta1.hs" 58 26 58 34
+                                             , srcInfoPoints =
+                                                 [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]
                                              }
-                                           (Ident
+                                           (TyCon
                                               SrcSpanInfo
                                                 { srcInfoSpan =
-                                                    SrcSpan "tests/examples/Vta1.hs" 58 26 58 29
+                                                    SrcSpan "tests/examples/Vta1.hs" 58 26 58 34
+                                                , srcInfoPoints =
+                                                    [ SrcSpan "tests/examples/Vta1.hs" 58 32 58 34 ]
+                                                }
+                                              (UnQual
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan "tests/examples/Vta1.hs" 58 26 58 29
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 (Ident
+                                                    SrcSpanInfo
+                                                      { srcInfoSpan =
+                                                          SrcSpan
+                                                            "tests/examples/Vta1.hs" 58 26 58 29
+                                                      , srcInfoPoints = []
+                                                      }
+                                                    "Num")))
+                                           (TyVar
+                                              SrcSpanInfo
+                                                { srcInfoSpan =
+                                                    SrcSpan "tests/examples/Vta1.hs" 58 30 58 31
                                                 , srcInfoPoints = []
                                                 }
-                                              "Num"))
-                                        [ TyVar
-                                            SrcSpanInfo
-                                              { srcInfoSpan =
-                                                  SrcSpan "tests/examples/Vta1.hs" 58 30 58 31
-                                              , srcInfoPoints = []
-                                              }
-                                            (Ident
-                                               SrcSpanInfo
-                                                 { srcInfoSpan =
-                                                     SrcSpan "tests/examples/Vta1.hs" 58 30 58 31
-                                                 , srcInfoPoints = []
-                                                 }
-                                               "a")
-                                        ])))
+                                              (Ident
+                                                 SrcSpanInfo
+                                                   { srcInfoSpan =
+                                                       SrcSpan "tests/examples/Vta1.hs" 58 30 58 31
+                                                   , srcInfoPoints = []
+                                                   }
+                                                 "a"))))))
                                (TyForall
                                   SrcSpanInfo
                                     { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 58 35 58 56
@@ -3745,17 +3768,17 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindFn
+                (TyFun
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 18 61 24
                      , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 61 20 61 22 ]
                      }
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 18 61 19
                         , srcInfoPoints = []
                         })
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 61 23 61 24
                         , srcInfoPoints = []
@@ -3823,22 +3846,17 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindVar
+                (TyVar
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 18 62 19
                      , srcInfoPoints = []
                      }
-                   (UnQual
+                   (Ident
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 18 62 19
                         , srcInfoPoints = []
                         }
-                      (Ident
-                         SrcSpanInfo
-                           { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 18 62 19
-                           , srcInfoPoints = []
-                           }
-                         "k")))))
+                      "k"))))
           [ QualConDecl
               SrcSpanInfo
                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 62 23 62 24
@@ -3902,38 +3920,33 @@
                      , srcInfoPoints = []
                      }
                    "a")
-                (KindFn
+                (TyFun
                    SrcSpanInfo
                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 18 63 29
                      , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 63 20 63 22 ]
                      }
-                   (KindStar
+                   (TyStar
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 18 63 19
                         , srcInfoPoints = []
                         })
-                   (KindFn
+                   (TyFun
                       SrcSpanInfo
                         { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 29
                         , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 63 25 63 27 ]
                         }
-                      (KindVar
+                      (TyVar
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 24
                            , srcInfoPoints = []
                            }
-                         (UnQual
+                         (Ident
                             SrcSpanInfo
                               { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 24
                               , srcInfoPoints = []
                               }
-                            (Ident
-                               SrcSpanInfo
-                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 23 63 24
-                                 , srcInfoPoints = []
-                                 }
-                               "k")))
-                      (KindStar
+                            "k"))
+                      (TyStar
                          SrcSpanInfo
                            { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 63 28 63 29
                            , srcInfoPoints = []
@@ -4858,37 +4871,51 @@
                                 { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47
                                 , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]
                                 }
-                              (ClassA
+                              (TypeA
                                  SrcSpanInfo
                                    { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47
                                    , srcInfoPoints =
                                        [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]
                                    }
-                                 (UnQual
+                                 (TyApp
                                     SrcSpanInfo
-                                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 42
-                                      , srcInfoPoints = []
+                                      { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 38 85 47
+                                      , srcInfoPoints =
+                                          [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]
                                       }
-                                    (Ident
+                                    (TyCon
                                        SrcSpanInfo
                                          { srcInfoSpan =
-                                             SrcSpan "tests/examples/Vta1.hs" 85 38 85 42
+                                             SrcSpan "tests/examples/Vta1.hs" 85 38 85 47
+                                         , srcInfoPoints =
+                                             [ SrcSpan "tests/examples/Vta1.hs" 85 45 85 47 ]
+                                         }
+                                       (UnQual
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/Vta1.hs" 85 38 85 42
+                                            , srcInfoPoints = []
+                                            }
+                                          (Ident
+                                             SrcSpanInfo
+                                               { srcInfoSpan =
+                                                   SrcSpan "tests/examples/Vta1.hs" 85 38 85 42
+                                               , srcInfoPoints = []
+                                               }
+                                             "Show")))
+                                    (TyVar
+                                       SrcSpanInfo
+                                         { srcInfoSpan =
+                                             SrcSpan "tests/examples/Vta1.hs" 85 43 85 44
                                          , srcInfoPoints = []
                                          }
-                                       "Show"))
-                                 [ TyVar
-                                     SrcSpanInfo
-                                       { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 43 85 44
-                                       , srcInfoPoints = []
-                                       }
-                                     (Ident
-                                        SrcSpanInfo
-                                          { srcInfoSpan =
-                                              SrcSpan "tests/examples/Vta1.hs" 85 43 85 44
-                                          , srcInfoPoints = []
-                                          }
-                                        "a")
-                                 ])))
+                                       (Ident
+                                          SrcSpanInfo
+                                            { srcInfoSpan =
+                                                SrcSpan "tests/examples/Vta1.hs" 85 43 85 44
+                                            , srcInfoPoints = []
+                                            }
+                                          "a"))))))
                         (TyFun
                            SrcSpanInfo
                              { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 85 48 85 59
@@ -5104,17 +5131,17 @@
                          , srcInfoPoints = []
                          }
                        "a")
-                    (KindFn
+                    (TyFun
                        SrcSpanInfo
                          { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 22 91 28
                          , srcInfoPoints = [ SrcSpan "tests/examples/Vta1.hs" 91 24 91 26 ]
                          }
-                       (KindStar
+                       (TyStar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 22 91 23
                             , srcInfoPoints = []
                             })
-                       (KindStar
+                       (TyStar
                           SrcSpanInfo
                             { srcInfoSpan = SrcSpan "tests/examples/Vta1.hs" 91 27 91 28
                             , srcInfoPoints = []
diff --git a/tests/examples/completesig01.hs.parser.golden b/tests/examples/completesig01.hs.parser.golden
--- a/tests/examples/completesig01.hs.parser.golden
+++ b/tests/examples/completesig01.hs.parser.golden
@@ -101,6 +101,7 @@
           Nothing
           Nothing
           Nothing
+          Nothing
           (TyCon
              SrcSpanInfo
                { srcInfoSpan = SrcSpan "tests/examples/completesig01.hs" 6 16 6 18
diff --git a/tests/examples/t402.hs b/tests/examples/t402.hs
deleted file mode 100644
--- a/tests/examples/t402.hs
+++ /dev/null
@@ -1,13 +0,0 @@
-{-# LANGUAGE TypeFamilies #-}
-{-# LANGUAGE GADTs                  #-}
-{-# LANGUAGE TypeOperators #-}
-{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE TypeInType #-}
-module Test where
-
-import           Data.Singletons.Prelude
-import           Data.Singletons.TypeLits
-import           Data.Type.Equality            ((:~:) (..), (:~~:) (..))
-
-data instance Sing (z :: (a :~: b)) where
-	SRefl :: Sing Refl
diff --git a/tests/examples/t403.hs b/tests/examples/t403.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/t403.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ViewPatterns #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE DataKinds #-}
+module T403 where
+
+pattern (:&&:) :: () => forall k. ((k :+ 1) ~ n) => a -> HoHeList k a -> HoHeList n a
+pattern (:&&:) x rest <- (matchNext -> Right (x, Refl, rest))
diff --git a/tests/examples/t403.hs.exactprinter.golden b/tests/examples/t403.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/t403.hs.exactprinter.golden
@@ -0,0 +1,10 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ViewPatterns #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE DataKinds #-}
+module T403 where
+
+pattern (:&&:) :: () =>           ((k :+ 1) ~ n) => a -> HoHeList k a -> HoHeList n a
+pattern ((:&&:))xrest <- (matchNext -> Right (x, Refl, rest))
+
diff --git a/tests/examples/t403.hs.parser.golden b/tests/examples/t403.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/t403.hs.parser.golden
@@ -0,0 +1,520 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 1 1 10 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/t403.hs" 1 1 1 1
+            , SrcSpan "tests/examples/t403.hs" 2 1 2 1
+            , SrcSpan "tests/examples/t403.hs" 3 1 3 1
+            , SrcSpan "tests/examples/t403.hs" 4 1 4 1
+            , SrcSpan "tests/examples/t403.hs" 5 1 5 1
+            , SrcSpan "tests/examples/t403.hs" 6 1 6 1
+            , SrcSpan "tests/examples/t403.hs" 6 1 6 1
+            , SrcSpan "tests/examples/t403.hs" 8 1 8 1
+            , SrcSpan "tests/examples/t403.hs" 9 1 9 1
+            , SrcSpan "tests/examples/t403.hs" 10 1 10 1
+            , SrcSpan "tests/examples/t403.hs" 10 1 10 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 6 1 6 18
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/t403.hs" 6 1 6 7
+                  , SrcSpan "tests/examples/t403.hs" 6 13 6 18
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 6 8 6 12
+                 , srcInfoPoints = []
+                 }
+               "T403")
+            Nothing
+            Nothing))
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 1 1 1 33
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/t403.hs" 1 1 1 13
+                , SrcSpan "tests/examples/t403.hs" 1 30 1 33
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 1 14 1 29
+                , srcInfoPoints = []
+                }
+              "PatternSynonyms"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 2 1 2 28
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/t403.hs" 2 1 2 13
+                , SrcSpan "tests/examples/t403.hs" 2 25 2 28
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 2 14 2 24
+                , srcInfoPoints = []
+                }
+              "RankNTypes"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 3 1 3 30
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/t403.hs" 3 1 3 13
+                , SrcSpan "tests/examples/t403.hs" 3 27 3 30
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 3 14 3 26
+                , srcInfoPoints = []
+                }
+              "ViewPatterns"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 4 1 4 31
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/t403.hs" 4 1 4 13
+                , SrcSpan "tests/examples/t403.hs" 4 28 4 31
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 4 14 4 27
+                , srcInfoPoints = []
+                }
+              "TypeOperators"
+          ]
+      , LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 5 1 5 27
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/t403.hs" 5 1 5 13
+                , SrcSpan "tests/examples/t403.hs" 5 24 5 27
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 5 14 5 23
+                , srcInfoPoints = []
+                }
+              "DataKinds"
+          ]
+      ]
+      []
+      [ PatSynSig
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 1 8 86
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/t403.hs" 8 1 8 8
+                , SrcSpan "tests/examples/t403.hs" 8 16 8 18
+                ]
+            }
+          [ Symbol
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 9 8 15
+                , srcInfoPoints =
+                    [ SrcSpan "tests/examples/t403.hs" 8 9 8 10
+                    , SrcSpan "tests/examples/t403.hs" 8 10 8 14
+                    , SrcSpan "tests/examples/t403.hs" 8 14 8 15
+                    ]
+                }
+              ":&&:"
+          ]
+          Nothing
+          (Just
+             (CxEmpty
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 19 8 24
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/t403.hs" 8 19 8 20
+                      , SrcSpan "tests/examples/t403.hs" 8 20 8 21
+                      , SrcSpan "tests/examples/t403.hs" 8 22 8 24
+                      ]
+                  }))
+          (Just
+             [ UnkindedVar
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 32 8 33
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 32 8 33
+                      , srcInfoPoints = []
+                      }
+                    "k")
+             ])
+          (Just
+             (CxSingle
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 35 8 52
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/t403.hs" 8 35 8 36
+                      , SrcSpan "tests/examples/t403.hs" 8 48 8 49
+                      , SrcSpan "tests/examples/t403.hs" 8 50 8 52
+                      ]
+                  }
+                (ParenA
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 35 8 52
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/t403.hs" 8 35 8 36
+                         , SrcSpan "tests/examples/t403.hs" 8 48 8 49
+                         , SrcSpan "tests/examples/t403.hs" 8 50 8 52
+                         ]
+                     }
+                   (TypeA
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 48
+                        , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 45 8 46 ]
+                        }
+                      (TyEquals
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 48
+                           , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 45 8 46 ]
+                           }
+                         (TyParen
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 36 8 44
+                              , srcInfoPoints =
+                                  [ SrcSpan "tests/examples/t403.hs" 8 36 8 37
+                                  , SrcSpan "tests/examples/t403.hs" 8 43 8 44
+                                  ]
+                              }
+                            (TyInfix
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 43
+                                 , srcInfoPoints = []
+                                 }
+                               (TyVar
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 38
+                                    , srcInfoPoints = []
+                                    }
+                                  (Ident
+                                     SrcSpanInfo
+                                       { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 37 8 38
+                                       , srcInfoPoints = []
+                                       }
+                                     "k"))
+                               (UnpromotedName
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41
+                                    , srcInfoPoints = []
+                                    }
+                                  (UnQual
+                                     SrcSpanInfo
+                                       { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41
+                                       , srcInfoPoints = []
+                                       }
+                                     (Symbol
+                                        SrcSpanInfo
+                                          { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 39 8 41
+                                          , srcInfoPoints = []
+                                          }
+                                        ":+")))
+                               (TyPromoted
+                                  SrcSpanInfo
+                                    { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 42 8 43
+                                    , srcInfoPoints = []
+                                    }
+                                  (PromotedInteger
+                                     SrcSpanInfo
+                                       { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 42 8 43
+                                       , srcInfoPoints = []
+                                       }
+                                     1
+                                     "1"))))
+                         (TyVar
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 47 8 48
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 47 8 48
+                                 , srcInfoPoints = []
+                                 }
+                               "n")))))))
+          (TyFun
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 86
+               , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 55 8 57 ]
+               }
+             (TyVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 54
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 53 8 54
+                     , srcInfoPoints = []
+                     }
+                   "a"))
+             (TyFun
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 86
+                  , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 8 71 8 73 ]
+                  }
+                (TyApp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 70
+                     , srcInfoPoints = []
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 68
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 66
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 66
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 58 8 66
+                                 , srcInfoPoints = []
+                                 }
+                               "HoHeList")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 67 8 68
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 67 8 68
+                              , srcInfoPoints = []
+                              }
+                            "k")))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 69 8 70
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 69 8 70
+                           , srcInfoPoints = []
+                           }
+                         "a")))
+                (TyApp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 86
+                     , srcInfoPoints = []
+                     }
+                   (TyApp
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 84
+                        , srcInfoPoints = []
+                        }
+                      (TyCon
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 82
+                           , srcInfoPoints = []
+                           }
+                         (UnQual
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 82
+                              , srcInfoPoints = []
+                              }
+                            (Ident
+                               SrcSpanInfo
+                                 { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 74 8 82
+                                 , srcInfoPoints = []
+                                 }
+                               "HoHeList")))
+                      (TyVar
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 83 8 84
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 83 8 84
+                              , srcInfoPoints = []
+                              }
+                            "n")))
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 85 8 86
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 8 85 8 86
+                           , srcInfoPoints = []
+                           }
+                         "a")))))
+      , PatSyn
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 1 9 62
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/t403.hs" 9 1 9 8
+                , SrcSpan "tests/examples/t403.hs" 9 23 9 25
+                ]
+            }
+          (PApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 9 9 22
+               , srcInfoPoints = []
+               }
+             (UnQual
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 9 9 15
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/t403.hs" 9 9 9 10
+                      , SrcSpan "tests/examples/t403.hs" 9 10 9 14
+                      , SrcSpan "tests/examples/t403.hs" 9 14 9 15
+                      ]
+                  }
+                (Symbol
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 9 9 15
+                     , srcInfoPoints =
+                         [ SrcSpan "tests/examples/t403.hs" 9 9 9 10
+                         , SrcSpan "tests/examples/t403.hs" 9 10 9 14
+                         , SrcSpan "tests/examples/t403.hs" 9 14 9 15
+                         ]
+                     }
+                   ":&&:"))
+             [ PVar
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 16 9 17
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 16 9 17
+                      , srcInfoPoints = []
+                      }
+                    "x")
+             , PVar
+                 SrcSpanInfo
+                   { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 18 9 22
+                   , srcInfoPoints = []
+                   }
+                 (Ident
+                    SrcSpanInfo
+                      { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 18 9 22
+                      , srcInfoPoints = []
+                      }
+                    "rest")
+             ])
+          (PParen
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 26 9 62
+               , srcInfoPoints =
+                   [ SrcSpan "tests/examples/t403.hs" 9 26 9 27
+                   , SrcSpan "tests/examples/t403.hs" 9 61 9 62
+                   ]
+               }
+             (PViewPat
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 61
+                  , srcInfoPoints = [ SrcSpan "tests/examples/t403.hs" 9 37 9 39 ]
+                  }
+                (Var
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 36
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 36
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 27 9 36
+                           , srcInfoPoints = []
+                           }
+                         "matchNext")))
+                (PApp
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 40 9 61
+                     , srcInfoPoints = []
+                     }
+                   (UnQual
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 40 9 45
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 40 9 45
+                           , srcInfoPoints = []
+                           }
+                         "Right"))
+                   [ PTuple
+                       SrcSpanInfo
+                         { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 46 9 61
+                         , srcInfoPoints =
+                             [ SrcSpan "tests/examples/t403.hs" 9 46 9 47
+                             , SrcSpan "tests/examples/t403.hs" 9 48 9 49
+                             , SrcSpan "tests/examples/t403.hs" 9 54 9 55
+                             , SrcSpan "tests/examples/t403.hs" 9 60 9 61
+                             ]
+                         }
+                       Boxed
+                       [ PVar
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 47 9 48
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 47 9 48
+                                , srcInfoPoints = []
+                                }
+                              "x")
+                       , PApp
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 50 9 54
+                             , srcInfoPoints = []
+                             }
+                           (UnQual
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 50 9 54
+                                , srcInfoPoints = []
+                                }
+                              (Ident
+                                 SrcSpanInfo
+                                   { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 50 9 54
+                                   , srcInfoPoints = []
+                                   }
+                                 "Refl"))
+                           []
+                       , PVar
+                           SrcSpanInfo
+                             { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 56 9 60
+                             , srcInfoPoints = []
+                             }
+                           (Ident
+                              SrcSpanInfo
+                                { srcInfoSpan = SrcSpan "tests/examples/t403.hs" 9 56 9 60
+                                , srcInfoPoints = []
+                                }
+                              "rest")
+                       ]
+                   ])))
+          Unidirectional
+      ]
+  , []
+  )
diff --git a/tests/examples/t403.hs.prettyparser.golden b/tests/examples/t403.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/t403.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/t403.hs.prettyprinter.golden b/tests/examples/t403.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/t403.hs.prettyprinter.golden
@@ -0,0 +1,11 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ViewPatterns #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE DataKinds #-}
+module T403 where
+
+pattern (:&&:) :: () => forall k . ((k :+ 1) ~ n) =>
+        a -> HoHeList k a -> HoHeList n a
+
+pattern (:&&:) x rest <- (matchNext -> Right (x, Refl, rest))
diff --git a/tests/examples/t412.hs b/tests/examples/t412.hs
new file mode 100644
--- /dev/null
+++ b/tests/examples/t412.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TypeInType #-}
+
+module Typeintype
+       ( App ) where
+
+import Data.Kind
+
+data App (f :: k -> *)
diff --git a/tests/examples/t412.hs.exactprinter.golden b/tests/examples/t412.hs.exactprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/t412.hs.exactprinter.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/t412.hs.parser.golden b/tests/examples/t412.hs.parser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/t412.hs.parser.golden
@@ -0,0 +1,166 @@
+ParseOk
+  ( Module
+      SrcSpanInfo
+        { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 1 1 9 1
+        , srcInfoPoints =
+            [ SrcSpan "tests/examples/t412.hs" 1 1 1 1
+            , SrcSpan "tests/examples/t412.hs" 3 1 3 1
+            , SrcSpan "tests/examples/t412.hs" 3 1 3 1
+            , SrcSpan "tests/examples/t412.hs" 6 1 6 1
+            , SrcSpan "tests/examples/t412.hs" 8 1 8 1
+            , SrcSpan "tests/examples/t412.hs" 9 1 9 1
+            , SrcSpan "tests/examples/t412.hs" 9 1 9 1
+            ]
+        }
+      (Just
+         (ModuleHead
+            SrcSpanInfo
+              { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 3 1 4 21
+              , srcInfoPoints =
+                  [ SrcSpan "tests/examples/t412.hs" 3 1 3 7
+                  , SrcSpan "tests/examples/t412.hs" 4 16 4 21
+                  ]
+              }
+            (ModuleName
+               SrcSpanInfo
+                 { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 3 8 3 18
+                 , srcInfoPoints = []
+                 }
+               "Typeintype")
+            Nothing
+            (Just
+               (ExportSpecList
+                  SrcSpanInfo
+                    { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 8 4 15
+                    , srcInfoPoints =
+                        [ SrcSpan "tests/examples/t412.hs" 4 8 4 9
+                        , SrcSpan "tests/examples/t412.hs" 4 14 4 15
+                        ]
+                    }
+                  [ EAbs
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13
+                        , srcInfoPoints = []
+                        }
+                      (NoNamespace
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13
+                           , srcInfoPoints = []
+                           })
+                      (UnQual
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13
+                           , srcInfoPoints = []
+                           }
+                         (Ident
+                            SrcSpanInfo
+                              { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 4 10 4 13
+                              , srcInfoPoints = []
+                              }
+                            "App"))
+                  ]))))
+      [ LanguagePragma
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 1 1 1 28
+            , srcInfoPoints =
+                [ SrcSpan "tests/examples/t412.hs" 1 1 1 13
+                , SrcSpan "tests/examples/t412.hs" 1 25 1 28
+                ]
+            }
+          [ Ident
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 1 14 1 24
+                , srcInfoPoints = []
+                }
+              "TypeInType"
+          ]
+      ]
+      [ ImportDecl
+          { importAnn =
+              SrcSpanInfo
+                { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 6 1 6 17
+                , srcInfoPoints = [ SrcSpan "tests/examples/t412.hs" 6 1 6 7 ]
+                }
+          , importModule =
+              ModuleName
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 6 8 6 17
+                  , srcInfoPoints = []
+                  }
+                "Data.Kind"
+          , importQualified = False
+          , importSrc = False
+          , importSafe = False
+          , importPkg = Nothing
+          , importAs = Nothing
+          , importSpecs = Nothing
+          }
+      ]
+      [ DataDecl
+          SrcSpanInfo
+            { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 1 8 5
+            , srcInfoPoints = []
+            }
+          (DataType
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 1 8 5
+               , srcInfoPoints = []
+               })
+          Nothing
+          (DHApp
+             SrcSpanInfo
+               { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 6 8 23
+               , srcInfoPoints = []
+               }
+             (DHead
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 6 8 9
+                  , srcInfoPoints = []
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 6 8 9
+                     , srcInfoPoints = []
+                     }
+                   "App"))
+             (KindedVar
+                SrcSpanInfo
+                  { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 10 8 23
+                  , srcInfoPoints =
+                      [ SrcSpan "tests/examples/t412.hs" 8 10 8 11
+                      , SrcSpan "tests/examples/t412.hs" 8 13 8 15
+                      , SrcSpan "tests/examples/t412.hs" 8 22 8 23
+                      ]
+                  }
+                (Ident
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 11 8 12
+                     , srcInfoPoints = []
+                     }
+                   "f")
+                (TyFun
+                   SrcSpanInfo
+                     { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 22
+                     , srcInfoPoints = [ SrcSpan "tests/examples/t412.hs" 8 18 8 20 ]
+                     }
+                   (TyVar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 17
+                        , srcInfoPoints = []
+                        }
+                      (Ident
+                         SrcSpanInfo
+                           { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 16 8 17
+                           , srcInfoPoints = []
+                           }
+                         "k"))
+                   (TyStar
+                      SrcSpanInfo
+                        { srcInfoSpan = SrcSpan "tests/examples/t412.hs" 8 21 8 22
+                        , srcInfoPoints = []
+                        }))))
+          []
+          []
+      ]
+  , []
+  )
diff --git a/tests/examples/t412.hs.prettyparser.golden b/tests/examples/t412.hs.prettyparser.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/t412.hs.prettyparser.golden
@@ -0,0 +1,1 @@
+Match
diff --git a/tests/examples/t412.hs.prettyprinter.golden b/tests/examples/t412.hs.prettyprinter.golden
new file mode 100644
--- /dev/null
+++ b/tests/examples/t412.hs.prettyprinter.golden
@@ -0,0 +1,5 @@
+{-# LANGUAGE TypeInType #-}
+module Typeintype (App) where
+import Data.Kind
+
+data App (f :: k -> *)
