summaryrefslogtreecommitdiff
path: root/testsuite/tests/simplCore
diff options
context:
space:
mode:
authorDavid Terei <davidterei@gmail.com>2011-07-20 11:09:03 -0700
committerDavid Terei <davidterei@gmail.com>2011-07-20 11:26:35 -0700
commit16514f272fb42af6e9c7674a9bd6c9dce369231f (patch)
treee4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/simplCore
parentebd422aed41048476aa61dd4c520d43becd78682 (diff)
downloadhaskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/simplCore')
-rw-r--r--testsuite/tests/simplCore/Makefile3
-rw-r--r--testsuite/tests/simplCore/prog001/Makefile3
-rw-r--r--testsuite/tests/simplCore/prog001/Simpl006Help.hs3
-rw-r--r--testsuite/tests/simplCore/prog001/simpl006.hs19
-rw-r--r--testsuite/tests/simplCore/prog001/test.T5
-rw-r--r--testsuite/tests/simplCore/prog002/Makefile3
-rw-r--r--testsuite/tests/simplCore/prog002/Simpl009Help.hs39
-rw-r--r--testsuite/tests/simplCore/prog002/simpl009.hs23
-rw-r--r--testsuite/tests/simplCore/prog002/test.T5
-rw-r--r--testsuite/tests/simplCore/should_compile/EvalTest.hs48
-rw-r--r--testsuite/tests/simplCore/should_compile/EvalTest.stdout1
-rw-r--r--testsuite/tests/simplCore/should_compile/Makefile51
-rw-r--r--testsuite/tests/simplCore/should_compile/Simpl020_A.hs27
-rw-r--r--testsuite/tests/simplCore/should_compile/T1647.hs5
-rw-r--r--testsuite/tests/simplCore/should_compile/T2520.hs28
-rw-r--r--testsuite/tests/simplCore/should_compile/T3016.hs584
-rw-r--r--testsuite/tests/simplCore/should_compile/T3055.hs9
-rw-r--r--testsuite/tests/simplCore/should_compile/T3055.stdout1
-rw-r--r--testsuite/tests/simplCore/should_compile/T3118.hs40
-rw-r--r--testsuite/tests/simplCore/should_compile/T3234.hs8
-rw-r--r--testsuite/tests/simplCore/should_compile/T3234.stderr69
-rw-r--r--testsuite/tests/simplCore/should_compile/T3717.hs10
-rw-r--r--testsuite/tests/simplCore/should_compile/T3717.stderr33
-rw-r--r--testsuite/tests/simplCore/should_compile/T3717.stderr-ghc-7.047
-rw-r--r--testsuite/tests/simplCore/should_compile/T3772.hs21
-rw-r--r--testsuite/tests/simplCore/should_compile/T3772.stdout26
-rw-r--r--testsuite/tests/simplCore/should_compile/T3772.stdout-ghc-7.025
-rw-r--r--testsuite/tests/simplCore/should_compile/T3772_A.hs48
-rw-r--r--testsuite/tests/simplCore/should_compile/T3831.hs107
-rw-r--r--testsuite/tests/simplCore/should_compile/T4201.hs15
-rw-r--r--testsuite/tests/simplCore/should_compile/T4201.stdout1
-rw-r--r--testsuite/tests/simplCore/should_compile/T4203.hs37
-rw-r--r--testsuite/tests/simplCore/should_compile/T4306.hs12
-rw-r--r--testsuite/tests/simplCore/should_compile/T4306.stdout1
-rw-r--r--testsuite/tests/simplCore/should_compile/T4345.hs16
-rw-r--r--testsuite/tests/simplCore/should_compile/T4398.hs13
-rw-r--r--testsuite/tests/simplCore/should_compile/T4398.stderr4
-rw-r--r--testsuite/tests/simplCore/should_compile/T4903.hs10
-rw-r--r--testsuite/tests/simplCore/should_compile/T4903a.hs56
-rw-r--r--testsuite/tests/simplCore/should_compile/T4908.hs10
-rw-r--r--testsuite/tests/simplCore/should_compile/T4908.stderr73
-rw-r--r--testsuite/tests/simplCore/should_compile/T4908.stderr-ghc-7.077
-rw-r--r--testsuite/tests/simplCore/should_compile/T4918.hs6
-rw-r--r--testsuite/tests/simplCore/should_compile/T4918.stdout2
-rw-r--r--testsuite/tests/simplCore/should_compile/T4918a.hs8
-rw-r--r--testsuite/tests/simplCore/should_compile/T4930.hs5
-rw-r--r--testsuite/tests/simplCore/should_compile/T4930.stderr35
-rw-r--r--testsuite/tests/simplCore/should_compile/T4945.hs30
-rw-r--r--testsuite/tests/simplCore/should_compile/T4957.hs19
-rw-r--r--testsuite/tests/simplCore/should_compile/T5168.hs32
-rw-r--r--testsuite/tests/simplCore/should_compile/T5329.hs129
-rw-r--r--testsuite/tests/simplCore/should_compile/all.T125
-rw-r--r--testsuite/tests/simplCore/should_compile/dfun-loop.hs41
-rw-r--r--testsuite/tests/simplCore/should_compile/rule1.hs19
-rw-r--r--testsuite/tests/simplCore/should_compile/rule2.hs18
-rw-r--r--testsuite/tests/simplCore/should_compile/rule2.stderr33
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl-T1370.hs7
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl001.hs13
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl001.stderr0
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl002.hs10
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl002.stderr0
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl003.hs42
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl003.stderr0
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl004.hs18
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl004.stderr0
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl005.hs25
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl005.stderr0
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl007.hs235
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl009.hs12
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl010.hs19
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl011.hs56
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl012.hs23
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl013.hs19
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl014.hs30
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl015.hs1683
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl016.hs12
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl016.stderr4
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl017.hs64
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl017.stderr20
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl018.hs12
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl019.hs14
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl020.hs9
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl020.stderr8
-rw-r--r--testsuite/tests/simplCore/should_compile/spec-inline.hs29
-rw-r--r--testsuite/tests/simplCore/should_compile/spec-inline.stderr152
-rw-r--r--testsuite/tests/simplCore/should_compile/spec-inline.stderr-ghc-7.0154
-rw-r--r--testsuite/tests/simplCore/should_compile/spec001.hs425
-rw-r--r--testsuite/tests/simplCore/should_compile/spec002.hs17
-rw-r--r--testsuite/tests/simplCore/should_compile/spec003.hs11
-rw-r--r--testsuite/tests/simplCore/should_compile/strict-float.hs13
-rw-r--r--testsuite/tests/simplCore/should_run/Makefile3
-rw-r--r--testsuite/tests/simplCore/should_run/SeqRule.hs16
-rw-r--r--testsuite/tests/simplCore/should_run/SeqRule.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/T2486.hs37
-rw-r--r--testsuite/tests/simplCore/should_run/T2486.stderr24
-rw-r--r--testsuite/tests/simplCore/should_run/T2756.hs15
-rw-r--r--testsuite/tests/simplCore/should_run/T2756.stdout0
-rw-r--r--testsuite/tests/simplCore/should_run/T3403.hs32
-rw-r--r--testsuite/tests/simplCore/should_run/T3403.stdout2
-rw-r--r--testsuite/tests/simplCore/should_run/T3437.hs19
-rw-r--r--testsuite/tests/simplCore/should_run/T3437.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/T3591.hs206
-rw-r--r--testsuite/tests/simplCore/should_run/T3591.stderr456
-rw-r--r--testsuite/tests/simplCore/should_run/T3591.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/T3959.hs67
-rw-r--r--testsuite/tests/simplCore/should_run/T3959.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/T3972.hs25
-rw-r--r--testsuite/tests/simplCore/should_run/T3972A.hs86
-rw-r--r--testsuite/tests/simplCore/should_run/T3983.hs5
-rw-r--r--testsuite/tests/simplCore/should_run/T3983.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/T3983_Bar.hs15
-rw-r--r--testsuite/tests/simplCore/should_run/T3983_Foo.hs8
-rw-r--r--testsuite/tests/simplCore/should_run/T4814.hs39
-rw-r--r--testsuite/tests/simplCore/should_run/T4814.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/T5315.hs89
-rw-r--r--testsuite/tests/simplCore/should_run/T5315.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/all.T47
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun001.hs14
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun001.stderr0
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun001.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun002.hs23
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun002.stderr1
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun002.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun003.hs23
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun003.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun004.hs34
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun004.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun005.hs47
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun005.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun007.hs27
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun007.stdout5
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun007.stdout-ws-645
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun008.hs18
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun008.stdout2
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun009.hs149
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun009.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun010.hs313
-rw-r--r--testsuite/tests/simplCore/should_run/simplrun010.stderr1
138 files changed, 7120 insertions, 0 deletions
diff --git a/testsuite/tests/simplCore/Makefile b/testsuite/tests/simplCore/Makefile
new file mode 100644
index 0000000000..9a36a1c5fe
--- /dev/null
+++ b/testsuite/tests/simplCore/Makefile
@@ -0,0 +1,3 @@
+TOP=../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/simplCore/prog001/Makefile b/testsuite/tests/simplCore/prog001/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/simplCore/prog001/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/simplCore/prog001/Simpl006Help.hs b/testsuite/tests/simplCore/prog001/Simpl006Help.hs
new file mode 100644
index 0000000000..81baad3aee
--- /dev/null
+++ b/testsuite/tests/simplCore/prog001/Simpl006Help.hs
@@ -0,0 +1,3 @@
+module Simpl006Help( forever ) where
+
+forever c = sequence_ (repeat c)
diff --git a/testsuite/tests/simplCore/prog001/simpl006.hs b/testsuite/tests/simplCore/prog001/simpl006.hs
new file mode 100644
index 0000000000..ac38869638
--- /dev/null
+++ b/testsuite/tests/simplCore/prog001/simpl006.hs
@@ -0,0 +1,19 @@
+-- !!! This one sent 4.06 into an infinite loop
+
+-- But it worked ok if Simpl006Help.forever is
+-- defined in this module. I have no idea why!
+
+{-# OPTIONS -O #-}
+
+module ShouldCompile where
+
+import Control.Concurrent
+import Simpl006Help
+
+after :: Int -> IO a -> IO a
+after d c = c
+
+every :: Int -> IO a -> IO ()
+every d c = forever (after d c)
+
+
diff --git a/testsuite/tests/simplCore/prog001/test.T b/testsuite/tests/simplCore/prog001/test.T
new file mode 100644
index 0000000000..bfe2dcfaa3
--- /dev/null
+++ b/testsuite/tests/simplCore/prog001/test.T
@@ -0,0 +1,5 @@
+test('simplCore.prog001',
+ extra_clean(['Simpl006Help.hi', 'Simpl006Help.o',
+ 'simpl006.hi', 'simpl006.o']),
+ multimod_compile,
+ ['simpl006', '-v0'])
diff --git a/testsuite/tests/simplCore/prog002/Makefile b/testsuite/tests/simplCore/prog002/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/simplCore/prog002/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/simplCore/prog002/Simpl009Help.hs b/testsuite/tests/simplCore/prog002/Simpl009Help.hs
new file mode 100644
index 0000000000..ac75943016
--- /dev/null
+++ b/testsuite/tests/simplCore/prog002/Simpl009Help.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE ScopedTypeVariables, RankNTypes #-}
+
+-- Helper for simpl009.hs (see comments there)
+
+module Simpl009Help where
+
+import Control.Monad
+
+newtype Parser s a
+ = Parser (forall res . (a -> [String] -> P s res) -> [String] -> P s res)
+
+data P s res
+ = Symbol (s -> P s res)
+ | Fail [String] [String]
+ | Result res (P s res)
+
+instance Monad (Parser s) where
+ return a = Parser (\fut -> fut a)
+
+ Parser f >>= k =
+ Parser (\fut -> f (\a -> let Parser g = k a in g fut))
+
+ fail s =
+ Parser (\fut exp -> Fail exp [s])
+
+instance MonadPlus (Parser s) where
+ mplus = error "urk"
+ mzero = Parser (\fut exp -> Fail exp [])
+
+lookAhead :: forall s. Parser s s
+lookAhead =
+ Parser (\fut exp -> Symbol (\c ->
+ feed c (fut c [])
+ ))
+ where
+ feed :: forall res. s -> P s res -> P s res
+ feed c (Symbol sym) = sym c
+ feed c (Result res fut) = Result res (feed c fut)
+ feed c p@(Fail _ _) = p
diff --git a/testsuite/tests/simplCore/prog002/simpl009.hs b/testsuite/tests/simplCore/prog002/simpl009.hs
new file mode 100644
index 0000000000..bac2bafbdb
--- /dev/null
+++ b/testsuite/tests/simplCore/prog002/simpl009.hs
@@ -0,0 +1,23 @@
+
+-- This one killed GHC 5.02 with a funResultTy panic
+-- The reason was that the simplifier was doing a
+-- case-of-case where the result had a polymorphic type.
+-- This in turn showed up because of a newtype (now
+-- transparent) with a forall inside it.
+--
+-- It's quite hard to tickle this one, hence the two-module setup.
+
+module FormParse where
+
+import Control.Monad
+import Simpl009Help
+
+identifier :: Parser Char Char
+identifier =
+ do c <- lookAhead
+ guard (c == 'a')
+ return c
+
+
+
+
diff --git a/testsuite/tests/simplCore/prog002/test.T b/testsuite/tests/simplCore/prog002/test.T
new file mode 100644
index 0000000000..1394874e16
--- /dev/null
+++ b/testsuite/tests/simplCore/prog002/test.T
@@ -0,0 +1,5 @@
+test('simplCore.prog002',
+ extra_clean(['Simpl009Help.hi', 'Simpl009Help.o',
+ 'simpl009.hi', 'simpl009.o']),
+ multimod_compile,
+ ['simpl009', '-v0'])
diff --git a/testsuite/tests/simplCore/should_compile/EvalTest.hs b/testsuite/tests/simplCore/should_compile/EvalTest.hs
new file mode 100644
index 0000000000..8fce496ab3
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/EvalTest.hs
@@ -0,0 +1,48 @@
+-- There was a bug in 6.12 that meant that the binding
+-- for 'rght' was initially determined (correctly) to be
+-- strictly demanded, but the FloatOut pass made it lazy
+--
+-- The test compiles the program and greps for the
+-- binding of 'rght' to check that it is marked strict
+-- somethign like this:
+-- rght [Dmd=Just S] :: EvalTest.AList a
+
+module EvalTest where
+
+import GHC.Conc
+
+data Eval a = Done a
+
+instance Monad Eval where
+ return x = Done x
+ Done x >>= k = k x -- Note: pattern 'Done x' makes '>>=' strict
+
+rpar :: a -> Eval a
+rpar x = x `par` return x
+
+rseq :: a -> Eval a
+rseq x = x `pseq` return x
+
+runEval :: Eval a -> a
+runEval (Done x) = x
+
+data AList a = ANil | ASing a | Append (AList a) (AList a) | AList [a]
+
+append ANil r = r
+append l ANil = l -- **
+append l r = Append l r
+
+parListTreeLike :: Integer -> Integer -> (Integer -> a) -> AList a
+parListTreeLike min max fn
+ | max - min <= threshold = ASing (fn max)
+ | otherwise =
+ runEval $ do
+ rpar rght
+ rseq left
+ return (left `append` rght)
+ where
+ mid = min + ((max - min) `quot` 2)
+ left = parListTreeLike min mid fn
+ rght = parListTreeLike (mid+1) max fn
+
+threshold = 1
diff --git a/testsuite/tests/simplCore/should_compile/EvalTest.stdout b/testsuite/tests/simplCore/should_compile/EvalTest.stdout
new file mode 100644
index 0000000000..4c7cb1c0b0
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/EvalTest.stdout
@@ -0,0 +1 @@
+ rght [Dmd=Just S] :: EvalTest.AList a
diff --git a/testsuite/tests/simplCore/should_compile/Makefile b/testsuite/tests/simplCore/should_compile/Makefile
new file mode 100644
index 0000000000..99ebd0f1e7
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/Makefile
@@ -0,0 +1,51 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+T3055:
+ $(RM) -f T3055.o T3055.hi T3055.simpl
+ '$(TEST_HC)' $(TEST_HC_OPTS) -O -c T3055.hs -ddump-simpl > T3055.simpl
+ grep 'I# (-28)' T3055.simpl | sed 's/.*\(I# (-28)\).*/\1/'
+
+T3772:
+ $(RM) -f T3772*.hi T3772*.o
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T3772_A.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T3772.hs -dsuppress-uniques -ddump-simpl
+
+T4306:
+ $(RM) -f T4306.hi T4306.o
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T4306.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) --show-iface T4306.hi | grep 'wupd ::'
+
+T4201:
+ $(RM) -f T4201.hi T4201.o
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T4201.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) --show-iface T4201.hi | grep 'Sym'
+
+# This one looped as a result of bogus specialisation
+T4903:
+ $(RM) -f T4903.hi T4903a.hi T4903a.o T4903.o
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T4903a.hs -dcore-lint
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T4903.hs -dcore-lint
+
+T4918:
+ $(RM) -f T4918.hi T4918.o T4918a.hi T4918a.o
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T4918a.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O T4918.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) --show-iface T4918.hi | grep 'C#'
+
+EvalTest:
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c -O EvalTest.hs -ddump-simpl -dsuppress-uniques | grep 'rght.*Dmd'
+
+T5168:
+ -('$(TEST_HC)' $(TEST_HC_OPTS) -c -O T5168.hs -ddump-simpl -dsuppress-uniques | grep 'patError')
+
+# When SpecConstr works there are no STUArrays at all
+# The "-(...)" ignores the (expected) non-zero exit code from grep
+# when there are (as expected) no matches
+T4945:
+ -('$(TEST_HC)' $(TEST_HC_OPTS) -c -O2 -fno-liberate-case T4945.hs -ddump-simpl -dsuppress-uniques | grep 'STUArray')
+
+# When this one works there are no 'lets' at all
+T4957:
+ -('$(TEST_HC)' $(TEST_HC_OPTS) -c -O T4957.hs -ddump-simpl -dsuppress-uniques | grep 'let')
diff --git a/testsuite/tests/simplCore/should_compile/Simpl020_A.hs b/testsuite/tests/simplCore/should_compile/Simpl020_A.hs
new file mode 100644
index 0000000000..d7ac756b65
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/Simpl020_A.hs
@@ -0,0 +1,27 @@
+module Simpl020_A where
+
+class GUIValue a
+
+class GUIObject w where
+ toGUIObject :: w -> ()
+ cset :: GUIValue a => a -> w
+
+instance GUIValue Int
+
+class GUIObject w => HasSize w where
+ width :: Int -> w
+
+class HasSize w => HasGeometry w where
+ geometry :: Int -> w
+
+class GUIObject w => Window w where
+
+instance Window w => HasSize w where
+ width w = geometry w
+
+instance Window w => HasGeometry w where
+ geometry g = cset g
+
+instance GUIObject ()
+
+instance Window ()
diff --git a/testsuite/tests/simplCore/should_compile/T1647.hs b/testsuite/tests/simplCore/should_compile/T1647.hs
new file mode 100644
index 0000000000..b785a405d0
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T1647.hs
@@ -0,0 +1,5 @@
+
+module T1647 where
+
+foo :: IO ()
+foo = putStrLn "Foo"
diff --git a/testsuite/tests/simplCore/should_compile/T2520.hs b/testsuite/tests/simplCore/should_compile/T2520.hs
new file mode 100644
index 0000000000..f0115474ea
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T2520.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE GADTs #-}
+
+-- Trac #2520: a bug in the specialiser when we tried to
+-- quantify over an Internal Name
+
+module Types where
+
+data Prod a b = Prod a b
+
+data Nil = Nil
+
+class ProdSel f where
+ nil :: f Nil
+ prod :: f x -> f y -> f (Prod x y)
+
+instance ProdSel SqlFields where
+ nil = SFNil
+ prod = SFProd
+
+{-# SPECIALIZE reproject :: SqlFields a -> SqlFields a #-}
+
+reproject :: ProdSel f => SqlFields a -> f a
+reproject SFNil = nil
+reproject (SFProd a b) = prod (reproject a) (reproject b)
+
+data SqlFields a where
+ SFNil :: SqlFields Nil
+ SFProd :: SqlFields a -> SqlFields b -> SqlFields (Prod a b)
diff --git a/testsuite/tests/simplCore/should_compile/T3016.hs b/testsuite/tests/simplCore/should_compile/T3016.hs
new file mode 100644
index 0000000000..d05bd1008d
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3016.hs
@@ -0,0 +1,584 @@
+-- Test Trac #3016.
+-- The issue here is whether it compiles in a reasonable time
+-- With GHC 6.10 it took hours! After fixing the bug (which
+-- was too much inlining) it went down to 30s.
+
+module T3016 where
+
+newtype F = F Integer
+data P = NZ !F !F | Z
+
+largeConsts :: [P]
+largeConsts = [
+ NZ (F 0x1f8bd0b0c77369f3c5a1943c01215cad8c7018c4af1a588e6eF81c0a39e0a50db8e55bb371d956b15dbcb13ab12af532b1fc6b7ddf0a13d12dfaa76051132b84020bec72d2f265) (F 0x44a9e41f77686550649d5d124021aa477516211625bed15762a0729a0d052c71e99cdcdde7d245c0ab279cd4fd5b554d1f5f5e4ca912c0051df85de732dbc5f672c49f12215103f)
+ , NZ (F 0x1717e2a5c3ee28F6db3f13b087fb3e9efbe38772ffc1f1b03e0f2bbccc016ede33153d46b7ba33618c056cb2f35eda083af75b17115e138483dc59ad83F1077a2829e20bfF5f) (F 0x0c2a90da370b1b8963dF950c975806f6de5a01e5152b4850b2ff99d1f8b0726d5d2f0bb850aba987acafc99b70c581abe9dd39e7bfa4acfb303e76738ed001dec5032359c3ad2c)
+ , NZ (F 0x0d9bae2a98471270cd81eec78d6c906d5db35cdf049f56822b5910fa9b03bfbb07bff09ccec3831c4e4b04485F70a460ef8e0a88f6be4957822bf3c997f34dba2864c6cd47e0b1) (F 0x5c08664f55b7ddce2277f251725bc76ea968ef0c4e4a8522ef920d9dcd36d68704b1c7f03dd54154F741e1970c4cf3bcb055b4938ca787179aeada021e2d7795f52484cf504837)
+ , NZ (F 0x68989557c872f0f3b33eaf57e55f7d5853a2b61c368ae0b602b587b6ed600856dad98d83fc0F370ff6f229b3a0aa3a5fc9ce9d05ebf7f8f531071479c643f0f914226df4a875da) (F 0x0069c79079321474fab6bc7d302eaf60ec2dde78023a2865f2d428be48c8c24fcdef0c049d2c9d6e4f67d37a00b6542813d485d3b3c04a6292513775d4f86d8a288741074d5c88a)
+ , NZ (F 0x0ce80da044b946af21a69e31ac4fc1e5a42bdb8d6cf99fd54ad02087cbf414483145ec8bc2c2b05bd90db5abcb55b0d3fb7c5c9f23acb5605392e16836df34898ac0e8a244b2f42) (F 0x6f19698a2e8a07619db0cde15c261b4bb8f4a2b0332928e2c2529ad04414c7cfb84a38514fc0d6e807dc5e1ba2c35d14cc2d1756df443f407a421a96a96a9f6c945b38b51e6a3ce)
+ , NZ (F 0x2d549e10fd758033c2d9c42b9581291395f196c0c235e8eeeb2c7ae1aae4b81009e50632287b9225b28c4a07be3b32136c2df76bfda3db44ec1ad3c2c75198ba88c48df3acbcf6c) (F 0x0c8433cf98b3a74bf644a38e2b1665d340e68d22b0e12725b6b152c67ea8352247b3be4c454b005362de4f74aba48083374d2d35c94e668f989c2705e86786a9ae6f4551f7098f4)
+ , NZ (F 0x02707bea041e78a21de04f0d99de3767a77af119bF08ee2d2645f76517f7716bbb9c342a4025a5743c82720c932c2d7c140c3347e1585a2bbc54c9185e8005064500bdcb5b602c) (F 0x402be6d62231db6644fF204e039ac366db5c875d624d19b454e267e8661e6c1b7857ce8d9fa88b5dfa232b66b743d193ff8df776dbe191b9b488a30f28b74ce622631e0435082d)
+ , NZ (F 0x0704694ba693174331f08b462effdf5fdf4248a09048a5752732794f317d797982aea4a73de08545332d7fd3e47204cc76d234178c70355fd134dfd3c09db43d984f1c5368000b7) (F 0x68c6e1741a6b6c05e0c9a7972ab61beaaf5ba808198574d76988664f6ac08f67cb8a28f39f7fbd4beee011a784f4e7720091f69ea9670e8307f52b1468ae03a1d55a9F4601b560)
+ , NZ (F 0x1eea11c3d5391cd112c54b56181845a38e0e819460bf38b14224afff8e365364e2b21a6d1b1e859ac53349118cfc49ccc8f43c2e2082f846da7e7289b03e33F6301e23fd3be5b6) (F 0x501188011b45eeb4e0849a15441c48e3244b5453798223d3f8207c836fae1561a88f27b49e5d903044c70bf100be066be47f6ffadc1f93e21dd6d73e76922566128b13fc7278b78)
+ , NZ (F 0x6f4028f5d3c848c11979294848d590bb60c04aaf4a755c955f0674da8d4f16061f2a2ef10af04d4ad4361a577114b3862decc1606efdaae107b97ebfb6658898F3274d5ed773bc) (F 0x24c24b6001f97364416d1ff2924e85d008d142b2de80ea133e12253c460548f2fb16514f31c6199a4471934c75441821d87c88ab4e29212d19d3e9493f8bd478c6728c32F3ce87)
+ , NZ (F 0x2cdb2db5887b8d5e72c360b7aaf778dc90f3982d32cb4800d0a4d89a62716195fb4bf34ae6a9b9f85b845fd1265ea348f979553d16ad17dda326eeed5ffba79d7937926417aa87a) (F 0x6f2dff0a5a06ff421c5713002ae47a29e42e1a9537c049f8d8e2fc82232cc41fa9acb6a93069adc0dc5fdb5041dee65f972255a0174c139885cdbfa1767cef3f21fc8e20691af54)
+ , NZ (F 0x62e3e472a5361e3a807e35e3a0ef747af308399ecebaea7172aaa5ecb464e237021ca06e7592241098c027a1d6170ae09610b3f2a43ef705420e62455f0a4d3c871327cd626cd49) (F 0x0c0ae9be79663ad7af9a309910ef635e6a29f43d6852073e91f33ffb825ed1e458ec59558e50aef20a2a2e764b64b6d638f05d48cc11289ec6bf34ebeb4ef07ca2d1e316e85ce1f)
+ , NZ (F 0x692a88b4f4bb1fb765c852fbc801e30da715debdf38f6b6671a0f8d0f2f19eeafd5074dd3ee3877fc61aec49ac10e94abf9d575fd0c805d56781958bbb2fff32f9bac3cf217a3db) (F 0x6a12b076fd8c5c6bf6a80abb9c86b3c8a046c6f54c1803988c788e678134b1cc9ebe3d4fd1d94dbca40af830e430019022d595843133e95b25191eff98238e2f9a158ea6ff146dc)
+ , NZ (F 0x12f4F60602c7275862f75b0c6a37f620ccb9ac01428f4871046ba7443c27f82ce4a20d92c7f249a9586737cbc4ffac2d26094dff3ba865275b53195d8e93776be097ae89b638e4) (F 0x357d198c192d31d0a51ab8b3171e973deb0a65434d9641640b265ccded2c66a1154d3e0d1fb78de562e98ea17014da4716027279d4043e842195d6490f7de4ef71bcee694bc95df)
+ , NZ (F 0x1fa9d46086685069b0c658aecc29fc5e0720c1db18a453b475932681ab021ad7d0e8c61319c3c5eccd408caede59807f9683a344ef6248b6b7af652d844b94f469a9f097bdf7154) (F 0x69cb3584e77b331a39272407d9332ae3d756baaeae4c96d3206a82a53ec0dfbd933689521a88b7cac055af2692e8346d865b8042175098010c9f329157c314e74e40171f607c6ca)
+ , NZ (F 0x4e11fb21ab6cfa37dcf0e86191b8ac3ee4fcb59d45711145026697d6071f626d42831798b470f579298298e4d0f6888ae11e8f78dc7b67f0d00f51f82dcb93bc5a26c10e0730413) (F 0x19e5a32f6382ad8ed9a8c6d309238ac01632d19b19cc05317073dc7e1297ffa011b42e3ec6ff6e3f46320d5d4593fd947F9722d0a0ba46c713c18817e12b2879546fb300cca135)
+ , NZ (F 0x2af9b31ee022468cd99ade25ad532074c28bF69b9acc043253f938c6265526ee0088bee7b5ebf09cb4978ccaa26da8822de16f966a97e2af85b857aef07f3ed014e3df6692446f) (F 0x61a9192be5e230f9d3fc256320a6145ac8d15a6533d2fa28d7cf23f5e538fc84b463f6182a9b725d41c7e29fa7c4477d4302243a5fa529202a60c8f5e7e43279245F7f364c1706)
+ , NZ (F 0x09893af62c3f9ef91c390ea927747e97a26ee968c48ffd8a33eacee0ffa5bec85dc9017260bf10e0f6c50a6ce5105b8fa98d03a12934cbb1c17b00a882f11b5ce476b1782f5c481) (F 0x0ebaae4919b808ee0a8c84ff691291ce5eb17b47e3fc53f703bd450862e41997964b12ee13F6a32c5d851ad4c7de72ab54b430977fb1044aad5396acfb93e2911de6bf61089909)
+ , NZ (F 0x2ac7ece094487ec15863238cFe36f7d3531f7af3ea6f7bfa901426F4ff9de97edaefabdf3317bc5705f817b9ba5462cd15853b24e243891f6103cba63424154662aa511e4c884) (F 0x6460c199fd17a691d361313748c332357bf2c551eb6a34eda7ca050563dca0decfda32e24e9a521620773f23cd8c1867243971853ab5e8524257d59e7561231b0098b86dee4038b)
+ , NZ (F 0x3d27d74eecc5c08ac70a331978363cda968654682a541c83e4b9eed30049eb5ce19ac1d44773a8f4eb15a9a16f658b1c55a7a8d0387a8da1e527ac43150827be69cb6a385953165) (F 0x632b43b7b47a86614cd9f563022cf5faf83e3a18289783836e7ee17624c88fda2bbd168e97adeedd2cadc36d01a699186c24172d97a5a4cabd6e92e5ee75065fd0a21560021a4c1)
+ , NZ (F 0x10e0b12b928b59df4156f4947a3699ebb15eb77dd7053a4193d8d539a8208b3328741ff1f4214312cf2ac517d578b6258720e326e5e3ce6ebfabd76a33866588333aed8eaf6d2be) (F 0x5b45cac3c6960f930473dc92a59776c705f6788f6d4f9bff84ff23a27b2712d5925a6a412dc42c5771dd740e60efdba850b00409908628b21dce05206d6239b9dc17bb93867a276)
+ , NZ (F 0x10f3e3d9b513c66cc5e385c5a0345724b6b12fdacff837be94e3f6c03717f1514d055df9488be6eaa7e3559f18e1af7b8ea2f9F80b51a82410b04599938403b2c0a0be25281a7a) (F 0x48e6633596ae39992abf47cfc683e1f5adfc35795630dcda7579d2805ccf95aff18caaef786f5f8ec9e4b6cfd74d0088F79cf9b9e3dfbbe22136a5F8fb89114eacde7971ef4dd)
+ , NZ (F 0x449dc8767edd713b02dbb079eefa7fc8ce9fF3f993584be5f75484f4e527f3322ae9f09ad43ef3510Fb031cb4F90f2690ec6311d46d8f9a5a31989279ce0a1b56097c60b594b) (F 0x33b1c40d75365bce66ffdbF6825b2a68fa2d9542ee14604c7710c5204f8491e77d47f40f81ebc8f7ca6d55194e48c3edc742ab20f44099fb87e10774bd10e65f0ca9b102a42f40)
+ , NZ (F 0x2f972908d156af47cd0f810f5f8274b1d374f48e58f103d4f4ac7548b2395639893c0f717e7a796755ec87bd72a8c20466f6a9821cc8ef7adcc8ebd4a996953e328c6Fa81ad718) (F 0x7f8d43bb33c1bd3cb05a3484a087152bee4a93894cc941240fd3611f2d7877397ba3b8e18539547c423dc26924dc1542040b15a4671ec2e72f0352924d7703f101d1cF2e3a59ed)
+ , NZ (F 0x0c6fca7259742ea612b83a60099afd0e44ee6236d56938ad45235f57e7da9d2d36a18c821ebc84af4f946739157c9945fc2225f0fc20b5fa2533d4422f42a8e4fd526a935ee909c) (F 0x265dba8d9490e018f8fb859625c5c664f8e877984d15f74397c8481d04574392c76467d2177eb438b0bfb8d7e898268f425a327b61acaF7263ecebc1b82be2630a8eec65e74961)
+ , NZ (F 0x0804bbf283e6a01d5193Fab80a61f4317217d624a416c11781b8d51563578b9d9834b02a73ff2582796042adbbae9e79852479aba7e9a20e55ec1b0675b6934cdfd39914f3eecb) (F 0x64a61d5f7afa2331b99e53a9e7f459d3829b85c2ca77b82885e8d41f18f8811aee847c6177f88179b3df079034dabe90e36e81a37665585eaf86acb2967649e2062a76e575eb51e)
+ , NZ (F 0x32b3d9e6102f41847cb6c2d9990875fd8f474fc2785a91b8aad7b2b788dba5b4f205fd45faad58f42d2a1336a7a2bc7e4baecfcb7620a429b1df916c513fb748329f9f184a2135d) (F 0x0b1d61a8233d5cab3cc6b73703f617508b93d7ab7928e8772e3b5b491bbd07637ffd13d2fa0bd1F94619430ae87d0750437820516984385383d955aa77e4baf9af86cff2eaabcf)
+ , NZ (F 0x7914c149a93adbef0a2f4652bfb22e56fcaf19d6731b203b4e54f5ea5cc8178612192ff14511bb5645f1f0986ca66cb13a6e175e5ac525d56455b0dd2d65e1f12365f7318f101fa) (F 0x7e2150105e893d245964b8b67877fdfd2fb5bb9b11e18263207ab62d699a8a9ffb564fc90c54f13a01644bdc9905284e72e78ae50bb6ca0555f3332cee0F1ff815c2db743632da)
+ , NZ (F 0x00f98162baa57c158fadd74a11f85c9ada738dc4297e3a8aac33a3bbe11a4033984414bf2430439fc87869d4618961c22d3c3b2d96181cdb5781d588332c36c00e73a3b8ea665f2) (F 0x3f8f2765c88a18f91f58fc4929be654c5f1f2668ce9b138c45c8130e411d4ffb42f03040b3c27d44aa55771cded9f694fc462bFe790b226b8ac322509dfb2df335baca96c194cc)
+ , NZ (F 0x2ed1b863af5cc6ec631d41a0087427989b5f6fa23f059f989605e419083b4258cef955b93ca731072d40593a8021d994e0d6de20069b087587f3fd666a4e688dea1e4e595406a4c) (F 0x42be26b62e46b02c25fb998573769b0758dd00bebd5330650f7f988053450a579bb10c30ec37e01e79356b1ec72658742d9ff0f6ab42a874475e004bd2bbba8361aa52907170dbf)
+ , NZ (F 0x038586a9f436a96f0e54f3fba5228e60017abc4dc4188603a8152167b64948b728238188516ecace3e03fb83d3ec13d3d8987c05bad80bd240c085aff4124ff3bdaa3228beddebf) (F 0x53516d45ff41ffd92de5a8151ec2453971cac4106393f2a3929c7513dc6a586325a324987896f846de1514e95bd9b297953d519570b5851864d2c7edf292db15a49d54843fc4cc3)
+ , NZ (F 0x0a152a03190a01eadb5710587cb605c31dfb0536780638de788bd416b20424a46bec12dec2840abe593524f7118deaa8b1c4e164887914cf11eed5c3344110ad8278a7331084e85) (F 0x212f1987e1867ff743bb3c76db9e5e8ac38daf3ef4e7a28c9652c7996b5bc9fb3cde926ac225eaa015b1cc285bbee989205f40b32af5295ba1e7b676e4cd2bb514f0cccae479ebc)
+ , NZ (F 0x73bf84dfFc477c8ff722e1d4e43530832903bbab606b936d2499bb7737b6bfb28bc67a8cc35977dc1ef80c9675bb5009afc5ae4b894f3b52857ed41c7ef275670a05f073aec47d) (F 0x78a5b7abb4e863130689a7bcd9ac705bacfccd966a7b8ae6d64b9750304192a957faafc82102c78a3abe3da1b788be674405b343f29624e5ead2ba09d5bfa79d42e3f7ae5332d34)
+ , NZ (F 0x1138c92923ccf725ca84881af969Faa09cdd8164d8eca1acaddcbfa0bc849e99ef28e93111717fc4c101b3e2db6534b59f806888b692f014f1580afbe1ca3e448cf09b69543cc4) (F 0x73b180d7fc410beaaa8b1aa68b6c63e949487686f036b1ea152f48f19b77f8b1397814b88b1a7ce4fd3da0d66e270da1d1ac6f5e080a7920f3cd557e6c90074f39be1da3ac7a671)
+ , NZ (F 0x46fd74da3aadd6141e5a94e39615c04fb9b93f306d78c8890eddb9ce9ce4d98bcbb07f8876e1659aefa6ded749004392d9baff1c102ccf2c8Fec4d154f5f758c0511953acc42ba) (F 0x7a37d404c33e6b38caa4c83a81ed44915ae00706e696e6e690753b1facb05ef63a9956aeccc50831830e7e63265fc3dcbe5951a613269cd9029b081a345630726ec6659464ab3ee)
+ , NZ (F 0x110ab86448753b13e1f7bcac2208802ccc8e175dd4446288cf55eefc2d90a84fd8d3841621a49a90f32afaaeaae91da25b9c50dfac657e03eebbf6506f83580ff1b09b9c80a3d89) (F 0x50d4ea69ff2cd6458419aff177d5aa380a95cf9c4b9120c26a77ba7f3ea787e72b8d735f2083e9eef4e3e50ec29af24294d5c7cc175489514614ebf45f36a47241e4f54dcaeff35)
+ , NZ (F 0x11a4f4644af9824a9fFa3882886fc08666bf7eaf9877d52f2bf625b819909f783817502f03f01754959ef989ce4c91df73b8f4bd876a8f2ba57f443b1878e3F2f0e4b239c7f0e) (F 0x1b6fc9c9b84d52b9fc1252a40db309018e42406bfdd0bd7a50f602cda7b3da428607049fafa4201d7940F261b1524798d0b0741605569141783c0b1ab7151f45f2528d539d9fd9)
+ , NZ (F 0x2f60711ace1bdd6526ce0e0636ebe2b349432abad66cdeaac2a0612d003a9a6ecd6117eafa2ed852633890d6f23931c7b568affdade16d8708c4c883e27ac9ec4b33d8df02ab69b) (F 0x4dc2025aa3ec598bc7f28f10d42eb9ed52661265b5d791b5936d9f4e0ec8ab9da5b01efc2a2948128dd3aba9b59eea9805736c3F528de588ce62c4e176e6193cdf8157639d4dc3)
+ , NZ (F 0x606cbaf12f6641692858e44dbe300a70017e1873b48a1cae6093b3da77e0a5e72611e759f868013c60ef358d55932b29a7f472c5a5af431a760f486dcf4af1cd96e2a81d21ace33) (F 0x20c98a6081c7ffba1e26fdcb02a171b449308325d297141395ed457a591c832c890ef464f2c7e226d7d24e582012a023d3e6cc60cd2085d19232e5a241e88747f72a92136f91cbb)
+ , NZ (F 0x1cf0d9a7c117539d05b0d196664bac61d3f69d7f1f9c8d5d99e789d5bcde4cafab89be1a8ca286513f6aa24b5cbd9207730382931f23ebc4e6773e69666a155dad73f31a1b8276a) (F 0x68e994a0a3967893f2f5fd6d34014a6a417485c3777633453cf68f14525b7f912bdee1ad5e355c94500ba02ad7fa69047e48d602273e8948bff7721b52dfc7d43e685cf11364bb1)
+ , NZ (F 0x64dd3887685a42a260299612de16aba7362a3a26990ca064f52940c0068dc94d1730b042de8bae85e8fc78904a05c906a18a7556042c35f9ad50b203528f575ccc7a2ef28f795f6) (F 0x6773b2b064e481bee3ce92a8910c24579223a86f7d2983a763ebaaf2964578cfd1f0c4c4866b8b968e3b736e6d81044b43b69177ce36a27b217f8cf4eeabd87f21e31b6da6f07b8)
+ , NZ (F 0x18892d70cf7c7ed14c6d774d4d8fb06cfc4d88b2cb64bdc2b33bff0228fad5a5aa72fc0c29ab716482c3395e5190F37c3168d43ab6ae7a2a8fb8eb4ac352e4d3b3e452a6958907) (F 0x154387f1e6d3231df9fb4f29f9a7178fd0efc1bd46456f9938df9a9552224fd362d26ab98fbcf5f6bfbfad71cdbf4c84deb34b52f0341e5604a5b54F9cc04db98b1ebcbb4036b3)
+ , NZ (F 0x02dd16a2337c17b756f1207b9e41fd4ff0c90a85eb82d3cff979347006eae0e8346bfbe10f63258166bd01091f907003c9c644fd7ce21a5e0e945e2c293a0b956919c85ad023c1f) (F 0x17b14cd98559da52338cd0b517e85e39ebd6e78c1632acc70ab07e4021bfb1dd929978380140a2cd4beab54c0651a420d82ad3e5e834b0cc54d96669f565e083a8117ae4352490a)
+ , NZ (F 0x38fb0d2cf73364bb64298d3f5df997a307e7b3d577e6839970111db788269b87bdb14eb03a5304aa767c583349ea2d1451da96b38045b7d70db026ac0b4526646a2a8717521ff4f) (F 0x3780c7f465656367caabefcfd330f6ebea232ecd6a309acff73dded18f1e8286d32004658316a3e36cdd7c50a4251bf64eb232ebbcd70da553a21473b5899ff56cf87470af63d90)
+ , NZ (F 0x5681aa548c1597856b5041ae597002ec0e635698e62e68a8F8d13272279d686b51d3057d25f66136e87049facba85444ee85e2804a9fcaab066ef222ecaa88ea6d05e6d72d1593) (F 0x2a8774a7c3d9534a42395cf20975f1b2371252eec136a74f21a5168d66e2eb61d40ddc37e108fd23eb185d76eceaa3210f0eb8f8e41b9870727580e7cee54552369662893e4ef86)
+ , NZ (F 0x15ecd31944ec9215b045e80056682aee721adc0c80cb2e74346bfaada9eda5b1afd412a66b74c890630377f4ed013140404a999dff8f1b2d7bb97fb7c80f76c94cd1d7948cdfb10) (F 0x03c02bac8c24a2d00574534e2095a3c83e245b6cbf337adcf1f0f4c7e2bc0ecbc0f90a052323ee24068a6395342f6fd9ec31fbe0b406e0bfaa1a219e96c9d8311b75b6787617b0c)
+ , NZ (F 0x3d3d6fcb01f68af98246e3f3a45d75f2e83128831e6426c8d64a50d5fb1dc7249e9b93cd292271460b5a0c3b6be84280abf850a80726b67842632f741258e61159acc78cbed27dd) (F 0x0eaf0687eb8163fc4871712bdea607f0fbf5d6db8c367db111ab3d161b952864b88e7f87cbadcb4993a382cd75f71925adc5dae1253d5ee669d53d883da2dcac57634dde5b5d1c4)
+ , NZ (F 0x51ba2361e95a1fd067599de19a8ad87d9256e9497c198d031abf1535e1d22dd01ec62b07454da7509972b0803b0352da4681cfdf2d1ac376a0ab3b7100258d529ed8dc88ea8ee02) (F 0x243d5f372c356fde79e8d0166c98ea0cd5283a9e29af1b8a1203f5be0d47f56a764284599e63424c08dab89774691ddb2970fa5b5423acfc3d1037F1740130c5149620b7b012b3)
+ , NZ (F 0x28b93c69dd210efda8b5afd81a077e58ad21397527a530dc7cee4588be4a1e054b6871b511a5d4e913492f47260acecfae77c2550427c44a87bbb79b9ee79b684a7167200716e41) (F 0x63fc10efbeda768e506a29b4221e3cd8875b26a9f2de6de2Ffa01362b2c6d8f1a9c28dc04bda195f778b4315ceeb6ee6471d7a87ded6f4c603a753f4284a52f94ca14486804dd0)
+ , NZ (F 0x00bed73485f4261b3d520296c518ceedd73c11ac68603ea33cf7ca2375eafdfd1478713007a747827eb6bf4e52fd258e56bd47a359230cc3d540d7b257e0a29b6a14026e9953226) (F 0x492a14a9f8c79ef8e414035e564344fd70226b8858ce3712F6724fd73e1549fd5268e699f45748d1f050fc606136ef50fc59a016073cde7afb757a89230ce6b9bb41a53f3b274e)
+ , NZ (F 0x1836a76659698199c2d194949d99dd213Ff4f40a754a23eb41dd88e5f392de7cc0e2a02ad18ee8f7501d0b7fbaf2a16a7b4621fc82a72b0591b0cf6349de86d167c34ffbb581d4) (F 0x200e3bc5054134518d80b46dc22b3d4101cf661e5c5677b7e5F739eacbaf35c1a9134e7af5cb2F758299a66eF02d1e64e88cc405610fF4e37661960c08178b50d814230f3de)
+ , NZ (F 0x783934681e7c761f9bb135c5e27a3c894e7bbb7914b4a40d57de6b112443e08d165623d60a77464b370c599703ace3b1f403d28650b83736695d6847cdb5669769910859909dba5) (F 0x769741882de1c101ae43f26e8a042523e7040e36af8e774445eabc25f3d4ff5a68df414493e90a11528e58471fca2e192cdb3F4387bb20bdd73d157e20ab60818215706016339f)
+ , NZ (F 0x255b2ca2b903ef6496823f0dcd734fcde4b9cb57f3966a7f79cb5d4f973f90a996548eb5a2af7846c016a31be3c661bc82433d18e22d89a9ea758ec6309c7fc18b9ce5f6c3abbe4) (F 0x04f2b3506de649cb774faac74d99750dfbeba6c988429d001bb7751936bda5de941b70fa1038f3c79b879e9ef3e8bb6301c57393bd664f36880125c9e2d22309566967b60326f62)
+ , NZ (F 0x5ac6f875ebd8b682f1de34316e92fa838039ffb3e73e8470e044580a090f225a48cb7F027dedc4ec7a339defF2c30f1827161adfcca5194826fb831bafbd74bb4fc61ccc0bc0d) (F 0x2a450cf428f48bf7b77dbaed04c1700d5cdcaa53c6e2935e5223107433514a0c957f652fda7ed19c12aa31249cba4a90bf9aa7d5771564325c1eba786c6820b55ac852c2cac54cc)
+ , NZ (F 0x0155a9df1ffb94871f2ef25785c72d0047fbe31f86167fbae322e29dc111cf7249c9c06f8867fbcbea2310450779a0c45f775c28505d35605e17758c9c19c1713c49f2e83270eed) (F 0x7df61e7124b8d4e953bc8768c13033048a18f9a8c0fc683bbe3161a3bbc4f797d1680636b2daa5f2a4c40a93eb0a6e32ccae4730d17c703ce57c089754b12e561cfcf199f216fdc)
+ , NZ (F 0x44dd3e25bF21bf957bbc1b65a55dc5f3ff6322639ec398bc62f54be23f2778e12df961ba17b0d394eb3a1d8ed5eb3bcb9cd6c11d2cba7ea8c751b9bc6c33d4cee1f508e38567c3) (F 0x22f327ec62cc1edb70ddbc993d625d5c197a39677b65fa5be391dd0c5beaa9737aa60edafb79ceb8a122d9bf6886380872e2aaa7ab4b2c65460ff76094bF38a5c96815f001887c)
+ , NZ (F 0x4f2d7eda83f921ec7e46ee568f880daf8580df049e4d3f50a3dcd0841c25F0867cdf149683e92bea1a0bbcf27ae4a98390cd40d1f8e812404fc35aFcdfFe4021ac57f11f48b8) (F 0x1bec80ee0e3216df2e29ecd3b80c5d750233c6b22363a0bd6f54cb18ed0ecd7d068d25424c31dbfaa59a1b4f6984a907435e4cdbe8b3d7ff3e947b2044c31F5d654f6a332a1133)
+ , NZ (F 0x7e79e1fab6d3784ac788b7ab8fba45758255be0901cf1d71f2f5deb6fFd518a54ed822bb5f65bdef300301d34a776c688ca8486fde7ea857ec9b72db52ea8f904e3912fa4a6237) (F 0x721114e65e7d522a55c10eaa64a5297bb8a9bedae918d667d41d21e613b65e1646d5149accf7a9c44f16f797030f158fd331ee04a8517274d162c2d60703ee1cd5585068f18822a)
+ , NZ (F 0x114736bF6eb48158891c61bb296628b28aee02ff7977d9f5908cbf3e557c2781e696ef3dc7f48ae219ee03ea0944fb4ce607fb4ab3bdc569072cc1aed1d4b8682fb6697aa415c5) (F 0x60a6090fdf19df4358d3a1de725c18d2c215f203dcaa03e28c84c52753cb735c28327028e5822ed6119b3d275b3cb96e9e62fbb93a839e40b6a1564836cffb99103e90ae3a8ca3d)
+ , NZ (F 0x5102ea2acf66d3c49c23c6dcda0276179e6b7ac0cf6464b86f5e1fd5c8b6d48164788f9a40bded511b5f6181439e369820e58d74ab96176506939f9dc6fae884b8c2f45a0866409) (F 0x23F159abf795d754106a705502620bf7b666f9217d827e20e1c741b583eb570764bed6a4528951f2d4527f383193ebdf93074b98dd0955d60452cfF0511afa895e4e4ce3bd9ab)
+ , NZ (F 0x698babddab4b4e33219f8a9a4089aa837dec3fc5272948de1ae100a155bc180153ef4ac68b46a674cFd512f20d240c6101dc70b6c4d3a76c581ce9e73c053ca1b8a135684b4a22) (F 0x4db158136a0448e6f82cf54aa12360c5f83a18ee721ae508b691fd39840a6b97b7d9d68d73f8762cbe4914cbec9cbde0a09a5c29ab46de87b166576da6829349bac89872f73f05b)
+ , NZ (F 0x077b1989d49ad88b13dd8f63ece6c7efa57711f7277919c82f50500f4264b50F730f9a11921d45f3bd463f86Fc2bf202d6fb42e1817664bd908ecee7e9ae4604a80e86479bf88) (F 0x1712720c3a7adef8aec8091a540904934ee8b50aee584c663bf60baf7825fdcb71c590a250af7cf100aebb6b176304dd125126dfb9acb7c331d90b805a02331fdc45c3d0ab5812e)
+ , NZ (F 0x158b2a619652e24d91792c128b5266f9f5ee9232c36aeb98F30435f785785c90d0a49d40cc89d4dfb84b4a22b5658696f70e232e0e62fc537438482a42f625366ef7590435406f) (F 0x449a52c0183fdd5b168796cf47be83039fc4bb3a7fbcdf10945bbbd29368b74dfd50a7d20570c43cfb52b9b6b9694cf5faa96b9d6e9939c6491c242ec4023c7f2dfcfcF3eb7f9f)
+ , NZ (F 0x54af9dbf9306465c20c0536d7ec0ef73c1ed2895cad3e8dec8a48f08b63dcc3f800b5ac33e5dc7664c3ab247ce27baf2e441ad96aedd5c940a0d28fbf7e9659c2ba5ee0f769e712) (F 0x66ca236e547e7485d7cb5307140fc05a7eefa0fce6f42f217d933b0360de2b0839c8038832424f8b357e3e949fab6ad2d6a839769672caecca897506fdd775775727ade3e73fb4c)
+ , NZ (F 0x56103e3d570b5b5ed9932ba2f6fd3334bd25c9825e465de792f7d388d978e1564f6b14b34d5abfb6982374eb0dfd337fd3d53c667a20aa81f7c1d30b46de9ecbb475267e70413ed) (F 0x7ea6096fc87fb1c4e6706d7180227f4e3e3abcb52bd637998ce9a55700304b242629cc131f72f41ddaa83acb2d36993dF043be976a97c0f0fc154e5f3abc648bf4010859bfd710)
+ , NZ (F 0x3d5253a995635daadc4df234ab49d7eee160f7e447694252e98520e2800f65557c9c7637ceb07910d0edb53f2f09dbf0cd2616445b0156b28ed8437652b6b9ab8ab359de9935112) (F 0x33e7b552a534877f362ddd6fcec5259a35832aaF1be6b4512ea9c02b9f87b4e9d51f5157e71ef0cc3084962a67b3257eec5af925221F72572393611aa46abe67e38b4ffce146f)
+ , NZ (F 0x27e4b77b434ca0a36ae39d4db1bb7fa9a9a861b35b6bffbb84f32ae2ea70eda59644a26d87b29e24e83c0e97589b933f47215486007b293e22f32ed633a4a643f111b3b3dcd32f1) (F 0x6a96ed54c661b1e6677ad3b8c78ebd0aabd88b64e0582556c00facf5e3cd4b600d6a3bf43a868219a58686a616265bF121e1d0a148Fc2c90d8654d8662a1117d1f9fc081b1a7b)
+ , NZ (F 0x290b953c6146abf9a8c60e09e7b23e36326f99c38b8948e232d0bbab0aa38ed45F74e374ebecdf6ce0c226F64ce5a9fbe9a3a82bba51aa58c5179df3c00009b3303189F9b8c8) (F 0x0512d3ba2ef95f030e25a2f28ac9730065e99099456aae73de520aa3cc7f014a26c51472cbdd06d9cdd7f1e38f8ce67f386aa3ec4651072bb4e7bfbd8835a1f6bbb2280af39cdbe)
+ , NZ (F 0x2875b9e0062f306f0c881d3cc493d22f7eef33e4ab45a3be8b2c85e437f85deb8bf64f9357d95140068b91aa781f41b2bda76517ea7c1300c0e0edf8b877aac7295e06a7f4d8203) (F 0x78324313517b46733cf2113ca3f668932e359ff59017a6a6ce3910065c0f9f4748cf6950334dd1a89db3ef399a700a2bc7b26da1757ab507fd1c18061ee65afb5526e1a5136e404)
+ , NZ (F 0x1d44f44a85d9951122c63cb6efa9dcc290d99c332c151356c930Fa6c60069a14a957004e69579a00ed8cc29d5a21f60c3b03b6e9e198ab5931d0b7cc5c870c2604835616bc5481) (F 0x7150bb89ca1f1d5c73a22fabd16ed75b2e969971dd279f2192719b858f8daaee047164ab6770cd0a5f14dcd1e762c66840b3686833637a6a176d0694a6dba4d9ce53d1ba24b8f7c)
+ , NZ (F 0x56baa15d49b215962f88b2301d23ef6fa68712762cb20aa66afae786ca293179f22b35471dcc49636b89667183da40e3e7157663200913a5f3d66809b2b64d547b652760343934a) (F 0x1c54717b14c0ce225af3b9e6b28c47730846946ddf19580527814247d6e37e97b98a82ec219e30a0b73a43989898a2154b353deb36b654befa70ceb8949bca0d04d612b5f34a53c)
+ , NZ (F 0x67ad76e431a18c5403b58f7dc744dd5beb10e5e667ad02410b6641aa54e4b42ce9fc70ef4da470cb9c0c12d1174bF475e12af56ae503e12e23e98ca7c874eebadced54ddff6e41) (F 0x2879c10ca29760d2e26a04c2e2a5b0dd14F90498902b50db8fa5f9cf4ba6d4810f4e05c57129619159e2754c22e512cdc432ee6a1ab8091b6d8ea36f38e18ea7d178437d172d48)
+ , NZ (F 0x5b7541796494f39659ae28bc46e94f314c5f3a848a2f317990172847c10e0bb73bdf5a0e2a0012d9fb89ebbd7c0cc54400add6d4d7fbe77ec0b3d0a20f45fa1dd8206f68944ae68) (F 0x68a16ff28e03d99a7e591d93068eFe464ebab70e28b0f0a28e3f288e3af5be60d05f91cf350eb9b6ae699a5333111d9db362c712063187cb8d870f8347800126d65d8d086a08f9)
+ , NZ (F 0x01d27a4f1c6418929977db049592f66bf8abf888666d8aec9e743436094aba768c99d6d6a86f8ece035e706324c5eae82387ca29e2fbb4cd8b51b427826ca0c366f9a8196d57493) (F 0x4c8c4d22a88bbe50ddaf786ce643b40d0fc737f81507ef7ba41b9648a5fdc6f41b96e72e2f7817e4aed871448e757ec2b0bc144bdde9bcd4f76ed1d57beed5d61cbe9d9e45fa5e0)
+ , NZ (F 0x1683852e112c4b5cdb14ffa703e50e88ce3f395b7f43139c0709fcd21ed4c791b3fa8a901e585e4d7d05d8c78c88533a44999253515ed80dea9cb0a23f326d40dd630ac79788793) (F 0x5d28d5a2d7c575ba725378fbc9a4fcd139d003626822fF94e9bc44ad94afc1da7faae42f6e984b5c104131581b852379434aecd53c8647a62a1993949f653e623b9ac254da2313)
+ , NZ (F 0x18c9c726e1eed382c6a3745e0415579788e8ca815bf0f25409430573f8b8c54530c25992c88c86c1db00badaab3afa60a012d467bee2a759b1378204fa132b6df2c358f7341e16d) (F 0x73b0fa7564d6db6fd76ee2d2d0d997b2f61d77de1a8295e769de3522b7002cd495aa914a4c5b913bcbc11edc0e62fd5826fb3110af4e802aa6badd4eb72aee1c5d1c6ded7c9ccef)
+ , NZ (F 0x2d4843ae7c1c56d4950741fdea6b6f509596aeeeae4f21f287eb5b62ed92cc9a0e61e3039efd15b7e5bfdace903bfdfd36a437b7824279f5288ceecfF190cee1d94848a5e3c2c0) (F 0x75896b160e9d7ef83536ccba5085d8976a6ce64a620b6177c343266ebc9f7b0d264F9c91f0d43bf16d841a44116f9d69256f3cc48be1a545b10a878202ccf31ee02260b6F09ae)
+ , NZ (F 0x01ae1de6aab007a0f00dc72c95de7914ed07944f5327519e686914e09da9ebb485af7707c211f12ca259fdef73d6204642F9397a75f21c4d879fd930fd9ff091b627434e6F84c) (F 0x32bbd8c72afa3ccf4ac016b1551a3e6918a171a1da595f322ae151f5674756804d6739b2c41c90710aca7d2a6a79881ef339dffa343e4c1ab48f6c41a746b7e1b3ef7c8e5980480)
+ , NZ (F 0x0b24e998ddeaa44b015f4ae2f02ae25922474Fd539fc27cf6bf2b98e27f366528278c697b60000fc7caeF3cf132942825d696827eb58db53804438cbc56cc09a29026eb3db4be) (F 0x05052941b9152a1a05ea86373e37ce666adb7554b0d399e2fd821a20f1d3ba0cbbaa0f0dea5f7f6a1f11ac65c546b70cf223d2f6a34676eca77e1cd6459a7d273d79968ef6956cc)
+ , NZ (F 0x651181ade340c5df0a421d2460d48b9069ffdb0c94ac11596703b1316e9fd7eeb227e46c86c8b5065b6bcc4ec6a9f1201067777a9dea435ad6445ede9ac735e0a6f533358069530) (F 0x078cd1c009e525f95be2d193ae80ea522a8d2fc61d67F64afb0e8955e034fabdfb21608b71f11327d9b653bec2393ad8e38e91e90e663524aec7300c0beba213a81f8248c59b4a)
+ , NZ (F 0x69624c7bf5b3a38681e098b4e3f7e64833aaf0450020faf66e2d6ddb99c6652bef468edec1b512c8b9f3ec74757db5f3961c65cb611be4f225a37bd5f5651971a366ebc47b9fa33) (F 0x4916e7f30ffd33c0a6777832e1e219c6bee11f67a255b6652c8d072d8ec01d8e7d45cef11c1553bd28bf9d8bdca0278fa4df677bf094f6357a1ac89bc82ca910a03d03859242bb2)
+ , NZ (F 0x5da9eee37ba21db8b6be04b0b58abf663e8438ddd737d883df1e9cc93a413041ec827327f4543F8fd705eb9e26F586988919fa62fc52005495af5881698c1b6e20Ff9c3c638a) (F 0x4d7b03093b1fdaa6f5f68ddf09afd2a36070dc57a315e7b0f8fffd5cbc5e49e8c279d8cfff5dcf4c0e3cf23589aFadd58bd72914bcc7e8112785de148cd3d8e9f63956cb9bcF0)
+ , NZ (F 0x28613f73f4cfae4e738a6b8cf69c9a57940d3ed3966de1ed3c7dc6bca3d0a653c42bcd0c51d09ae388001f40b097953218f6afb038238c831eee331ec5be08c34f1f8d55879f23d) (F 0x1788c9d6bb2f01288eccd6ac01cad207c786e901580ff66234f2cb7e11357c027ca3cf69a13Fce4ed29ad71480fd1eb2090df4fd540c27d9ceca9f78fcea01060dd53f6bda0cf7)
+ , NZ (F 0x5f87e378a3bc5f76d0400de551a08b2ca6044cccd0a5231866701c0728fdebac9e7c677c479c9bea733a212cd2b23ce1692af7424cdaa353350803abdc3ea0050751f36b65ca779) (F 0x1385ba33908e1d4443c448534745e84d6816a7fb2658607e3d2ef9a85ead476229caf571db299aab746c7e25784538ee212ae262ca9eeab2ab09e585733af3a85cca3ea3cccd601)
+ , NZ (F 0x3f4ca379a3213fc9532ed51ba007a9817739008276c3e53e61da3d04251bf35da01ed5d1adbd855d3e1dbfb295dba938e69f0b17410ab07951f9a2d1031ccc7cd651c9ed7199a32) (F 0x3cf0c7532005a6ac3453022a43d1e6a52cc11fa0e5a5385be9cc46a7370e337356f7b03c7f21b4f35fa45ba1ad884d51f679f0b7d22743b1024ca1a226e4868c9bbab1af29cff77)
+ , NZ (F 0x01e3b895c86db8ef0621c14ad59a158b01e30a9bf6104db886f38f45eee7784d292c97f32303fa18eabb2454bf052c66cb003f9d513e11536c5902b0a43f534659695209c75f68a) (F 0x33e2262cbd9daaf0dce60fa546275Fd1a2a0f56b89b22924366434fccfd57c8b481020bb80cd561bf8c61a7ace75d8d5c42559cc6bb5bcbfb10dd7eefa507bebf60e56b88e9dcd)
+ , NZ (F 0x721ea141b941ac8399d5e051f53f116566c09045c6cb68642d8c66218239679b4e4dbd7d825474d41f9e5cb7e574b17155a75cec9dd56431e917adbc536c4e828192ca284f14c6c) (F 0x6c484d6eb9e7fd962d39ccc3998c52e9713b5f6efbde7ea4558499142f49b309daa4fb48ddb21362af6c50e5005d548d1d28f864b04857fca0e456289d70135027a5f25682Fc02)
+ , NZ (F 0x31d9e3a62c3b7dec60b17d43fc681c46cfaf083221fffc995fbd017991024ae87d5c2cf77ed19145b9ed8a106ae12a4a1a3ad7cb2ac23fcc48bF641aaf79c8f7c70edb79ce2764) (F 0x292c958f37c36e425a35182204c613153961c602Fd62b60a7d4315d73df9856b48b7f3cfd07dfc14827e02e52c630ef7b3abbf3e4ba4e3745e7213f94785c66e4707c15f6dee6c)
+ , NZ (F 0x6000ea69b5803c7df226e62156789b55360ca862ecd8ecbe983394ff587327bc8b7902d00c9e2864c9f57d7eb6d9f18fd55fFe3f14d4495f814ef54d968660fb6f3809a79e7246) (F 0x05c3327caF35283ce4533c5f43f3a3b2bbf12c39b0e122360c0868c7878b1992e91F348aae0a5ab000805c574b0c0695ca139934999a9a9415468e6251dfc60f9abd75a0e5ab8)
+ , NZ (F 0x3d42a1ff96ec08740abc0ca8bae7088aeae57afd36942b9a4f33cf8dd022db7530642c8e2f8ecc64e5fb6453220252d40e19606d49a78467f3501946f3349b5b3ea820edc271c7c) (F 0x319a99d0edc50fd488bd7c7875e8e36d78c6f54bc9b77d51d3dfcb8b2b35c73833192f04cc1f1594db83a9f4cfbf5af8cddf850cef9cbd8422d022e1532697d11b6a7184f3758bb)
+ , NZ (F 0x6aa3971a90d9e66f952c380e734cda1bab3596aa87f97d15c8c6321369be8339b0c4401f6831e7427f527c742690a8fda58f53ee0896826baba334e54f550b4610a4202a0814e03) (F 0x3f9d0bf15355e3df6a1b37e76a123bcb2a20323b97c2b4362547acb8557780dae6c144f290907a3472dde27611195980b6ee936663689b8eaa776b8af5191d1420f2c2c6ffd8227)
+ , NZ (F 0x0c5f09a23b75df9d6db88799e4fd38d71e8b70361d3b166759f3d54387606dfbFef4ff82cf59cFabd8e225cfa39f44d7afcaa9cb8c68168adbaff101bd305c7097990c622dbb9) (F 0x5b604c72f2098e695cb9f087405932c107350749b09822039adf7d2dd7c4046c7ee3c7949afd4b20205b0d505939a539fd8d3525ff50cf102f7178b03456a9a1778ff15536cbf7f)
+ , NZ (F 0x7e3e9a256c5725fc0b7971772354bdf679f0ddcbdbf021b6205bd72da79eda6781527Fe708984d026143f7c225a65c84948fc2c279350700cb7e9444bcbe5f9d2a18fdb8f3c169) (F 0x43997f1addd5f4e571d3f89b42383f9c6a2692497ee06ea12cad3b5b771cd3ac2117e2794e5c4e4cb3f9d87f5765aa825624aa9cc725bf7e8243e44d8ead952b67ad664675b65f3)
+ , NZ (F 0x10d258f6ecc4dae48f41fab159f1f64341b678e8ae081da3375e5efdaf5487347403a73f65fc34c06c2d8a67e3be7894054fF0F9b2282263c83ea13948ab338c1b2fb678c433b) (F 0x65334672941cee081f6d20b07b9491f156df9ccb4d8f9510d3c5fac868541a84e2b2201264d28c2d64f95ff2c15cac0258e61dc8fa7a91b827c0bab622e1d84b73cbed2295f8e40)
+ , NZ (F 0x77fb8fad7397752454b0cf17f5b0217d7abb02f2f67f6a3ad12dcf6df2afb9c4f888fc54b01458559de4fdd590915f1f749b408c9a1b782450171d4c8ab339468b9b593283fb6e5) (F 0x21449241fb9ef0b730651b7840082ef2bbd612a34a78a40bd09a18523265899deeeac6Face83ff1f72e5d8c1f07fcf98c1832a3e09a5a8813e2494b5ef410bf3f5d49d9acda189)
+ , NZ (F 0x25d046e559a2dd2b92719cf5354e220d010e625955fbd529e5d7e3f01efb07f50a9a6b9c067d4d125846811cdb5bc3f853d7dffbdcef1d19e3eec3e213e444073790b6dbe614816) (F 0x6c340b67028675cc9a446150a013078457ecaf748c0f94b39a49814b43134b4735356280479a15e96e4900987296bc492a27664cd77374554d81402a73c8968ad5fF6dcc27051b)
+ , NZ (F 0x2136f41f7d1e7abdbbf569b495b39186f61ab50df469aa387ef5ce9bad7009a22f78f656725e1f63eeba311b8eb4177ea64d06ac5e28110cdcda2d057f21e98362dd98a91495ce9) (F 0x2d9b8769e80aebe1fcb9edFF1ac458cdf60e4b309ca794c27a456493812dfffc9a9e1dcec66703cec639baae49d3ab5e4f4fb6aa9330957ad611b8e56e6b00682bbc99290a61e)
+ , NZ (F 0x5535ff3a04ca6b78a576c0e8bec9208ae8e8fff4d04a553bb42758597a0c1b836045b603374c12bf6a818ffda84e0de50ada7ad7bd3bda5e47b8b477b5a72cb547b78c9f9154152) (F 0x76896059e576b9766056d029373bf737fb166c5aa7a379c35dea3403c6f0a2e8148b0b6F5df29Fe674ef24ebcf3486f05ce27c1aa351bf75d84d9434d77555dcF612a8b70ef0)
+ , NZ (F 0x642e435cd5bd6b14aea58e6f8403896b8ea65783b50c3da588ed3dc8ed5532e016aa3e0305d588c4b5498b09dff284054e8335ba12dcbc8f67b40958e1346b9da4c5cb904c6f4ff) (F 0x0494fde9ca0f4aaf95d5a1a8ca1b798ec08e4645f1F74dd5c97f039a678fF1e95b9e58e52facb67956d40f99cf916da9761b31dac65c8666873a91f2eb227cc5857202776cf6f)
+ , NZ (F 0x55ac6ce052b50fbd956f3f6ee14eab51a4acf06b2d4722054bf0c76b3b5b4b20bde701c4fa3a6fbd775c62061589b68500e7500502f2ac73bc41fb959587468a3ed71d3cacdfa84) (F 0x6a58e5216cd7380642a64c01aa81763d8fbcf46f5bdecbf4F371fc25b1111898157a6b2eb1578d718af4704926abe58e4f0d3672d61004533ffa1eF87fd552e5ca190862fc4f8)
+ , NZ (F 0x349bc5af6da8142431fb603010560f8fc555a35b8b7752745d1fce8d1dcb602bf8c98c2bb4171b7051a74ce50969aa97b5a4838e249393c0dbc9524e5bda6f89e9428f60ff8efc2) (F 0x6267576dd7c8edd83b117c2160852486c2dc35127518123cf912471fd245747b8e51f6f50235bad0b995c96251fa2f925a2ecb4f81a4068b43b8804164c61a5515caf1c9ee53587)
+ , NZ (F 0x6e9814eb77878330847534c033d22eec83Fdcc9ce2e8556333fcc48388ac4997d3e7e77986902108b5a4ba4189380fd22a2562710c1b2c3d394214e13f8a8f9dea48f9e35e957c) (F 0x29896819b64296a8540dea155ebc0d800688fb305397ebe9716F12b80cbe75f761c25e8b6e42009b397599513503528177abe1e404aa01afb31bc41375b154bb78b77f83dd3fff)
+ , NZ (F 0x535d792442d41050ecbc570c0cb875602324e3018043b8914f03d93ff20c772ed9c632e5206fb2f6703b16f66f93961b072826b8aaa313F95e25a6cd96e7153437cbd85408c3ff) (F 0x7386305d3d7371773699114ecf1ff03babc7db5042c58d317d320e0cecb625d2ade4f2d23acc16a8476a6e61606c97c809d2e49d0e616a399ee754c5a425f378615427fc01d395a)
+ , NZ (F 0x5385d42581c0f353a16926d5c8f097a19ce85ff9d08b6f84c56561b4b767dc9475e559b11bd3cbbf7b9F4b4339ffdfbe3c78a7b8acb59333451bb044a0f201a8981cdf0aa1e6c3) (F 0x791e9421736d07b81ed3e07ae78ffda56386ed2a8746944f8e6173e54f0e9eace3799b20ef2a9191cdb0ff2caa815c8c828657ad4e70e0ea2e64020b60f5a4947dceeb47d29ebee)
+ , NZ (F 0x58eeaeb1514452d0a713ae46a7b62701bc7d2155b432db0fdb1682368ec14c8e77187265e7f523292e0ed3e4bdab1f1158ca7f52230bfcc81d796f0e485d1856ed6b16c51b509d4) (F 0x0c644f089d8e0c5f941b7de53b45a2292590dd5c2726f43baa09c9b2dc7824a18b708d105f8c07a74edba44cacaafc8f76faf3d2d455b8d249d190e487f18627a5d09fc08c89c8b)
+ , NZ (F 0x5dcb84a321ea4b3c7d92778e1e7407e498e855c44a406f9334af7ed65131ca0f0b28bf86ed08d5ea1e491dd558689f9d7c77b53f5bf2de7c57c863176ce495f27418c4da7ce9581) (F 0x7ad5c35ea7d5a4afd5588053b08e1d540a47f139a77b2001861ac819b8680bf8213307530eda9760e1541c2860a627b60d6badef4bae60d445774741c182e8d710f6bcaf220cc96)
+ , NZ (F 0x043007021b94cf80309d066bda1f99a22939decbb3511b296279f11b24fbf6b14cdc48ffa232dcf7cc06d3cb19cf38e59c2a84d406251647d8caa985fa79a987af11b8b8acbc3f0) (F 0x3417952f30c529472fF89d90661593b653522e9bdf72b32c5dbe4aedbdb939bb6a2a315f70b05d32ccf6543378b99b2e2695ac1e85b303e1e6aa935219a1eb91b5c2d365b1b289)
+ , NZ (F 0x36702a08232490315a776f982ccf1f47b54afa33d1466c8661923eab2bc6bf8ae4cbd4cf0c25eaf576b13Fa34fd7c97c738b1d0dd53a6d85682b99adefa67276b483176836161b) (F 0x4bf8be406ef048c03a831a7fa8b037c07951172081009b32c15696430b7d98213bb958eb06ea231aaee69ff40556ed419d903113ddb50e77372e944d9ce123ef7d3c60e5284faa1)
+ , NZ (F 0x52a9fad224606a9f38888a293e007a31e228f9ffcda182bf59e93d6f792ccf0a99917ab38ac7321c25087af41a545c0acf17f393d6106b6d67cd314bd8aae0cacec0a599ee67930) (F 0x2a971a54ef8a526cd49427736fdcfb935e471c387243bf155fd682277de09c28a0d6169b7cca355ad81f978390adf830a81e4022a05e11badee20c737052c68f489ae514fd20433)
+ , NZ (F 0x57ad7e98be74fa6d5a0721258f8d62568b4bd51713055314b44c03ec366d6f13619384cfdb02F2717021a52cc9b3ca2fae2a83af516369919f395caa2c790e21b2c0541c8e02aa) (F 0x4f13f849e4e126d361073520bb00e15380b9dad775383c1242b7d3fc4c7e294e8003f835a850a19524f469a5bebd4320410fbc8d2fba24ab7745a966a2b9192369dacc6877071e7)
+ , NZ (F 0x507d77445894cae623838dd125049f6141a461620d395c345b937d484e8e251c56ced9fb5f4067e28a0869cb1266395d0428a3b07bc4ecc6bb52190f16d1b5f963dadffa9af1a3a) (F 0x7a63a221b2a6e6417eaef232b29f8b29be92e0e3a7f11fda9d28b0fb5357bb6d4658e9bb0b091dad20a86b8d617aadf2f74173e1301c948eb669a09f3d450078f2c50ff9594b5c4)
+ , NZ (F 0x26cb1705160a2F9960e0693832f42ed404dd73fac9ebbdc33bdFf8346fdcb8001de699809cd69d2f319453b53ef7e4be7fc277cd3ba6d44833c719474c4d8e19fcd06d4101618) (F 0x6b2ef104c554a61797f440baa418845d97f3dbd3bd72d9defdae4bbaf32597Ff57c602d8e64de4b319d8a1db126be4575d5003e6666829bdee50321798fbbaf1ade5bd2b8ee38f)
+ , NZ (F 0x58f59376c96f24cec08fb06aa7df9b56e123693f191fd4d8a9b5f57815dcc0d6760a74fdc42f3e17bc5b33466a6b91f7f0f55c46f5b03b01539db0f425b2e505cda86ccd4fd6b5e) (F 0x621c755a6fd77b816ca01650f57ded475ab5ddabca6a83b5178486b1a04cc5e681b31beaa6a1c2d52b173b8d70125511d3bb120e922824767F37c26819c0aa9ee55b3743e8c1f8)
+ , NZ (F 0x44051e54c3df67ba4e3c02b2242e9c61d03d54edee3cd77eaeac6d5bee037f7c378eaf0689882ccefb90a4840a3bf93b523ca75e1b800bd9c678aacace9cb5f9c54ca0030f9f34d) (F 0x0fd57d3053fbdaa80b4802c16e80b7be295ec65a9f36b0aa52f260190aca101cf10f07b650e57a8a5d966eee576be43598c981f7f076e667dd35e8c73755107c0898b5faaaaa9ba)
+ , NZ (F 0x29efa1d31f110f51f9087064078d3029dcf960810629d2123caeffc73638e03d9cbe3b08f80f695a50c7dab8b2ed136b0fbb94fd19f5d0bcf3cc290ff36c0b8bbbe6cf92892b17b) (F 0x52dd38432185c7550d3e9da434b1abbaa97d63a5f9e3fa2ba56a1a349b6904aef847cb4ae6a120b97cf4d1298f5100e2ddeff44a764eff0ec7a2be434f6aad82f36d6b1796d0f3f)
+ , NZ (F 0x6abab7fae71cd020a39c0cf1860197292acbd7267a710091af32800669ca8a309a41cceed02257271fb451beb2ebbcacfcbc02a4079b143b8eb180ef1ae624d568b975f3b0b9571) (F 0x50def8624bbde6ca5c7efFc8cc8ce29fb49df45891419f724c2c83672f065e3d940524b53ce32d1cd6d896567c2057fF960bddf4Ff2884325ead8bc631b2f62bd2c8a49dbcce)
+ , NZ (F 0x03a981886aa3130e272c435f24a5630e187341e483f806334af71c1257346164a0bfff6e9eb2150b34f5a6563db3c19b22d7791d0573720dc3827385b2ecc733224680d4e703782) (F 0x63866d7504b53e7edd40a0cddd293327b6ff8e1ed16ae8fbf36436fb0064eafc46afaaf13a4f78adafa7b7c19f6bd0e52bf3b39ddade41130d4d9a5030fa68cde30465c03443fcd)
+ , NZ (F 0x2037bdd1afb7e6fbe331cd2d899c0e75c4aa8551e7d12ed201cf1bcf66da8cb52f0c03327dda3004d37b465c3d58447016ece90b7c29a3e769b55f093275a00e578bec01cd38c0f) (F 0x595fa33308f1c9b074807a5fc2c8f437a603089473b9a37bebd33ffd21cd7cbab98a8f56647d064972c872c7a7de184c0372a20bf77489eb72927e867dfb1fb674f28ed54685078)
+ , NZ (F 0x2f3224c72b49ed45d74d3e4240a5cb3f290dabd056a2bc72ad2629824c07066eb036fca3ba83db16c05661ad37a243313fb870547c05158ea5ba8e1c8e51f226f194d590559578f) (F 0x4a420678f1b15c777d571447db6c3f5d235ebc77794a9eb58222d114bb5abc059948Ff83c148d339f5cd8b3e178a55e081d06f9705162c1e40e05aba505ec1972a189272484b93)
+ , NZ (F 0x1403a6aa0d2b155879a74436d2e5324a6d6054ca604b01ab1f8db38a5502f596682f457a3aad0bca97eedfb00f254ea6b91726c01cbe244078b6fd6dc6f94920ce0d7bd72ae56a3) (F 0x33b7cbeed2b7756a1fdde915f11962ad8b125996a6a7f0f24a3c058759545d5e522f285e4ad99242F60431297a4f487be427ff449b13c577475b45596ad7d73275408a5dc8131d)
+ , NZ (F 0x01f1928f41c570b03F8aca1d45893051c4a5f6b0293319c865f6f5a36b6772672c6f706c7afa4fb735caca50f297bbd81a38c0d79ebc88cd55e5bc2137Fec7c2e9ada5eae6df4) (F 0x440bc0fbfc6250a1f5064e5dc936d65c0eb26f4a3afff70fddc1d38809dff2a1e29aab357a7b069b84b55babff2f5bf09e596761943ba30acc5e178e22bada2359971d1c5a2922b)
+ , NZ (F 0x6ae9b8059af8d1903b8aea8ed64cdf2c0b242df04c524b6c99c7f72048d3b392a92f711ebf99940e00c77b15ebc6a7f0616e49f4cfa491669973210aae4019d7a0664a67f830307) (F 0x77777f4056142b8dd8e7e83b1d0a0d28737d79de8062ec2c15e4d53d1f34aaf52f7995d5a15c585f7d6e1c38ec5f1ffa05e9c2908d736c62627968eaf32a43bfd5b719c34804c43)
+ , NZ (F 0x0bb62254bad2F02149b66476ec521109dae8995a034cc61c3aa8e6153838ca797836b2537fbca1613b091aa3f34c34c7d4def6b46cc8c58f48f7ab697527db4eec326756f68af8) (F 0x15a37aaa9167c4e615a7207487e59051a5ec7ccaf19243473f309e16923ae3f75198e9f832980d124ca74d43ebda98e796e467b49214e1a80b56ab8b3350f48e68640fd5f565149)
+ , NZ (F 0x410ff375444b20324aa8d8947f9a6955304f209ae0a820c49331a2f2eec0194e512882ec08a31757df41e3390000afaf4e0f00eb58ba19e9b5839871b2a1de924f068a098a5ad77) (F 0x4ceea66d95dFd0cb64a7bbd579eb5a1ad726447cf6854d9121e44686c23e5ce1020f819fcb4a8b9026d17ed6a3087845bc31120fa4cbb772b38976982cc9c0429b36dcdbe92e10)
+ , NZ (F 0x13910ca36c46ae1d59a68d78106e155f0fdd88e4e99ec4230815be48c8ce242f26f5ffcb69461933cd1bff8ab076f3e3aa4ba619238e0deb9630a1e5ac32ec8647f0be8ef36760b) (F 0x3cc0ad99b00ae0d5ddb5c4bfd0d417f04af2c1a9c341856258388645346d304e8a01606af5df86cbdef34d8da71d6c03cc2719ba830582d6ad5878a675bbeba37c748073d5eb102)
+ , NZ (F 0x00c21f68c6d3e45428ebb6232cc1ec2485442279b8ce1734c28313d959b2656f5343594ce3caa01d2d5373d02e0bb3686322b9d5bc8cb3db7be2bedaa77e873F6f928bc66db76d) (F 0x1de6524fd03c659bcbddce6d0ce93a44dea9e568af6e0378326da0cc5ec460d8c108e4ef455b7262dec0d4379373671bb3e9081fb1dff93d25136ae19051ad5c10c1e773b1287f3)
+ , NZ (F 0x24a7a5f06500a8eabd359abdad8849b368ea58c26be0be44b495b04135b2389F1867bf54dc81f43fa8aaa00fff7dd5e65eaadb4211135484a6f8223828820c97d995cc16cd1351) (F 0x162505fb54377c5e61044ce88f38baa2b2085021ac55fbf80bae17f60a8a37d9f3ec97b6fd2cadd5e5b74db9642eb0be4F7d31a14193747d08fd6c5537f7be4ad96718cc3aaaa4)
+ , NZ (F 0x7af5192f414f7a887222f566af539370baba86e05a90f4509ece5c080abb1cf6b5c50903b34b762b2e62edb3ab82874a5038d663fc60242fd84638f54f3526d1e89d299123f947b) (F 0x0fcf5048464031a9a1e0723a5a07db61ecf6605d654d7e351fa6dabb5331fba6ae4b4e4fd8c7a6e15076ca1b340c4a3b0bed162dc226e3e16b1a30a4b299c5cF50e2b8fc539254)
+ , NZ (F 0x20f1af1d3072307baf4c12711f8231d9c8d9f338b5d671097b02dc413d447ff418d92aee763b778f089c585950bf8b26858b4bfc40b71357505c2df8f919c0f6a4945d643253107) (F 0x313e7302cbb79f922973b7e4d17a4bea53b4b7b7b9c47dc4d0d2d577b0aae466b0ce701a9f4ec17d1f162a66da545aef47b05642ebfF91e78c36f4bb7f7e0cca2a33dab224c061)
+ , NZ (F 0x67797c14db33866e1cdf62e8263e8c47b8629caf2a2be0f22f0b62f823e885e036caaabff934470e3d2ac9e5c687c64d7bca32a4da41b2aca64c5ccb78c9d4902aee9c8afb9860b) (F 0x50751285d62000916bd1a49f9c78a207a6a5e56cd0522f6f24d993287e17b9665f9931798b89650bcd449b17034622a83f8eb32f5a858c31cff9b8718fb5e6d962cb7a249becb11)
+ , NZ (F 0x1138fa25a54e2c00d3ee489862eae2c1763293bcd1e498c7bc3c8634ba6959a8b13a876dbFdf60282b39284b084c688986cd152ac651d7d8adb9ecc08cca9ed6272254faa9f1e6) (F 0x1a8725f8cb4a6dfd2c2276d7bb1a8e682c0dde77091b336a5f19ca10fcd5e9da787Fe2317d2eaa5edc8b0bda38a8fc18fd49b8c7595ca04a5d563dF3a517895b0e67a0033caab)
+ , NZ (F 0x13015e1b9da7b781651e06849d2dc65075ced0172bbc4aaf5ed10ed22c5ac8c3344666cc72310d31823622fb6e313f357ae6fcda5ee78fac5ca3a63aef2cb357c64e3e5c91311b3) (F 0x1f08fdd1e38a449ff61ba14bdeb7c1ddac60a58edcd243fcc728b37950d8a1aa6cf5791db051ecaf3c3858919ef897cc6ab9a2eea6ca793c01850209081c940d7ce4657ef593445)
+ , NZ (F 0x1ec187cc156b7b2ed922483282aa19ab74ad23c49e1a1c805d4c822888691a83db14abd0d62ef8e407c89e7d66071ff7dc1d1a017e418392ce17328c72544e8af4c15560690b0f9) (F 0x2fa1c08243a76313287499ee4b5e76aeed4e8b54873387c6175edba1bf56076b7335590dfbd7d415157eff83a0d8afaca0bf7e207ce4956eb126b89616f7b92e157d912961fd60a)
+ , NZ (F 0x26646b2f1cde882a65b4cfa670dfd919c04e748cb46e0b969db920ef4b897943069445eb08636c5a89af76e7763aa6da853886a55e3908cf0562a88c386b72b57509d3f31c32467) (F 0x75a818d9a59fbed41180132b7bcc957eabfd9dba10818c87fb568a1055d666f5aa0073a88109c681dc9eba0a9522a5080ac4dd9a4c194b014af314bc483945e98868d9936eda04a)
+ , NZ (F 0x735406f862050680b13017f0da92d0dc02b41869af754ad27be1fcbbdc93897a0b528a8a9c0ee60aad62b0e2a504ddc0f80e0a84038270c10a0601d7ad40bcc51c6f66fbd8361d6) (F 0x140fb52773660ccdd78c3dadf187745f31e1ac421d71649cf6c96fF995cd166659b14467aca8870185a812d79c7f7945029dcb3c4decc6707821a284060191809566e40b05476e)
+ , NZ (F 0x5Ffb0b37233ed52068204101c41de6cf0587f994ddf54488875f3afb6a7e9d8260b9795c452a051a3d3c41dcb00b7cd153df45ec510ab3bda134deac7711c8515b817875fbf494) (F 0x494d4c56220d7dee238e3185c6b02493faf246559493eda14dd0debba26ccc15b02e3beaf4d098cd32360c349c78ebdc0de0d1042c7975f2932081a747390efd6e3c2695efad852)
+ , NZ (F 0x7eb719a101ddeb132684586575635a93fd43d9ea00f5ac8558f0e93340893874197264f0a95ec898343ec5977cc1f6d2337dc8c729213f7ed4626624fbc779af416b3a1330732b7) (F 0x3301303b0b9012336c1f077bde916650ebe7b31e02f139a781fff69e0e45e789e0ef30a4a778d4897ee578ad30b34e11fc3b61ceea40e4bfcef04252723937a85719d5257118998)
+ , NZ (F 0x716392cbc2a12cf3028d6793dafd1c37881ca62e5fbf5511a2bbc5b533c346cd03f9c0363e334c325af53791c3ac9e41e9519b814aff71be00e2cf8a1147459989b6dff3dda0d3b) (F 0x7d2b235c557e19389d8439a5e8fff4b5b7524de2b2c5bd0e5d40fd894014d4aa3f6fc503ec07ab72d59bd3198454ce9dd6c7218aec801eed30bef1882e0ff42bff7908e663233bf)
+ , NZ (F 0x2da1a9a76d28F1e3b4f30240ef33d7661acdad1525d11ae974d5bd7a2a51b0f46e9d1F8397c48b5b4ce66e6547b1991bda6a0845360a05821e7a073be78eff39be42b9020881f) (F 0x50233e496e0054b8dcddc1ec227fba7172e982753391102f577fa875e3dbaff3918a4fd7c6a3efabc3611fbce63586dd2f38a0c4faa773020356ad3d76fc0c9dcb6baba331F365)
+ , NZ (F 0x5955ccb7ed9542a3a668F8acb11244d5251547ba3ff6084a7cfa201118f8Fa7bacf46378488b9fb50d8aca0ba610ebc51151d322d4359d088cb77c061b9ec8f9c1c439675b373) (F 0x1e0c9e3a93b85ed74f51baca6c33e300bab67ad668672147572c623e9eabe6ff8af3df8909a97a0f56daa6967533dc76fF7377a490533eF47d5dbd02f5fbabe587a4227f3857d)
+ , NZ (F 0x1d0f4dbd8d36823b004f57fdeb467aF2750903766163835c86e59864689732e70f3Fa1e88bd0d12fb18407f208ed5df58909e93ce574cfb9727f075594b6e26d037589b44b2db) (F 0x56b8d41ca20565555b5c6afb4d8a1478760179e31d72c8773d825a1b85799ff7bdcd00688edd54d4a82df342a4fae4973ab2cc5a17ef65fdd3ec700d0362d8e3191266e0ff23f14)
+ , NZ (F 0x0e749b21d2b7b041006a8f1397cd8532bc4ff6d148e2981061d6964fb334d33d06bb0f5d0715bF69e04cf76091f41ab3c88bbc701e2511787fde965c282e7a8a3605dccb325048) (F 0x4197a688028a93a78a150cb8986e7743e9c655ea8e5e7385e890d3b9034279959b17be0f6ee79a6290f305f8a1e08e618ef0ca5595ba02ef56242dfdbe7668621db8728e059545f)
+ , NZ (F 0x408f3abf6e7d8a3f7fc1d35bdd23cb54527023ffc2e85097e4b363dbf114cc0faaa88834f72e93a35b4e4b42be9eb39825a3325e609f94dc2bfa1774eaa80a8ff2a0F9a47491fd) (F 0x6F4d54cec591a6e5bf23ac068b4ef66c792183c16a05ac69a967c7f10b1378c9defd33c040e96b04a00735cbcce21acfFe775af186d4e4bee9ce1a4afd5c04d1f463a66b42e78)
+ , NZ (F 0x11c2238ec9348aa11d6b59763Fafdbea15b2bc84324daf3d4d781bf9f8b9371a67da089b93f81d6c8dfbdf1454b8af708815964277dc407F42e30c3834fd735d0e85d2387bb0d) (F 0x07872ba50d77a7f037d308bdc18a5b9f38e7f1cc937d105cfc8eff5219c3d6d638c773d44503ef2a18e667c4f433b5469024880630df34e431510b1b958203e21b3cda753d6ccb7)
+ , NZ (F 0x4bf3b063c8d54be9453710b5036c8fa60de0cfcdc7adbda15ce5a276e4f671479faa1e41c5815caa06ee5d48bcbb4c96d2e9334f6f085a11d511a45cf3007b15d7b3b71ffda1ae6) (F 0x012205d31cb6b361060bf361c4fb036291314d02adf00a73ede41159910c1c8c654b0984c800e5eda2d1a99733583df87f501d8e0F51647e00dc62aFe533dedc2afc42f10d40c)
+ , NZ (F 0x44e97b0b5023eeb3b3048f6353ddd953f9c12d32a5712d901d21104285f3707a60c35aacf0d863efd3bc5d0f59863e461fb7c6ea1c6b6c9bdb5e4dbdc6b9f43627fdd4f78d95ab0) (F 0x5720f90b42530f1be05077d825c9441c982e2ab0468408bfc9bc7e5f4d84f7ed7507310dcadf76e7b3bb24833cb4ef3c5652dd2bcd88e5040e8c1a97951accd49bd6502bf0901f0)
+ , NZ (F 0x7856987ccfbed5e00cc490eeb15159d0fbc3aee0ef25c1a43d69b1c62413275c79a20a26cce9eb08167bd207912aa8417230692976b2fc3ff9f287d69183085cfb27c9a988a31f4) (F 0x737b6a64a08Fff264dfde7c3edf122548cfb62942c38402c4504a95779cc4c747545d9ecc552b011e79daa1d09370b9a420523b63bca0a62dae7caa386cea13b8fab4f44b49f1d)
+ , NZ (F 0x6783a6b938ee0550944c1eF8cb83ae8155f9cea72df482cf5205eab1a1a8d5bff78b4f9e16cad8eacFf95e3f7df96f993991a19974e9ce916ef21b74e292f8c751f6d320c28f6) (F 0x606a546376d1dac27e56cb1a35e893be569d2df7e50289eedb36888146a6cfaa341c712042bb064ca66252287248ccb186bcfb4c8717ff22781efa5192dbc8cbe6faccac780fb3d)
+ , NZ (F 0x792b51a70f4e455d16df41933793649ab1fb9115a620d9194e0bde1c49f4e73b2be34069b6381cf0a32d9e7a49e8a9b54688063caF7f49a6123609bcf8571394cb95c5345bdf85) (F 0x4af476d42021943813f469a3ebaeaa55649b6af32282b7b7cbf88f0ee3cd68be3c69eb5718e54e65f799f99e7aa99eb9d5c9e4b2021dbbf161ecd92e2c321921a476aac0cf6f5d8)
+ , NZ (F 0x350372a65c3df3056b12a719d18f97cc73af72f1226f51134578834455354cfc65c29aa04aeb8e77c30e74f21f75301126229c06a9f872939a54b693fb626dbdf0fcdFdb394da4) (F 0x0006042d5d714f59ac7489f17a455d250bc7bccc6c6b913f6004128964228eccdac87558d3d7879882fd6d85348cd8374a06790535f2344e3d22c7af54098244f5ca6065312e52e)
+ , NZ (F 0x7e5901b97f1d18a2af0b748aacc381afb181e7c900922194a7435baf32475e1bd4d7b238Fb7eaf2e06ac8bc296df62fb0d081b93662b648081e0089e36668b3ac9da8c9a809118) (F 0x5185f348708462cc67b76e35cee61c611d00bb9898ebd3f84f81dbbb8d57ab9053c9f1be7596b676695007bf4f3c50cbaf6728d6ee450a7b21710a3abae38d52584225bd0b2f979)
+ , NZ (F 0x781b476fa3880368b883b37f045654b880ef70cf3316da40d9d7a2089ee37b03bfd14cbbcceb0c3f83797d7468e47d5737ffffa847af09165276513568eedcec3d4c7752a428344) (F 0x4c37e5835b8a1580f82ba115bf5436d28e324cc2dc5b01ca67d51497217a4ae6c1a1e0ca38953da3965fb905aa9c9aed9da9cb1e38bace7c6c34dafd0F7de8216ad36c8b56c291)
+ , NZ (F 0x030a9fd1e4b6a6825dd5a54b9c57dbf6eab13b644bce095d1bd823a964130c826aa3b8f99bbdad3d4c90a0da9b9a46abcbee912680c0ad82ec940616Fe30080d5682ac44b0b155) (F 0x4426c675f4eda4f2df0990f0d847cbd5933e6ff0cce272d36b9fbf142f98903cb450d8595c1af214bb27f8a27d8340efab15ddc8863aFcc986942dc05c3ab891fb45b645547cda)
+ , NZ (F 0x35ae3d8227d2f74114c219e233e0f6511b8574f2266f6153a4744f7b85a99659013cf100623f9c2e68a53f0289995b9c8e77c0412c3791d95750b32d8F1401806c928a3faea4d9) (F 0x51dd701e3fdbbfff370e48c5aac26f3315fab97fa516f502c2231f16a28a77a2328e603498a071fc30158cef0b220e0fa40f5b16d6b75e11ca6443824b2a0d3403d20144641d862)
+ , NZ (F 0x1056ec4552fdbbb27707c742cdde4007f3983a860ce1591236569acd42d1d71d1a7aa2cabc0491ff86728ca61f77bd0171e61366ce70bd51c4d299ac0956fddF6144d10f5d67cd) (F 0x496b28bf3564c0d4fa1ce1750a91ea37bebc228f1cf13c30bad2ba7de0fb18f50aef7126c097f1467dc904c7cd5b189ec5a9c73b69c7579d05f0658cd68dc7d9f9c4e133f55696c)
+ , NZ (F 0x798f9b23b5c455a492f7dd76e182ca2d35bf67192c2b84a0f4aef2d507bF4d41491245771e8cacc08950ff6d391a9bd92c3a2e517fc3ae0097584f2f8aF6d843e804cd313cad4) (F 0x3a387f0f903024f7c4dec77cba75306d3ddade2327be81795f6f89399fbcc1f7e05903f0f3e50af9c86a8de9631ca0765b684cd6bb0a6575c5ae9af2ec156e5cf258e0f7050744d)
+ , NZ (F 0x71df6048d286c20dee73d0152ecc63170391b6303bd962d1254fce7468269d27b4469521f4275f5568a88978489d1784caf88fb6a87b64dd25a034176a17d84992c49248266de1c) (F 0x14b4f041197e9462f1b2b16F91b3df561db55fa350d3841c8ff9a7cf936e87e00a1b30651758a689336e830a7e493eFc666Faec9ce45219668d3dcbc20d8192815289d923605)
+ , NZ (F 0x4e1224e58a1282a0d542b9bd5208066a06f36a69e74a7a0323d284a73ed5a5c61c690197ffb5703f71167381f7F368ff692404abadeed4547080130d0287d8fb8126c57ca8c98b) (F 0x79efa4e5bc0fbbc518b01d3e42afd05507512b83df6e3d5e68e75df848b40472a930b0317b8e7e501f1021F2e166c7d5a928be68e52e8de779969d6004abf423e00e386f7e97c5)
+ , NZ (F 0x7821f6bea5f7a4f6978c831141070b6ef7a83aa0b85884ed4cc5ace2a81d7713fb590d962e03b89b07bb938f10c4e79140545fbbd72e7c81c16f02fa3ab09e2a025ffb57cd4a7f7) (F 0x31ff04906fab37aeb503ddfa0c79dd2845137d22bd245449b68460cae6259803904f934eaa2833ad906ec3a7f65a10137f994c6ebbb9b26a9d620016d8676f83679e3fc3a1569a3)
+ , NZ (F 0x7276937fba7d0a3e382519ffb5b6d3c5d83c290c0cb15ef83ed6387dFb979e9ed7a3ea4cdccb3e53087ea8d8bf9f230084f3a785de22221d6d98c46878594639501f3a44ae6617) (F 0x48a09974297cae8554ada22f384b51da75b81add433d2caf0c106f84199087a6d2c16f546998588ebf4896d01350f67cceb24f2d5cf571bde5ab015c18e60ca4db643fbb552a717)
+ , NZ (F 0x637754993878806724e59392ce7F1e2dc50af344635b51423bbc09ca123089cbbc167b2dc1d1440d15dea4605062484c19114c9e146256e5b679ee5da9502f1dda662ab0bd46d1) (F 0x2149e5bc5435758f39f35d809fa03a4743ec62061f91e6412e392a56ca35298e32571953f12d2859629e59beFacc025a440d2a74832b0f605cb466d5d6ce27d2c7cf242Fdd8d0)
+ , NZ (F 0x37fdb8d62aaa6319eafd07d235d49f6b37768dd9f5c908ec3290a2352c22e11b6e90ba94bcd78Fadc6580c2026e5163ca197026a55523530d720cb6482c12025c21d6a420250a7) (F 0x25f9bfd4d3645de7cd9aeeefa8a5842ebbc36c938d908ed54794ffd80b0e0f2db081074541b9499eab478ff01c14ec78cc166e9df31207f7c65e6aac3dcc7c11b6a8357facfc462)
+ , NZ (F 0x57b62efa507593a0e97d0943c0a2d823d1cedcefdb10d4e1f8247Fccc5ed9625d6ee543c28ae941f19df7fd225eb0413386431953c3bf5c0d66c057cb7371F36da539a3d453d0) (F 0x2F82735c76399a6a9fb477c1c580cf0dc25233e3ec11072d1d18a6da9699528b59333271dc3f45893678b16020f209907ff2f3ab497dc1523687c1d2e7a30c9b515a62b4d6c5cf)
+ , NZ (F 0x125b0a5a4b7e8f2608efaafc560a1ae5e030040db670ac81becb2bda4dc57781ad9fa65a566de587c8f293c65bf6f98c9cead2073f84079384305aed0de8fd3d90b886d1ea4be7b) (F 0x073d2361cb6a0051fcab6dbdf0a5b92540071a57c643a10277f95f4374c797f0d79b12b0e9175621a123086a0a8d03e173661c1c0d2d5f1cc081654a99ae10965dd7dd07b1f3ea4)
+ , NZ (F 0x5Fcb4de303a636fa7f96b32799cacd3943da5581262469a817b8ce3e6072e64e500360d9f45a7d7cb176b96f3214b65e81ff25abe9c29f897f40918b164646b2767ddf7da3c758) (F 0x44bf90bd280f29ec281b60d09d13c22f1987e777558aa474e1ea85da214464a4F6b8ac809509c86d2e3d2d33e6d7e9ac442c3e6fc9b745f79a35c01ec8e0b9355d48e6a6b9827f)
+ , NZ (F 0x61b42c569bdd2f5a41256a64ab6a3bc36a58dd13292e5514fcb7a8b2e390214df876212724ef735ac35089b458d1fcac984cf38ed2eb5f46f65ca7c035859a76829eda2df0879a3) (F 0x64f3c0e7c42eb219b8cad63389c45992bde7215ad8411163a5e936c109ee2b130f2f6fc616e81d6d89e8c1d9e69d7b76d1f7acac1bb5819fa5583e72109c65c500576632bbbed1f)
+ , NZ (F 0x09bF975bf3a64bff4cfaf9bf978d0e53f6506602127931b239a3c6b8a88872ef8ef2af068aa9ba7544c1534a571fdd504d6f59cdc88dfb71c344a8ff81d56Fbf74ec4e38cc082) (F 0x66140b9fbedf560bd098a4329a114f0c45fd076a2f2cdaa5a020099bF2b0106b202f01a8773cd3da682d0232c2bd6f13cd1e8a559490a6d6758e0a10649c53ac5e507b993ebf60)
+ , NZ (F 0x237b21e5c8943400f158c7407bfa03342ca3644ee02ebd8818dadf96ca961dcbd7d32b377a816bf7f6b24f16b76a80345ce9a296bF67ba961335b67caa2eF9f14a0ce2730653f) (F 0x03876c591b05a44c39994010567b924d29afbb9c31adc060fa1642a5fd294ed323d574b746011eb0f490e6a8175d0c8c329a8e652d2af7140e78c2b1cf699c054e710c1664f94b3)
+ , NZ (F 0x2bcdd69de218d8d4e9ebbbaf1080149b02d0F64f7f16217c08d6235f5194c4dfca2ddb497f983f85b50ddbb23a71b4282062e7bcd165b3dda2345103efd07dcca649841a647F0) (F 0x1f57d7f2a8b3ad7e3f4f7a06aa11315cc5775e0f971c1b2f8ff9184fc24860253065f82377ca4f5ee02beb3991cefdaa7132ce63f5d221f88490198b0F8082375a04269a4a4a5c)
+ , NZ (F 0x16027c7493b1330ff9e4a198b6842154a594063fa56d008f1b1509471784aa5ac1d3d9cdcc0e25decc5a0eaa203e917ab87a440c4015fa999c19c3f1ea63e0b5cc59e9bbb75823d) (F 0x252f5d7381845b0113134e92edaf036f6a52c83465819cb34a26389437d60f8b43d09a6f3fcae6573e1345c226f9031c864b64931dd759b41dda10e3c0d2971c0bfb2adf898ff56)
+ , NZ (F 0x3d51b0182eeeb61ab94c0d99b3e5b9cf77db47ed83741490c64053ae9360f9173191cc7bac55cfb08e4034d0cd5e68b4be51a3a0be03625aba862400968eb8f6ff7f276087a6c80) (F 0x39f2588e130b113a4f6793109badb16709d2c540fbaf56e0d7be27befd9c42b74f8fdf8bae011d2a36bc93c3c8c295b07cdedcfa37887298de9d7217179989e59a737e3e2bc23f0)
+ , NZ (F 0x45bdec38f3ee2850f591628e79422abad2326a5c3fa8da5c635e68c1c218299d129253e8759523adae06c2442bd4b4ff1a8816f4babd73f172c767c47bf66d0edc037466fcaa93e) (F 0x782341a1acf611583e27c83a9418ca9dc03bb5d8e7c0facf13f8a9227504eb23b617502f8cbb9042a7bac46701ddecc2e7530d086df75d82596c3b42e4190414ea7b71d125b7247)
+ , NZ (F 0x143ba435cfb725a0198542e7c106e1ece6ba678fae0e31822b26a4e4bcfaec21a4e5a476e9f7a1ac1bfdae393147674ebe069983f5bbfd7f829f9110754e5693b330a5166960274) (F 0x152552bd336075949de4abbb5b517190bb7af62ff24568c02257567536618f5458f0798f74a3d3998e81642d6efa7d3a0001b5abf633a64b03715ee749551924e0b74f26c93d334)
+ , NZ (F 0x3f8cc155a8251d78b2d12ac5e0a4df878fb7cb59c2c6cccb17599ab7e857fc48c12a3680344c7f269ec0a45e504e12d7236bafa473415c4c4b8c333Fc53d892fc54689e27835e4) (F 0x6633e74e9d8a700ab0b5b4700c2006561d98e245a25301b13d47ba453eb733409da02b022d5c0360a77507b3e2a77ba37dfc78e895be6b551697cda363aF56ace1c771ca2e1c19)
+ , NZ (F 0x4e9d070639600319c5ec10b86daeb205677ec2877836ef62d7fb82b5316d816f2897e142165606bf6fd5122c40c701ff3d001ff1af6888d60525298a9d460d23e55c547abc75161) (F 0x5c1334c7849e604c423e0d50caedd53697aef0d90f6c272a6cbde7f1ca155222ec466e4c5df7015514d473419c40684735702578218ee5a1f622cbb46727fdc94c08903dc448399)
+ , NZ (F 0x43e32ca45c5904ccb9dbe93cd19a9a02a869701f61F3ea6aa1d56cdb36eac1601f9c630b1e8e2f457b3fb1bdd210db05f577c73dd8fc9831353f3697de7534de05acb1962b8eca) (F 0x52bba7591156fcae4df8175966b317c49711d3b9d4064104038779814668bff9e6c5dfb2d4a2200b2f4dfcd7816dc9b40057f520a1b7058f55c296663fa332b36b8245a7c514bd8)
+ , NZ (F 0x3dee000784d12f0d8fc23553acfba510d1a6b88e02fae1c2fbdf63e38911a8acef8b360b013b628549365c5307962f854a048567f6cd3f284ebfcb68dabc95d8a268b24d543cb79) (F 0x11e3e4d0a1f9149d04f82c5b469d7d1f9d4bd0776537857875ca3a5d534d2c3dc4e1e804948a80bf08019152d7e0534847d75ac366fdcbe89df75108c41dfdb29d9f2f3ea6aba86)
+ , NZ (F 0x7c9fff7c2f6cbb152e7092e63a28d32892868952b70d36f0fd07372ce64286b2b997f5b8616bd9b9b609502c8c29a77701d945e2ce2c9f5cceb3b15d97749f8f0668c82c0fa79fc) (F 0x2b17078abc1c7892114a46f9fc8cd0168f5623e07e2cda7af1bc6175903dec78d7d685eb847ae8798cb04f132b5397957b0d5142ed58357bc90c36987946d07b800035bd860accb)
+ , NZ (F 0x653451de7ede21ef490670a0861b79b4c49a40cbb4d976c73bf474e53e2974eb4f13a56ae5eef077b24ea08ed1f77ba53151ce770c05689c0f5a11eb74bf132cf4424ce56018379) (F 0x778ec39a4d2f16092b6a28bfd660ced9f31b1c28a9f00b99cd6c8b4ae75a958fca2d84b3f2861ccc00ee4ddead4051230d4154f35ffcf84cbcb86150f6fa7b3acf2e366ff2c1878)
+ , NZ (F 0x28cb1e3ecc00f03c2938833f19b187682091d8a3b02092bb480d9b406b88582e754c7773e228b50a5460e522235eac98f8a64a7b0cafb2307a06c2d9722360f8684171d006d2a50) (F 0x68d4fc138223f4Fa28b85beba48909c6a7a4ec3243268d76497ed6efa19b316d52c5a39ca0faf72bbb633382281daa9f5af443084e15d824d40fc39781492390b19525840edca8)
+ , NZ (F 0x161e3050562b777ebb7fb688f53459753c094cc71c181d8ab5254a973f0007be9bcc7a2b002de54b60ddc682cead6e973aa48f0a0c4f08bdc7d5ecdee63b767bd635ef82b0d78c5) (F 0x5501e156c9bd68a3d7737d9af2cd7055a77f2705eb172b29dd45a9b3d51b1d12742656ee45f895f113c0c5e08e9926cce92ebcb6091a2c54cde5ebd32958a50c14c1a08157b69a6)
+ , NZ (F 0x2524296429dd09a84cf29e00668bbe0a1ba4a0c8F39e4291b33dd77c84682e1b55d8728169458a226a8430ab995dd74ce940e55db50cf4eccf217d784dc2404a8b262489935b63) (F 0x1566b9d5d6b54d53120b07c23756083f814c60166232552bebc64e9723eec5e46a3acf9051231159cb1098028f483277b3c6447e93cdceb19656113308ad7801a7a3468ca7e7351)
+ , NZ (F 0x5f676ed937b1d677997e431622988f4dbb2b2ae70a99837dcb7470043ae639c7858cfcf4dbbdd8e3b4a15eebcd5d14886579ec009a1665c33a22a3ff23d450e80dc0b1e7b6fc416) (F 0x3db38c083afd8676e52586c7ad3a600b80ccb8f2d6a4724991278df3b92979558bece50321cb8500a9b4e1c02b231ddb35d711937ef1e0d53b2bf8d0e1d536bac4334555a1e5f33)
+ , NZ (F 0x2c47e9b5ac9e35d2da0301b29c516701d12ab3b52aae62c4adb23ba13981e09c01428463f68c3affb8258067ab28fb0517acbe72da093d843e186810261697907ad2a464cc2d564) (F 0x1e2a794420206609ea5fdde9e0b4be52413d861da588f1eefb18229399a79fae6ab4f49eb2e2e25c6d02cfdc2fdc3aa770925f4b03a66a541764016f0507821dc995b4ac6613658)
+ , NZ (F 0x09f6485Fcefa6b7bb4ba5d3663135efc619ad3d810777e5d0c54f31f2858edbcb54a2d6783f640ddb9b89af343c2bc093a0e3c6576658963a91826b53a94ef0a10702c4b148318) (F 0x72aa0ed66efdbfa2811a88b25d2ea81a78ebd996759e471126487753b4e060abc2dbeb24ea2dcdbec3a148c651004a88f029bf7a11fcefcc3361d5693edfc95bdf43Fb5d67b4f4)
+ , NZ (F 0x1daced59e95b88b862da99941095060f7ea7d77f5582aa52c4caf259d948bead113d217739341f42478e20d306ee798bd401b25b6a5f516ffbbd77d69ca42ccab873ffdd4c2756c) (F 0x0fd199301ba85dcc2dc04667cf977ebae4632c880fba072d7d62383750a36e9cd54be712a3763d670eb2175a002F51e2aea3973a72d5f7e2e10104dffa29969b6eb6eb3d73760f)
+ , NZ (F 0x3f048a7862bc0a8a6f3ef30e625eb08babc1056940261cd07111fbeFa8f7e0a183de2420d12ccd5b829e766b4d3ad40eeaf63cd2a5b0841ab10a3e376f83221dca054430383a66) (F 0x3201d3be301655504c5db0b778ab53ae7a318f49c09281e011a390e01cc64c5F44fdcbbf224807954424445f63806c5649fc3572a737bee8ec1a404e7dc4f1d2f8e3cf152da45d)
+ , NZ (F 0x7f83e103bfc4a65c93866333d11b9b5c0a741d92d145323aebc01c21d09f39993aa4959a4fc16901ebec218ba13a5f036ac0a7d982d1f93F2e22b749a2f9321f4706c399d537ce) (F 0x112bd10caf88f3c9704e471ae79f9842832ccf0541d403196c6234abb78d04123b367a30822e75f3b866c59fc291fff123b5964352199e9b71b9c6f61ded85a1130359bed8467c5)
+ , NZ (F 0x50baa197ef799a1a7c5a6f1a0f986ef980dafdc4371dea72dbb445cb0e423e109228aeab285cad460e44be193fb80cc0e2379d79754906559f62df279f7f01a996a770a494e03b8) (F 0x088245a3854eb650217b214e9ecef59181a1214f3b0d13361370adbc376a48d30c3ff51244f488694746729cd88fd325f7d24c69fc3194dd6ce5e4038842854ff7580fdea3d177a)
+ , NZ (F 0x0b8176664a1bba03a9a2f6c5d5978dd349169715f8074387ab813cbb8e8b3fa583c542f0c41b84c4f282a91182abef7cdd7b755ce107a76ab644f9a6a24eb5f36b1093d28de0979) (F 0x72f972f4ce417e9dcdabe29850ab622359a34e5a5e72af336924e695d2e9429a0889160bde705c1f29d80cf979658696e59796becd1513c29651e67d4523a5ad60605d7ab42324a)
+ , NZ (F 0x67ac57b949dc455d8a60c2b02cd56c7f05429d1ab010edbc80ed467492c606c15fd76b9a18e823719227dd81eb2d8af387198eb4652dbdc758f342f156ae35ec247c59de3894671) (F 0x19755e7be281c056e52f435eee30b86cf750311c63dd4dd7c9f00806ac769d0f223c7bc7e7e3fdf1edb7eb8715e95e65ced7915d523d6010c57fa3ee85a4746d7a36016564a6108)
+ , NZ (F 0x34452253804d272516b68e0801dc1b689b03d32ef9e8459f2c06b2319007135c644c8d57c937e46c0a45701ed169750a1d39d36566fbf6ef880746040f8a04be2015581cb6dac7c) (F 0x254358cabbe27da1d90367b0e03b21935ebc4de5e84963ab392f3b6ad5b1d7820b0484bb35756b349f4067361c554086b84225ce5cb3ab86ea5878d77ab3264b460eac290d77ec6)
+ , NZ (F 0x45410ac01618704b9058ce4b78f2023d63c4a2372aa69313b77c5533ae5ee8de5207c5880bf061109275c4d5f8177ebb52bca7c53d8f6a33e19ec1405275cf35686a29af70aaead) (F 0x4c6387829290bc7aaafc74bf50432c9cd5fd6d9b197d7c63d75e2e54f7cd67fb6084e0e0147cc95e12ed2e3e14ec27adfccf79c65faf5a03b18219d5fdc49b998780c9b51b78f82)
+ , NZ (F 0x7dc826724ffdca793d1bec7c462e9a9c9b92901d458abf216333077f6d10a0e3915b7f08a05de8696a65283353a4a7ce9b424119778692c24094ca3efd6a5f10ec1a34efb6d425a) (F 0x0ce3d664fb66b023939b993b14bbf240eb8b2d5d8e8a8dc03ac628a190c49a50c6a20327efb0676afc77b17c610e4b7a11648037468babb9f403ff51f13d090abce02a16fdc567a)
+ , NZ (F 0x479768755fdde08c1175799ca401d5cdfb8b60572256e03e99d2b02b31398f5e8ab4452e7fd851b86706a12325c7b319b680743941b412d63e698635d6a01032957d05eedbcc7bf) (F 0x734fda15c4e898b3c3160367486803dF93e233d850731193351d91ce5c4397b9F62a4a6e3b19107587ca2a4d79f49a344f660a8bbbb3932d30f51d82443c29d2635af7eb2577b)
+ , NZ (F 0x6c9ab2d1fd9679742cef39e868c450a579d62d02b65449f5d0f0b71d2f54e8a25431e961222b51763bbdcab3aa04f2a862a7c99d28e9c14eb7f30dbb4f4b7249544900cc4967302) (F 0x1887b5515960a90ab8d0fbd7e38f10fd03b69f1aef580371c0b4e653e067662bd7f7d60be1cf8ab2c1e9c49ebd55e12f33f2c49f00416309572d49c2b83e92c292653ad02a635fb)
+ , NZ (F 0x6f1b87e64c4417263a4a041b2772108c93787563948972e3dd60c68378ef9a278a5e44059c7152727608455085b17245b6272ee6e9efbaF6e240e18445853141707bbdd7a14cc6) (F 0x48a562cc2621409f599aa8c0659ea1ed5deed33e96424256d298f8bf1f5d9be6096e9ea16f8Fc8228835f69064290ac1403490638582e3016eef9a77037dfcf953b0e02fca91cb)
+ , NZ (F 0x556f192acbf99c485c5d02146a7996c11d5a8f2c4b278a5ba98bd7b7e94303a275bf6cf516239c2b45a03b14495790aaf3c76616dab067fd17a1c5fcc66bcf91783e02b5caf45de) (F 0x0408645aa01fc6c0b7b8d08c194ac51d0ef2b9e4fc14163d2863440579428cdf5a794da9715184830fcbb62bad5ad6a5bcFbd7281b7cbfcbc9f6682e390975331f12ba482249af)
+ , NZ (F 0x48d27aF37db0447b7a0acefd9c15caef8cec9753bf63ea4603fa1217f7e11fac7ec211651079f57854b40d73186111a7e17806abb9bf7e11d0a24cd2a618a35a866145511e4e0f) (F 0x6a2aeec0dfd14200742ff36a7210eed6472ddb092698bc527c365d1fc39955d39db028aef62abbb799e9ae89a1d6faf9b8a1b22ffb223Fe4b775f430eb8ccd3a98c78290e74f21)
+ , NZ (F 0x75a9c657a91b1304bacef1c038f69882c6361a28F4125e11bf5ea5b342b014fbf6cbfc8e5365b8f7483a46c4849eaa58df1579e2602f8242469687c4186e6308aeec2511b7527f) (F 0x467adaab9ee578686cc89188255ced71c1c9bc6073ddf4777657f7348475e6ec6652c226d63a5d6588002c3e1e2576713c0b87ea14e1a6905aa00fbae368cc8b6f4a81381644505)
+ , NZ (F 0x3dad0dc2c31a69d9affa16a24244610b27575bcdfae7ec692f9dbfd887543685ee2250cd6cf6ae129e62afa9a927c985cf338b91cc49f1d26653d2d35d4f340df580f0125ffc1d5) (F 0x0dcec85f02ab563dcd93f34c41b17317da35752b434e70b22675f8d85d519ab22a3f9a145294264f453dd157b557d90e61efd6285995f1ac99c0610b9d4716a58dd5fac50799738)
+ , NZ (F 0x1d4c54a09ee13769ea4d28bd20ce01411377b4d505f9b4900d85f25070ad1bf29e517415e13155a6c50f26c6c215adc3b463639f9009713be137525c565547dcd0959519da6eaf1) (F 0x473c65e51c7db26fd2c3dfca21d9bacd55e0a2498a0d7cade67816e4913f2250c507301f611cfb091c41964630f86af7b0bd2fc53d577ec6381e9453aabaf5bcb1d8697c258e010)
+ , NZ (F 0x43fad1be9ba195a35a123dc773f5267c6798ba5ac761e55677d690cbee095a71a78f10d2a9852c8c83cc3b369d09fa23109a727257bb595500dc8Fcbd154b8af647d9f630486c2) (F 0x38895c5e99ae2c151b039124239616500d21c1f3fba2349504e5020a8b1f3ee266c0b810f4f12005ddec147d1b72Fd2bdec755020563bb4bec9F6f6c7c485f6de1cc5446da2c8)
+ , NZ (F 0x604c63c844dd1c9bf6fcefae418fb8f35077d304710a38c519b55d0564280df7e67da983f889713e8d4ca0748aff9F7212c4227aec1724cfa8a1bf47ec0ce79cb9f6552F037a2) (F 0x61a8124849189a09dd94ef821b7bcbc519ffc42b9114399886f8670946137495779F15a26fc9b15d71941980e064e2ebdf8c65e25fb98934f8e6575a37b5927a96f029f96fd544)
+ , NZ (F 0x19d3bf0dee17b4142b3f734e4e579a355282576e1e77d68291a3f4c09bd2a5ff81976a427717dbd5ea550af9aaa362da2923763eb7b1990921bd3d2f8f46902807a6ba1713f9b97) (F 0x7c216ad491c85785065fb731218146c06aa862c81b15909ad29f5aFfd207816224fb94831b8a0d6217dba6a9bcad2a77dbcacb81ccdf4523739aec2cc31f3591ad876c85804826)
+ , NZ (F 0x4e5860231a3f4b0bdc153e4f2ad8b1fFb86d6f484af7c83add6f6a1ef9e7175a8f744da2daf49F1388408a4660a4ab5137cab05c925dd40a51dabe9b23307880a7dae9a2f4e4d) (F 0x505f420569ba05a1486236f67417a0b100f69aee1335515ed971c321093ecb7a469b080c0e4ff311b4d4c6481b7f15a760e744adea7368f750b6817f2f314327a408055007de30f)
+ , NZ (F 0x76e56aff6b42e74a40766b3bc132b45b39c22ad3323f5d69b4d647002c68d8a9265a4528b0b8529db285963341e8f3e337b61a46e2ed19c530a88def96970eb3f0e7174e292c5a5) (F 0x244f8c168c7c1d7c07a038e32b9cb9a7e06ef0cf4fc42c9ee6e8438255657c79200703283ed338961c1aea61b3f70d94a9b33811a066b139066e92f02445aFb13c73b9bc2da29a)
+ , NZ (F 0x27772d2123c116c939f40ea5c6961c7b67dee138f3d027e0717ffb472292ae67fdabc1879e8186e95de1d413f31a27730509cd439851a38411773774b0b337474b32a7400c37c19) (F 0x4e1a7eb3e5b2e6375079d4953877a55e73a72c41f0d497e07b947e896177974c0b23998ee2b11fac81bc501b16df3274e8745a3acaa86a7cf645d947254aea7e5d5cb8325818f58)
+ , NZ (F 0x1902180be990c70aec771caeb7eae2b8aca01eb3704433b77F5ee47ba70c53c4a153b6becf5802c0acaeeea55a1e19deacceb7c3eb96b5cd34F24e18e173dfc84b481b6aa7acd) (F 0x03ec933a09816f2ddfa744e2d2d483b2df3b68a503c19b3442b7f113dd7d32e04c9bdff7348b459f5817411ad70f6a64dd1d844c8393da2988f927339a482e0f429010a575d6af7)
+ , NZ (F 0x455ddb601fabf4c6fc4ba1c9fb870abcd917d78c2e90Fa3f89d487e0ebe0156cdb9442b46dc9b1fdfd536aa41cead887f921403a224a1e35f83596120828a7f21a36a3fcb7fa27) (F 0x75040047ccf8a05169a6c32e812e78ff4841e4F15ce816d151328acfd69a89644c3f6e3ee258779dd869e9e8c6bb1f137606f9df9c45a3cf8040f94450d62890bf6683d091e602)
+ , NZ (F 0x40c65063736cf70c4cfabc33b653ae466d6023317573a59f31dad1d3d8cf3da3939fdc203a3cb267ea1490ca65b7d8bf1adf4e55d6968a124884b31cb06b7526b970639f3cbffb1) (F 0x0a82bf7195ca56ed0931405e8c747a89fb562f5bf514f72af06931b7ee2517d96a97d0a5b5eef274956f29918bb76a4ac76415cF9fbaa2b0c5ad1bd49d1053da33c8d15c096be1)
+ , NZ (F 0x4f6226c9303923f5614ae9517aa3c4cdd6bf52400ebe1da370ca36eb26948637765e17e6e307e1b3d6c351cab37ed25eb35507f945820248041349c6270c1273ae9d9698880bde6) (F 0x6b0612d55f498401ed6efa829b4d9b816aF76cc665c3ee2184dca487f0226aa4d1809cbddf6a10f344b948d334a4e3b35566ffd64b33be6ffc6081158ad0c08f03484ff6bc3059)
+ , NZ (F 0x0c694bd7c253e75f37e613e8e1a3a2ad9f7587d7bf12626e6cd600c388198003e8a5ff8a441aa95b88c6ceedb9f3dafdf2a3cec2dfbc675b6fad96986b2ceaac43bc3b0d934c042) (F 0x008d2cf2d3acdb227fd08a8636a0bbefae2ceF064d836fbfd258e1cbcd74ef0e89F4d9263F78dec8904b7381a2ac00de0a81f21c4a048a1233f323a928256d768f99239582d8)
+ , NZ (F 0x269fd561a967a2b955ba206338d4d85173bd518a14d8870ea1bf886592b3a9336e50a3e1c08ca019a4e1887aca76ef2d28cf89ebf3c464732f6534290eac58e01f75e262a784d6e) (F 0x6441f717e3d606a5498962a015bef453e11f1457c1e610172dd0aece71b2ff134719ec41457b3715654e7b617c9601829526b02811ec0d05ca0d242bde2d5943173ba4aa73426c2)
+ , NZ (F 0x5a6b0a9c20406ac4b605ec983446e7fa49d464a36f5df210f71f1ad86232aa54589ead2F529f5a44ec7ed68bd30d87f8875d6b8c78F93174245d9f6d816ac106fa30661cfc48a) (F 0x629f60ad346786c5dae6aff84e5ded7cfa142250b6462b0559c4beaa243402b39ca439dded754c277b6f21884ada82f4ebaedbf8164f8a106345a84a1e5867669b2aa856a8a8f93)
+ , NZ (F 0x5c780314dce5e59416049521f83774d91de73cc1de007834e712698d019b4b703c135cec5053af8f8796eecb2f36a46d16133496867443b6581d62aca7ecd44f6e0464d5e51abf2) (F 0x4d36cb65e9489091d4ccc38437c8da30234485918fb98cfdcbfcfccf59fd6817adb93c5e4e2842dbfbcf83233375c0f9f2d3173675002cbe9b343b5c52c9e042F532b0cef80497)
+ , NZ (F 0x6bf4ba11eb988a2ce20326cb3b4fbfa817b901104c884ff07d32741c8462bd45dfb2dfc8d725b997dfde90e8fa8f47cf175330792400b9b5761b5a4556749e06af59160241b259d) (F 0x74ecf0bf19925a1b6ec206f534195259da7c7ee1e38f7584bf11ce0fd23e6e2c6cf0eb7415f7d1160998b312a508b99de99d926fbe1b16e04972b9429ca1b448458ed5c5ae9c5a7)
+ , NZ (F 0x5afcda26408f24a56c73b782c3f6cd10a05e47e6a7ed211614a3979b8ece27268f7091c0f10c3e95cbaff99e0f08caf653ee64d86f553b4efce17e1db8110cce6dcdcab4f6f7600) (F 0x0c72def26bbbe7b31fbc06b877bc5551d893d53bcacce8457918c94c81352Fc9cc0cce3963c3bbe59cabefa65b21daf53966af16a94c7d213367a3e0c931ef37869cf6dd21ada7)
+ , NZ (F 0x054990acddee5b33b22bcaaa10149b6d72f32103591c9b33e2cd0cd0c364928b4b5efb2e096b8f35ff6019627716e9a6e553b05cb8e1563d8ebc4823ad1d0cdcc07cd9b22f8d753) (F 0x72ad4c8b467c1df0c4494831eb66d70845ce37fFf20d71011018dbb164a6f3da71b11080099fb0589d77036bb9e103f142b5e7ef155b71350bfa0ef5a2a84880d1afbf7ea658bd)
+ , NZ (F 0x0f0457ef39ba92e38a00acd2ff925f2b05ede4ef0596cb9ab8197fa3b3d405fa382197723f4d871cbb654c820d4db668e820a00e7b9a5976b2bc505fc76170f0415c7aa8c920561) (F 0x5c73027aad719a0af1f54b46605bfc4b1e3330c49d1f78fb77f9cbdca4d67be8d41091cd1ef46e15cbd7f963f5b606f7612953a7be6c5fcaa91bfccf3a1b8bdee282b5894285de2)
+ , NZ (F 0x38504fa99c7ed74521a09257145db1846487e4ad2f8aec99dc490d8393a5d278ae2a4363def022b646da0f832d1dadecaa114b06c3f654c9b37979fa63b2d8864195fa6bd8419e8) (F 0x7f7c3d45F423fcecf59ee2e77abab4291cc1e1e9414c9617881862c01c3e85a363e8d1cf966fc5de1cb1912d296d2057b236220879dbc35e601a0795ceab56cb91e339c60cae9f)
+ , NZ (F 0x5f2761d352ae497Fbf49334944af8fF99a5c6eaca618e400c79827aae98d5512f9a3438121d475acbbe5408423f2a10ce37d53e849069027c230c7c5cba19b30af7e11df11f12) (F 0x566c840460bd1568871d7364ab9b96dfa7a9193d9da692bb3a7987267b36d9ff4de717f365b22c1116bd35d166f159f613371645c9de16d4d86d491a4915d9c2605d2226923622f)
+ , NZ (F 0x71038f9cdb113b84ae4282fff461a9fa2b21f4c0a23a6503dceef187ddfc8fc50c171ed8313b74de81b988f0c75eafa987aa5640932a56ba207663789780f5a4d8d2f14eae8efac) (F 0x0473bcc49c6Fe6f9f9fbfc883483153552Fd9fc962a1f324817b18961f7fde81c622abb358c21b782740292a2b90c05dd4ea0029a90626462c84311c9562ec82da09be2f9abbe)
+ , NZ (F 0x58f8cf29fda61b8da53f64e6cfdd5923F477e5b9baddded4682f176146f7d9bfacfba99886fb9ab84d9ea7226e441d2a1a6292bc7b66a33af212e6bc9b1ddddd51afaf6b0dded2) (F 0x1cc5375fd8b6d8b0a4939d1dbe036d0e8da5Fc54a0b8527c6836172039ddc0062bce2d701f89a304fcdb9b3a87948f29ae2ffF972eb28db2ba49ce4f8e9efbe4a801a22ee64f1)
+ , NZ (F 0x3e04de865c35264b1ca5bdc5a5492e9e3f43fbedb6ffda353d3a4f5a59433e0665b5d330aabe5d419b936b3c58db50b2f5c28ed8e21fb7cf4cceeb57d974a28de60b5bdcac81824) (F 0x7068c65b5c8dee3983f06f61cc81709bfa1e40Fd0696a3bd37376eb2ae900be41f308b7103e6e625437db89a9820bedd1a9cf5857c7274a38994e85139c70fcc7b7c206df50bb3)
+ , NZ (F 0x0b7e74df6144045b9fdb1cb993094d7c05b85db04d3a69d4d280bc9923e7f435566ac3a6308c18c1340e254f8F3eebafc85d14c870b0ca20294eae1c7329c8a76427b847cc7536) (F 0x3da4446b7482437f59e1f476488487da43f9ad479c9ff6ccef6242724b2311c642583169a09fc5b9caf17ed1473ee9b098262e3ae11f09444fc80b67f89717799733cbcd1b4a343)
+ , NZ (F 0x3eaac2995465bd7e4e22b77f806a2228fc277c03bff28e8a0c59ea1085ddcc1a44260a2e502855d242413e6bb2c098bda868149422aaf5916f74020bad2b8413413861658bd53e1) (F 0x0cd912f35d6d906fd91482d51ade5d6844b805fae77f647c97d09352e22fb0be9f1ce0e563e32a3475ffd7ae7172c4933ebade804c2c761de63290edbccaed466583cFb635db69)
+ , NZ (F 0x24a151d37bc46f1a2ae932adb923992d00f1bdebb1b99cf6913cbb7f78cf3565475493067a299fb1387ed3c3003b313cedb9fbc328edb990951df8110aa355bd30858700751d673) (F 0x0a34b330f667ea7ab9c7bde886507c4d9d77aeb647d72ee769cc8c4d8ad78dd3da2e37177a347ab73d4528aade38580e260b6e1F54fa95c32784dc108fb0aa3ccb136fb1bf02eb)
+ , NZ (F 0x548a174af0717c7c9f50be69f0a91477e523cb59172a5a43267203da8b3e299523afa148e00a379b87d69b6a5c2f32d75e3b1007adeecf37c93161b8f868Fb2654b6b07ef83F7) (F 0x51e02aed5939c0bbb8ece3b3a8e6c4f4b862df72a3da859a9F14843a865b1838b2d2d2c550fba46ef303a2d829e5a0d14c3657f3802d63abf364452aa8c8ea1018d29dc8f04227)
+ , NZ (F 0x3836933e0024faee431f7b7c077bdc47c3a2a554ea43fab917a12f9e8489365aa1211c44f721ca63628d41022f929f577341729567f414fd0f0b21446e572b2bb47faef190580dd) (F 0x0cb8bde755f378e400a0879c331b1eba207503Fb506ac67f487e8e795d916835a8e34d427a97635da77378b74e90d1e59ca365a44137b70eb7e74c0395bd3f74f26855a45d250e)
+ , NZ (F 0x30cf5d3dcbd150c44bd18857abe9b67c51490b3745402beb4deb272cbd9835aa1a2e2c7085cc89ff344d621e9b1b56c66cdac2159a7a3075b87e5f388ed7401a6c405e96c207762) (F 0x2b8aFd5cccd96117f3d15a72efa8c26934890069414cc3dedeb19a76468762195b257d67c6bea4600fcdbb23a32cd8085f032aa60989ce398240b8eeafa23fb4135a03c26826a4)
+ , NZ (F 0x3bf1bc37362579c1eb1eb01f683b629c611591fc2e110ccf0de90382079a385b890f1ce95eba4f653a243972ded83d5d06662adcac7eddbc021607bc1d374a775719d9a2e3ae029) (F 0x06f09f3e7508fc7c0b604cf53a917ecfc57d9c7cfafd0166ce6f878a7ad4c26c622edf24a99c1b3021563828ad3291b038affddc10adc0e1ca246ea64af7525d8b234d6385ce77c)
+ , NZ (F 0x29f520ab7090aF4c6f3497eca8079d39d0b2b0062bac8640045f28174460cd68d9ede67eFc412e20d172955201d6423f48a4645493a1edfa1b59db06c231031c21692747ba9f5) (F 0x23ce14d0af1b9e595a2727eccbce7eff6abf4cbe4eb7eca5cee43240abdea5595db6ea734d710880a726ca16d7e25c02ee6501eeed3d7274aaee4ca1acbb6df6990589df9c4e7b5)
+ , NZ (F 0x72d444c865d0ef8d9d0d509186f69610e9ad6080b7c767c097d661111a9054cbfb1ddab755830502799199a9a5d285bc90c8865b531c2c8b2194585f5ab0d80ef12c74d4dd8efbe) (F 0x3d402f832da6a6170F6350199d0f29906de6d64b9c78fcc588d91a7ec8658dbdff6310038f7c876c806517877da95484b264f271061377Fb1e152690d0625a0e3d53d9c2e72a2)
+ , NZ (F 0x712a46dbac00d73a7b5e3d42fca8ad300365792d54c36f5d741ab13ae0fd077e98b47a54901d5b99a754787d4122abffa6941fb9afd9175bab2fbf9fdae3f69ea33a01c6eb98b5f) (F 0x74388aa3677e52a3a1ddd52aa6fa1e2dffb0404e16e06cb92e00113b265ec5ed223de5ae920988b9c579bbf6587dd819097f45c9d8954158125241a3e668d4be62b8775067e239b)
+ , NZ (F 0x0b870cba76b024484744a3ec3c9ed63b60bae4a4c5715a92d19dcc4b90b881989971184aea78a7e3243d8bf576061b21aa6f8300f6d18373c4c98eddc0e2b7379a5577ce3a5f1ff) (F 0x7af7b1382dd4361ab121daF2a80bfafc9800827039bea18013be0b332358094b17cee9b1c87a18330ac164205da81b218ee730b96a762b84cbc9fcf6c620F76d08145d0c8c619)
+ , NZ (F 0x415179113efafc7cb404eda551d53f9a97c3778936613e5411d2afd85d3f9be196e71a95666854ea544a219d0418ecFe4d29e1e9805e7fc8e7f9ade14abd4b632a798808bd8063) (F 0x2f8b08afa52b6874e943d83e614f46a9d980acb1f10bdd03e227a5ac8a90c8857ac8f888999681dd8b756728dcdffabb8147b4eaa2822126ecc22451ee02989de9289b2a6c5Fea)
+ , NZ (F 0x62ce457ca5d6b78b32f315c700b3af895bea3093487c21880d532314748362495af2274dcf13d461225e86ad4f9afc36cc08256bf5aae01ad70db836f603a2c3e13cdea87d0bb7a) (F 0x350f118f83f53ef392d4269e64423e32c8135d11922454a49ecf19af0a904ac04c558c38f459c9c03eeeb931b0a34b6386ebdb2472c77b0b271d7ce10e5b98c5b30b553aea36f7c)
+ , NZ (F 0x34ea41d780118edcceda032fba9ba82ea0b090b69bc95a2de82d58b11d21db1cabd8625b1535e95fc3585b5a1aaf41d713daa51576f7dbe8ceff34cb047c15e2b50bac0d7844149) (F 0x4e5b9c3223fd95472f633452e5dc8d7ff0988596be2415439913e05b620ed3e296441ba457b094a27a3fa0d650ef46c8d6fcf7d18e83ba5d198bd65aaacd62c4a939a2096922b38)
+ , NZ (F 0x09faf972ced0c1ad8a296f940d037ca789ed9ecb9aeed29f9c8573ccf2eae2f423688f6f266693196c731bca9618f0b2d7b7c30eb226059cf5331495d5962fb61469fd46e619aba) (F 0x500e62021080806f82216c6d117f16210d02d69a5f8bbe88ce5db0aef462f36919549bae142a907aa1b3ab7a7ceddb7b44305aabe9d309b6d7854Fa3d1efc959e29134b1cead2d)
+ , NZ (F 0x0283e4fbcbc90a0e9bc8c7811da21645ac34bdb615ae68dfb5a6554e092859791611c636f32bc01b3215edd11b454eb658932e14fc7f7c7d4206b2add141b7566FcbbF62a33ad) (F 0x253147c4fdc8329ec280fc2050a9a7ad71c2c5eabefa2559c59e5604d67da9732ba2543f443f9059bf84dca982a5d7dbae9ec45e47ae132aaaa3f2acf22a39e583F90e28c00756)
+ , NZ (F 0x41df10b7b2fb3fa9d492c7b05a7c00ca1a2305b544c849933b6bc548bdc6c218fd69dc026829db2a769b13336192d88e5b59bc29b4f1abe6cd379f3df7376d2ff26ac71b498fac7) (F 0x1c145c827e1df3ad93220a2600c5de914613ebc330fde8ebaee364c5027b0bc33f2366467f35f203047a48ea662cb7e8caf5c1dac4a3b63e559830e82a9ae42bd5c20217a92efd9)
+ , NZ (F 0x3c2fc07df3090bf85ffde0d3f3595528ed76803e5a3c86e5f745ff2171de8ea5ab0976f09a6bdb0a9e60684f16ba2b2d2df0a4b18400df4f6041700815032c9c96912c428520ce1) (F 0x38313d848494b1c30ad317b93734b11ecb3b3674ffa83afa11ef2433c903ddcdb86984c3882d70385c27f49374151c6eFed99677b630c94f1ff8f46a55b9eb888d914642a0cfd1)
+ , NZ (F 0x52ffba37fac41d20f8eae991752584a6b62f996147ff689ee98ea3b6a2b83d131c2030b0dc303f14cc9e67599acd0fb267a70a350b57c1941ace5cce7337f4d5647a0e5b649cd18) (F 0x5f1a5aee6d188fb28cacceb32d93Fcf9fb741cad7298deca4b23c29098f7c340add95adcfc53e4736193792e37341a57b823621f8746938b501914f81332a2c57e40f690f57b0c)
+ , NZ (F 0x714c7124744d9d7a782ad0547a14b6c528d516aee95aa8b13faef9a06f06754da33ecf1f2dc4b92c4aa301d24eF25b69fbdb197db2db4e08bFcead870e275b77281e99e8c944a) (F 0x4e8cd403f15c9927Fc33e18834bb15f0674f4F98ef7eed63dbf27e2657b7c7709ca44e0034bed705b98c5d628c483c67f57e0031ed557eef1884365eabd983d153a5613404d43)
+ , NZ (F 0x414bebfb6bde8456a5422315e6de014861cb401548e6deb85210baa2c257b503304e0b635043316fb7b3a2946a79910f765e3f6f267955f8036a07fa972d5bab25c0f4165bd1069) (F 0x50d6e5bd23e5a19f59be0fc35839839d41924c09ce6ac83749eb0c222f05ef6ed14f1cbe02c8f00aa87e1ccd7b568db129d9571f07a2c5c47c79a34a291bb66b04bc05a3e6d8580)
+ , NZ (F 0x045e02e941756d00c488785b3e80cb09dfbF1dd6715c7913770aa119367f1b437e3ee25dd522be28e89682698d6e4684bb3c67a1825734b36a6f9e65fb26a404c62549d1c3ad35) (F 0x065f87316e550069384a03329b43b77e5d3ee36245ed3a7ec939430c108c0e378aafcc3caca1927d118e239117c502adf2890baea7d6dbd58d8f6b062783c2e8f127c3e9cec44f9)
+ , NZ (F 0x18edca28c3d9f0803a491831957f53a8d642602395b293b8486cd83a79f860bc2a3b4ddfdd2b733d7ccab0500e6eac43a47fc98d02deea874d67a7dd6a16cc730bbef7a2aab6cb2) (F 0x2adf3cd9f660f7fbbe620e0a44aa64425bFcd4eaa79764072f13e594652c480e1e5e4e8ded6930b9757a4f4Fb08bf506c5ec7ec797cb4673f01ea5391a044424081c03c730748)
+ , NZ (F 0x3e05a6942de547cff75590e5d5880fdcc5bc49ae93bcb41df51efd50b9ee10031022461c1e153e451cd9a60460928437932b85d5c36e101919cb7bfbe267252785e1b151279f29c) (F 0x23a1463b962596b1955bac80c487294a42e4c340462be880538426dab1ba0aad117d84bebbd487c2cf4b5f02ce10db832dd23a40e8a864e092dbf08e3d68383fc115a72edda6297)
+ , NZ (F 0x67253d0c5de87e4b5cbce31ae44bd9d9183c123ba013d51c3c4179408fc57f14aac478f1bb81fa6adbb0b4d99ddd58da3eba36b66eaf5cb9f09d685d0a20dd3565b121cb96f39ad) (F 0x136c059b5f57b8d7330d5c3def0e3f7c960caf98ec1d8F5eb0be401939144588c28e2c8a077efb16833271c13b1ac95cc7afbd5e93b816e21627e911703b6cd97f444e87adaa64)
+ , NZ (F 0x157d2c314add68b3498a4921a077d1045be3110b928260426907f15ba0efc5f2ca33fde6a580a84f7e2be221b809734bcea726e41f18df1fb63491efbe8d657d2e3ba61b410340a) (F 0x25a9623bdf9c4794d86bd6d187fd948e221f13b89fd3d55f2dbcccf2cd901e024049fb28ae66c832a3dF1e178b729788b30948b13dd2b7daf073a8c7ea965575b45591219cd8f8)
+ , NZ (F 0x576e54c9728db80444bbf803c8100d0857aF6e6bd8741cf0795b6cb1062b287213e6c3338d9b23cd7a744d45a1dee7a6c1ed3a1073a47eecd7bda4db93f75f7dce5d8396ce2b22) (F 0x1733c001154e9620c8c1add220021118b10ca9434053ab8c00a368f4ecef31da4767e6d0be2dc9af41c595b96d42b298c6c4b6e52c47db7a23c458fb21ee3c88794a61ad22fdcf4)
+ , NZ (F 0x5d0a1b222ef2e79b58a0f29c6ce9991c0b9e933dc0ff75ff15359688e293f4cf6b2e5b631cf148Ff27c472a35524eeba91a2a2c3a3a2326f407a8c3555020b89a22e57ed400a59) (F 0x7ce452dd61c23b6e8ab3c2eec4d760095859cceac6e4a3a112fc577c4e2763a82961276ce9203bf3Ff263e514b58f511c18b1a9d6c135e44aa8513d9cb8648cde8c5718faa59e9)
+ , NZ (F 0x2ee0120de58da43fadb3c1839be94b47f52bb6957F7ea921066a5cc139b596c3b32ab79a36da69349c11e2ca16267a5e2f72739d5f2c8c6c351c5f8a37b452bd385b43d879cc3d) (F 0x69f102F1560e1620a94ea7eb389495a0314c3bd5fabc17249e5ab39e7f1434ffb1f0629505e7ae7ad90c32d7c53c7c62fbddeb1e3c7f9ae9fd5bd1f1c68b37498faf9F8921c0a)
+ , NZ (F 0x077582acd1a626a553c253e10279fb3b7961f81e76b39535de22f398a466bdbadf7838ba0640bcc29e64d32b862ce636af5F85ca12b5d7ab74ab4e515e52608edab5a83e9e780a) (F 0x210088d3eeb100536282da0024d9dd22ef7194c7a362de80375fb6b6346e74353a80766090921d529d97d947b9745a329d576a2a3b4d2fb77ee8afa936319f813c4b204247ab073)
+ , NZ (F 0x6630aa5cb6a05207e5e15c861cd805a7727cb22afb78a98102bda5110deeac6b5abd7b46ff31b89a2c5b471aebbfdd2bb63d271910a9e1db5c61462b915b29139Fa97aaf358e7b) (F 0x7cf7aa4ce1bb713e52ba668f237b5ed1e9b4b2dad2502c10ca94e74ba4d80e9e2a9f78e33ec51b3dbef410522c3e9bee4621a558a218da543fd9704c01288d7b31af69604915899)
+ , NZ (F 0x16c8f2f65b2f078a273690f008F5b3310b70d5dd4a86d723d0a6cb01d45e3d7293921f24738e7e2742f30838edea77701c65908289c9a01904b1770a92e5d64a2fb2aa95eabb01) (F 0x7afb0f5d9d099aFb231775fbe76137e11db507ecaa8b21d9da4e5ed69491ba5205F55c18f0c2c943a15448302cdb122d283b4906a3b809f623bdf78a0fd1b356f74ff32ad9248)
+ , NZ (F 0x46529c5951c4372e37a3d1ece7280a29df20cde80a08339251ae625eae1912d8750402f8456b52aa777fb50c7ea13a5d808b2bfcadc71e6a20daab454f00f99dbd92dcf6ede98b3) (F 0x0e7e80d0100c8debe14ce1286048fab7d4535d84fdd39c892ff56a7cb533a45dc911329c3dd3c16950396e780a7c606cae635e3f483e36857f9f5de9b691c679ca755410b7a3970)
+ , NZ (F 0x25586ca3bd7788cb2928226c224243f37608c7c7ad2aa1fc6b7e7ece4eca11eddcee730ab074edb6f108dac19bc448c7336b22a6a474cf0631c00d64F722343a3e0ea9abf9b74a) (F 0x6149b02f4484ef31949a43b4aad97621d68d26b212039ef2f5c1d2316f51a6266bd160b758190bd39176b702d291dfb73F12f434e203c662e5f05f7f7ca3b543ef628465508b5a)
+ , NZ (F 0x41c448100ec5a217b405c4b33ce6793093f8ee8e8aa2cea6c0a88be3a3e3303b790d45ab6ce3c23b67a11035af4172a0acf4add228f89bea8569ce20b168a2c25b5959ac8fd7d31) (F 0x0686d719f3b2a8769310e9d6421344a0d125a68dbc00bccba0deeb0844ad2d42725eb974149de245a3f74ea16e4a6c7be2eaf4d36e0f47e027c5f9d7eF4140d8b3f1e498548d90)
+ , NZ (F 0x4fc1b5b494d45e55e178703442b7569dd7dbaf27c3c95b29032e8d0edf7bbf903e6460c0353eb3e7bc515cdF26a718307f2854fa523c22a9986e87c3ab1e2396966b53059620d7) (F 0x15975aa8238c4d75be2a7051944a46b54888476ddfb1203eec467f93d2bcc28cfcdec6ad1bde4c9b381917ef8edab3704a9687ec0dc67ee094fd0d8ffcd1447e37f9a054ef76f03)
+ , NZ (F 0x21f61994a5d5e71f8958eb556dbc7d1ab8d38054aa0ab96217251be5ee600d393f69d8e0617f5b957F4801403b57cec7ecd621fbb237c2fa230d1ab2ac6bbc0847570f08d16fb7) (F 0x186113baad161b25d320604f1d7daeb4dbb4e8756b89db307ba48dc50728fc69b08583046ff7418cf9816020eeca4f7f375876c7668c2ff6ce6745bbac6d73ba426087eFe530f7)
+ , NZ (F 0x25dedc0d8a44F85a2616fc9e4e649f5642ff8cba4b5aac7422c6ecea78382ad8fb301e14bc43c228e47505ed95f442b2e5722b24b542235e3a50e5244d5d6a9972bdc2d54a394a) (F 0x217454e6d3dd2c42e886689e152f49e8c2dad8b46ea66669c8f4066ed8aa1e59ce3cc98c69f5e8b64f98a4bb81d2c76cd75b242f6e9a37c3c78ff4953F17d641ce73def9d4012b)
+ , NZ (F 0x22cb7ff0125ae2bb73034fd2bcf47ca5f5840bb16e263b0398d4e9a1ace3eb2643b31121cac3f38ba1d5d2777f0b810f3580057717eef55c062f2c01e8dc18794Fb86c59d31df0) (F 0x1dd3c39a433b8310e762097b8f42044e095d3a65ccb04239eb3ced1f955e62ffd8c331cc3113520d555cd6fae0bddc5a4fab2cc9ea6c7b6eaf8e92197735f7677d427cde81c59d0)
+ , NZ (F 0x1a01c0c2412172ca6164166ad8cd8f89e190643f676028a9218d353d335f4bd02d914683cb205a60a20f2f72771558b7c0925c3748bea3f9adb7ee1adee58aee395b8a23984436b) (F 0x16ef53c51d1f94f977113f45ad24fa21b1966045f0e106696749bc6773a9cdf050ae7332c60c148466fd35e402fdfab0c3a241d3764166cb73a685a5a7ee6bd9c04549262ae4e28)
+ , NZ (F 0x27f137798ed11e5a7a779c60b96a5ff4f4c221626dd5a8efa26a4d88a1571144f078caf99fddbcc401c12bf60936a4f5af7de5c2d53b5090e8a15945e3a132d47987bd702157caf) (F 0x43ed3bf21f3319de51470F09ee9cce825517ec90884fd232d49124f8649f3fc9c0bb60896611f420b8959eb19892e60d8efb2325be14d81ca1887eb6e774de0c46619781c5a56f)
+ , NZ (F 0x068b335f156a7be9f6608ad33806da5d5e737eefab99ec73f3a1d70eeec16bb2e056f577c5a4a073aa55438958ca39b43f567364ba7cb93b42e162f9efcba9a2100f1f7c9a76a31) (F 0x3b90331f1ab28e9a7db099828ec6c4691d3943fa9542cd6374bf928ec20b9d11475b2424a0e2847b3cf6e22f7a3961c88674d0c159cda08185836c8c80f6e0bd9f705e075d18bf7)
+ , NZ (F 0x2b7e886af6121b60151561b43bfa26f55bc9dcc9d12293b4a1e6b7853ea02bc666321a5f833255a968053f96bbca954b02a8ca68235adfd48d425c441f30e1d56c0c09ca1308265) (F 0x68c5a80f29c974389789F97c5941de364179c2ff851574ae6a1f0db89f7292c00a9d16b763df833995d6f3833fa8abbbb0624a5135866ff3770d93914dc51832c18f2a1bce7f5e)
+ , NZ (F 0x5f2daab021951a858162779cc67f5233362666f40f493fdb4779eda646bd7ed1c3df6664b2fa3b9f309c265cbc48f00f527be395940ea06499310be64dda535cd6418adc2366388) (F 0x2f8a3e95478390096a21ddff2ae025f15b9f33901275fb0290d233386711c322364c36c7b93a34defd8bF75a3d53382a8bd79d60463ef7cf1472cead60f625aeb9b040d388f93a)
+ , NZ (F 0x19edf44d2Fa8c6d7edcefb6a2678a9015faa30e1ff19fd4f8d1691a7c4c8b61b1216f1c6ecce22a09f958c8cd46e183ff49c75ef3831c1d9040830f425f25d3c02ce77d160792a) (F 0x791953acc6cb7b6abaF82f88c374c2f2948136f0c4531442484ec5a8af413306df3d2d4a3a62e412676363c0a8d9ef784e63ae6F8733ce8d0e593a75b34ad7929e8cf525a6246)
+ , NZ (F 0x00f429a3cdb3485db756523cbF3bf25222b4ba3906dca927841928355df75267f2f7bef9e485f98152140acbe3b740036eaba3990ba06389f8fbc81e73eecbd07ba22c15f9b52e) (F 0x691e4f064b51cd7b9f20a0e1b9b19773ea33918e372b4ac7526dae496206a498f399bd9faa3fd38a980be67e33fd938ca954eb860ea44a57773703e297e774beafb549e3890fd74)
+ , NZ (F 0x079426a275a79aac01dfa1104ff27d67ed70e280945a0df02f8d8ccef3f419884a71802a0eed4a88cd5c16e5e693014f2f42a8126c237664030607d260cfa7ca3216aa4a8cbb023) (F 0x2d0a5e2a362f18c20be0235590b52bb3166f483716727b6036ae08a762011a767e20559617e1869cb2Fc2d4d379e7d5ba06f0d1ffa99c69896f63af173734a7268caa05631554b)
+ , NZ (F 0x160dfa75e225cd140ef77a85ee4f03fbca129832540dcbfd73b783707dd85c35133dd35df8b511a1a77cc7824a686c17c4d745443aeeb2358d5dfc1107087c7edc81ecc595372f7) (F 0x02916a1b08ba34e168a08381f7162710e3c47e1eb63062cd9effa5bcaacc5c05a42722838d34ffd0323cc39088fa44d2d74b295c32e7ea51c490cf9a3d1b239d6f1068d37d0adbe)
+ , NZ (F 0x2a302d3ea74d33f2e15da3e7703b92c1abf9614a225bc572220961fb0c443533c4ea58b701a577dd2f8ac97aaa0b072dbf1dd90a069ed0b2b75809c55204c799b23406da4c6406d) (F 0x5d65b544c825d0e58f3988F59d528bc753091a190dd426e8c33b34440bb3c22c91ef72bf06d99634bcf598d1977d13ac728806fa0b9ae3c3f6acf46d03d22f71b47a97ea019e03)
+ , NZ (F 0x2f81e1edaac506077ce38e37b9fa4b78d9efc62bdaf0acb502ae391004bebb63e56cfd101dd6cf43958870b648962da26c60fc7c4b73ce3cf3856b772cf330beaee49b90c9f7a88) (F 0x459c7f7e5b1e81822005293904015345dd058a3a57d86b79952d867367d46a408853e688b12b2936860f90d30fa1dbd69b5fd775575c5f3bf62c495c6a84a00bd06c92e5d813a7e)
+ , NZ (F 0x7d4875b384a303d6d28acb72fc6c2f176afaa28abd10bc697ee1077ae5ad27fccf471f0c2a9a9b029a683db24b26842d2befa333f4cc50833581b30adbeb5aa7668d4a3e904f7a4) (F 0x634934838d27cc224771c35c7b8bad8c7c0F099c8c8287dada53F6c5F2dc84af4fa6d3c596e9f75c715c02f7e212b7e7e16710a480dd1a9187312715Fcafb00f74916488961)
+ , NZ (F 0x168c52c19d09123b56aff579fd1f5b4230a6892435605a3d74ff56a4ed81238889efaa75dc07befc69b95e154fF148e0c3fd6355b38110e13bc6edc6ab4ab43ac59210e2b2ad9d) (F 0x4b6adedeb50e2bc0e4c83d2a4e0a9edce71d0d0f74e85fa8120f91a165871955e36c960d4754394af959339e574bd033fFb13c92a33a3665a95169b0efac29f5968871407f0366)
+ , NZ (F 0x0181be7390Fa6614a3b510707d57db684abb9f22b277f58591d88f064d82cbeef80f222ac977f1d60e4fa38c7ad3762366622f82119f25566814003c212ee1c970e9aec04df947) (F 0x11ead477262c8ac9be7217e8a507838dcf1194e942b28ae444e729fb92d7cf27a6bf49cddf0d5aeed3ac5f215bc3415d828e832d4c078c31ecb5162dc4bd00611e261c00330ded0)
+ , NZ (F 0x17d4ac8243b7e83b4721ef81f8e00f5ff50ed4f67d8636936c3d30e6452eb98cb76ee8211633ac748a3e0c870f3545f2e66006070d07492cec1c70f6d5d4012bb82702cb4f9d259) (F 0x2f76c21b7fcd94d4f1cf2bb991a7103d808d8d23bea33699cFcddc0b649fab5fa78822f4213e22f3e857fa7b14e714351a63c1de58c3637f7b4c8b85cfb2d39be9ccfce775f90e)
+ , NZ (F 0x6f3d7cf0a49f00670ffFcd38a0dc2109c4fcb69eff8ef9d389a24405117c0b1a9bb34b89e183da796c868dcd5c25e6ff9b955643a3ad123976cdd888a2fce3a8ad338b8538119d) (F 0x74513cFaf8916db7ed776f0580c1c6ff883356dc766ae35e8b01ede9e8f85943e4F34fabc1f511ab736495827526ca129b86b46762dfd2f8cce06fd9f63cf9aea4eecec1b710a)
+ , NZ (F 0x2e39f95e09F6b2c53928e35a073a1cffd2398595f9b30fabc2d3d50094695929cfa1ef32f0ac2b17404240d6f91bec9760311553067e5b11bb36bf6574b6f14bc7240e4dabf5c9) (F 0x0c575f3a2357634aca8d2f35a0105fa6a421b3b0f4abb1793c3134c410b43c6c6265026ea9200e12a8ec62521f2c0085c2c2041502c1a12a1a00b6fc2563354b10e9f4dc97e3c7f)
+ , NZ (F 0x7ff72ca473925ee946166c493ff733945711d87a8742a4783283d852f2cd511c6cfde8ac4b0720f7e9F3ec7cdcab2fb7ef32c968c7ac56d7634ec7b9ade6686984d98c169d3eab) (F 0x42df33ed5625a89e09f8a71ed06140af858f90b6d77afc4420d97a3e52c9cf429923e609e77373e98572cd1ab5e2a37d79487b82dbea6cbb067f5bdf569ccfc8c4b6d9506ba1cdd)
+ , NZ (F 0x3fc70b90ddae1aebff85cfc5fdc1b5123b687c4894205c3faa88f00d121a245f1208afde280eee59153065fde5783d65401ef792af313e434122ef528bb0b29448dd4b8d2ffdc36) (F 0x25392bdd706625df1f50ae674808aa034f5b68688936187e2c2b0b46525df8c154cdaea589a6875b2dcc151e7d91d0f6bf34a5ecfd8246a74620F4c0b5793bc312948352d8d002)
+ , NZ (F 0x34bffba954ec724b8e11aa9c7fc273e6582cdb532e4bfa7de98736dbedfcbaa958df29acd10df20a8a0f46746242a0bd0a316384eea5b9450efa104a5f2ef070f8bdfab4c55fa2f) (F 0x4a8d667bbc62397a8cba0c595123eb211c2f9830693ec16f86a10436ab4717e3a6837f28e3a13b4b0f88c89529998a563a66ab507894b7cc9649014f31576d31b4a798f698ddFc)
+ , NZ (F 0x76ed06107c5731d0169900ae0261adee659cfcf0aa0c606b5825666271526285784241a11986e63df5b96134225b08ecf9c8c92c81d2b7b4e149aae8fc2bb94e7ded71aea9c3abb) (F 0x1a06e445f53e801e198df38863f061db929c2624e216c64afc4317fb33b41736553a82814ae177458eb35d22f8652ea04fb777cae7b7ff08118747af2466d7706cddbf33a803047)
+ , NZ (F 0x14288a8945e60ee5dfcfaad48ee25a980b854636923ba501dfac6b6320e7a3156a1da66ff9f0d73cf6d4739d4b0f9738901dc7f98fb351e5146c0b29b26e62be22a95615727f042) (F 0x22a3992f79f325f56d3dfda922ffc1ee32183f3cad23935bc9205a25178522f819146ae1ab7b196fbdc03b86a131217c0a9f9950a3f4a69d4bca3ef1571676087985f94d115531d)
+ , NZ (F 0x21612a698b6e22b482b6295ed092730224f1bda99abff69185e23e60e6c47ac5315bd50926163575308c0e613c6af01f3b0b2a68eFfae2b9a0752fc3ea05a9efb197b5a8fddaf5) (F 0x5025f9b2f5462971aaca2d1d4e8fc34c48f32f4cebb1a1cc954046ed5501594b38380131b1244891fb3ce1df7c4190b70d1b330e9a96de3975111457aa94e4755f463c0963502cd)
+ , NZ (F 0x2de65eddcdc92e1eef5a98428b6Fad1129837d8f1004cd36e7141b8fbb8d8cccb6a747f954ec08943fb6d193421c4ff59ba55ded8713109b481eac96ff6b76f1512c1eaf888ddb) (F 0x5332b975baeb568e577e2d330565b4da79cbc021ad6798b4a51571bc4b4259072b208a0d82074bf4deed0624ec0124340472b6efd1341e0d9d909f32937d0c6f20fa154a2b2607f)
+ , NZ (F 0x423a95a8853c492a486a50433b45fb38b15d7ad979ca0dc22ce70b6ba8ddefb849160629360f3eca5564c5720a07928b997ff886a88c530b740bb14fb35842f4995024dad98fabc) (F 0x1382c0a9d0d7ec7e20812a07d013c5213ef0fdc9F04064c41669fa70d322f31e0213faabce49b0143da9c4ebddc5143fafaf9b68af8f1bf3e4a6f3ae6cd8f618a88e5476a01696)
+ , NZ (F 0x096b771794fd12eebd59769361a2645ac12ed63340f2b2c637b0181399dFacde2008961a41932e17f2a6cc2db260a2fbd71ecabd4defc8b1e725969406ce7b5a3cdd407662b272) (F 0x531e528b428e4ba8246b270510fb3eb0d3c843d3d3d1015a843ba9174c70f0bf1a6d4bece843d06ee6a24222c733c96240b01455f8878bc0fdb5e52777c599e50566f101c348496)
+ , NZ (F 0x2bdcb26dcf6307f2bf265db10a34bd4c02392dc7eed1f2793b0081ca3e17d4602e3f6af9a7ab24a42a6d483e67cc2f8bc13726051760751719eb795586356104fc2067bc882b818) (F 0x0816de43570e277e8e3c3dff2d91d8fd727059023c920e0e67d393102d42aa0946b45abd236914a0e7acf8497f5d41f927429c41f1368dfd3d20882d70dc9303446ecf08b8799dd)
+ , NZ (F 0x0b51bb043b5b03a011a49ca7a4c31324b9a4c4eca9da29edeea192780b120b6ad2b8f92f64f0a6092eba2336ba13574328597ffbb956eb4a4ae4d48805d2b311d73dfce31fc0F7) (F 0x177d4cf5650a0a5252990177d55147b70d6ad06f409e7450c62dc640b5e9986e97cb7d5faeec6693ff6fcdc859a94562e39b5a971dd5af05de05fc0b69b8fa8f200698588492e78)
+ , NZ (F 0x3307ac0b96ce2b59da5770706f8dd26df62574b08728f2a819dffd67603fdf0a3f4263609c54a8e86e9964437e8ae2c6195448507d362c0d91805f2d463c6661272428d47803368) (F 0x2d794fd54f5022531a5f7ef40e62de326033fc05de9cfd2b5d0e2edb9a4c26b111c5f330e7e8864c37246eced96160b5965ddabdeca645ec891eeaad865d10f7ab5e1b3cc61a127)
+ , NZ (F 0x66a8950f33e519961599740654736770a2ab14dade2dd1d5c99bd0c82279ef2f111d179d74921f95f20729bf95c84d0aa9d6dd7f106b5add2b2af2f5d96c31fc2ba81a786ced73b) (F 0x4311afda6a5ed05d543cc3c1757010bea900c5e0534373c52f3451a55624bbb66aaffa4fc8852f5992c8fb80bF808a79cf7fcea70f58db7fb8f1d42c130ec091016427adae988d)
+ , NZ (F 0x56368419397aa0f0b380ea041d657aaca6da8115bba015e8586212337ad5b6bfbef3648070f668450d8ed294e4e0c59d9b9f3c9d11f3dee11b05ae3d301422966ce649e85f1d974) (F 0x4203cc2c0ac78c6e35a4311cf55caaa01491909aa8408c73df68172392f99678dc4c110e46e9e04f2804d81ee9f092716e39e52a91e39ff716698ba43b768482a4125ea131b93a7)
+ , NZ (F 0x307b41830aeb742cad760b5a1410f32cccccd90c2fbbba150b8ebce1f2e17844c98b2f8e00dd5fcb342c31f303b41c639e8a7cc7a0805960a4632d6f73f26b053e70672b5e448a9) (F 0x32a40f4f7af8c378bf521959e9f226604d6649f1103dd1eb53235714b7b4b0d6f5573584107367b8593233da3330537d5bc051413c0be25edcfd6da192f0f20b2456709a74a2bb2)
+ , NZ (F 0x004fbae84415e240af6831d353Ff738d5757c03f1125d96bfF3af48b135d052d2c9d3c83307a49677bd311f11dabb9b20c3dba153d7bdd5e7464159f5814528be586a22d1dc9b) (F 0x3edf41bd701e3608a7c2ee0b197d3916ea59f6aa132cb838e5829bf962621fda2d450b3e5d882d3c643b32a869f233869030a5c7300194215a5702c07c979e29d3a370f8338314a)
+ , NZ (F 0x7a8097c0b70bca06b148a0618a330b0bdd1fab96ac74fdfbcabbd614f821485ee2d35642bdcff82d5e2ebf1636cf5865dd44e2c1c6433cee0e5e1260e9d4de088924749cf0629ba) (F 0x36e063798b6f3fa0b5533b77decfbea3da055f8ec487bdae7404b2e416ff7eae6de0f009ea9dd91105104e962a228672d8466F242328f6b01c2ca8b2dbdacea0f55990d045c5a2)
+ , NZ (F 0x71422ad9e928fd6fc8dc63008596b31cecff8c31704b94389bf619a47bc7e43587a9c5b0217356b5d42727e2fc2ccf796551e3c58ced662c53cf3166ea992a3a99543cf48b355cc) (F 0x054bF735a821dc3444745a45c32ab8a7ec6498937c144417808919cc0a37fa104f246d0f472ac9e8ac13d3a7ea00b6c45cb129ff872405e6c03dc7632ab9235290163eF23ee40)
+ , NZ (F 0x166c562644ec16dfa23b69d2e17c2ed11724ac4443e285609cd41e70bdac81fa0c2b2755fcbb6ed1d8a67d05bc102F88dcbec844d2f73f1e8714ebd591e7b625aa6923f75f5b7c) (F 0x13795d52db23668d4928ec3637a9db80197da8204c852d6cdea230315ea643e2eF7dda28a6052cfbce122b827ad06d8f3c09882320f7f488c5f9634c3a232f149101fabc588d16)
+ , NZ (F 0x02c84ce75541db248c1ee7cd536c41093225ed6c5ee686399b8d8867df3e9e00bbfb9d102465b319ba1e1debd56b0901757fb91f8543a2c84b964c58194dc7f71160ecdd7800587) (F 0x70f4a2683e7bf861a685abd75768Fd0a90cab72016bdda7934d0e141623be801ee9c841eaac9479becbfaed609e4d5ea9350744cc0f75f89346d70ff5b0e7b318f897c4c5d9a40)
+ , NZ (F 0x1f39bc9579fFcc238b8a3127d8c58d12dc91c300667ef938c8480ae0618fdaa94700e20c3c6f1b926cf76d8d2bd13a8100e181149a5455aae17001b87c4886c492ee720e6b1f7c) (F 0x495d96dd2f60035b10a3a797cd6dcc4c0c26181fc6f142100f61fab4e6555db93a43c7d935e373a1a2f79c09b7a25049e7a9def9ca2e09e6c2a3637a63d732807428d1abffaf027)
+ , NZ (F 0x07472b11e2db3d7e7a0c908f3892b677a1ff4e9f811e84ef989947d6405b26510aaa6d3fc13f69da8f515beef204f70d66636ec245134a835f3c514d3a7997d909cbe113b1de1f5) (F 0x535974847c45ec235da59b2e30325e8fd4dc376f6a6172c6ed3e83cbbb9f01a5df9048f5c302057dec7f8a3b41a6e564e3628bad4a9b93f4a90a5ab49f5db186c110585899f0216)
+ , NZ (F 0x72dc171533b94844a6598d24c9ff1a93f19c026ee66f5018f52fF5d646b8a3a66767684ce67e2eeac816032e96c5dd1ac563Fa4046e71b00dc054049acc05d903c64e800e9bea) (F 0x530705a75986d869d3184178a1fc3f154261f02e44527f1b5f65836e768e150a0d0ec5c0c97186a62d0ecbb32880524c44f638e9c42fb6297ec2b0f8f80d72b1940a5Fa3f98dda)
+ , NZ (F 0x4e8c1f006d26773193a6b0f4b590f8ac11ad6e0ce38c1676e1da67fb1e012dcc859a42570ce8df738c9cce3691e64f0e93e661abc5b2752df6c29b4af66c4e55006141ecFf3bd7) (F 0x321545cded7f3ed31aaF0e5e47a1c62635ae4b91882d17c24977ff52d189ea5e5da045e429b945d2ed9619a1b5ec716d8dcf0e7f603940fb99c07956a95a783db6b2b85742941f)
+ , NZ (F 0x2b2ab0cb39273a796eb044eef41fF1f8fbf986f31273a1f777cd66e90e2c8c984a79b3a8246f030f03d713d06844da593a83d5d44b6a950e809f498c60e42e34575938b2909c51) (F 0x7babe04F7ac6c52f6b4443a841089de59acc3d7ca835fb333536312f527f516d8faf98ed11a58fa6154f306d711502364dffFf307c55eab1f14bec47ae949481a9cc3d0871d17)
+ , NZ (F 0x22c60409b7f70560f42f993e92f9d6bfde05d6a421715e7941c46f47f0293787bf6b7e38847e85b840e7fbe976e6d46df7dc147751b1a24046c64239fcf136ea9924fc8d019e0ea) (F 0x2e1290016802f2310928fc6f9c288c10ade6008c1b2cf2552bb381a41401c1b29af5071d990475a285649bd6549b366755a098d8cf3125c14cfdcc72515d9da5b868528e26173db)
+ , NZ (F 0x695655b6c673cc9077a2a41cf6c5e2c29d2979d8f983f0e867d209aeed4369d0a457300414e4f150520541c59b85d6dcad0cc554617a5e9f91b3e8a755bd466c15d7e5016dc5196) (F 0x70e0bf9e36b565274ecbd57d28c67d375ebd6408c99be237345e7820e62e1ea41c24aacc50106eed89b86f47130fd69a8f07caddac547a718adceae6a6b9a3cc923a868ff7471d1)
+ , NZ (F 0x5b8ddba46b9f82728633e6d97be442a39100257a7325d4009bF83e0ea215537bfbedf5cfab0a607c5b556e217cd199a5cb3f189af67f1284f8555f70c14ce1f937300f88136625) (F 0x20d84fc6cc1e97b3e29a109a955F879d54a2b8b8f2c3f7f96aa0e53f36085bb90d0817db03fb22c9029490dda850b0F739a16b0d7545a68a9acf1bb80ecdde410c50a87e54f33)
+ , NZ (F 0x6f250f2933db34d7a9db7ec3b803a679cdeecd9d36fb94d05ea8be33543830aabe9e0d2aed8244e32fcf7dbdfd8283562dc6cd5fb183905f5ffb306548f3ca9a90c486a2f5f3f79) (F 0x14403c1e7035af9ddf373bc57c1f4399e1d7e85b7b535d9f5d98d8d50f0bc8a7d018c29a50c6c96a1bc4dee66b36031e29090da9394b683d7e079349d2d9a3ac9e9a3d4bbdd0648)
+ , NZ (F 0x3cd4143b60d10e668c646cf61c44209d435d78054397cd03ab34a258d9e6b8c82b02a2ff8d837a2c33ec8604a9b5c9F36a4d463de1b4143cb580c8431e5fc9f9b50f5e60F8dea) (F 0x57eb586f79e4b7c07207897ca887cc40f599ba9005f0a27fb20e6dc51abda46719b602a92ba7baf168d02552291232ad0cbf4abe67d54f84c90b47fad1dbdf5c180524f9d2e5314)
+ , NZ (F 0x1b0e5433b791ea88bb643ada4b305b6697bc054c53c7f693870db9cd61f4634ab02878c0755a2482b2ca338dd6809a78f29d1c3b6a58217cbf93951065bcb64b2f5cbaa0c94a7c9) (F 0x0db2b12e0f13009805e8f4def5df491fa5fb08347c019f01649369993d6e1e6b881b9af9faf14f5c01d49cc5de9732e166e59c060b4cc2731ddb8e0367f985d8dae12F8f376005)
+ , NZ (F 0x3645b20464802111e8cb37adacb1c3b0c90502f58f1e602ced3afb08b984aed7c6adaa0a952448838d1e1ed3ef48285c59422353e77320c547aacfb202f24240a196d63eb006ef6) (F 0x455dcaac44388e02efa4a72d052412dbcf677a159b7c96a9750def2d4114745fbbf7f6354c9359dde6aecd108c0e41b9e907d9b04a8c321f228b2caaa3c7bc2a8a922cF177cbee)
+ , NZ (F 0x433a96105c2881bc8908a7d6c3755b47bbc34eec65dc400a8a6dc8e97d1dc23733c0d08718d2632761da92b15b24a94ede97117e763ea565237689dee6afa61b575e875aa953b8e) (F 0x72b6097b4ac162ff1316dda2bf576211bcc78b56364560b4d50ead7468697c8a1d8b398044185e07de29aa74076c24b93f04786dd94bbF92f616f4369d17d6a0f8cdd52ff69b0e)
+ , NZ (F 0x47173ccc97b8625c1339d5b3e78ac2b966b353e08f1626ef470f729943fa156a2d750e077b531c70fce30450b5aba6bb9bbd4530cc852cbdd316e3f1498eeedc47dadaf4c83dc75) (F 0x669d383bcddfc0b1af6503d01Fad1ca05c30cfd749873b66ce0c19c10e7017eb24ed441c9dcada36080e02edd2174f0c75b7d8559acd289a2bbaf01583817b83e77297ad908de4)
+ , NZ (F 0x7fc2032e880fdb1adcf7ae0f07cfdb667aa6fce61254e236f8761d1f8e3581b028b2218f37df3a516cfdac6e1db748f167fb4f791a13d45c7b3caa32b236734032c032ecbb17b62) (F 0x39ce2ca045d4db6086fb45d570eb2dfcd39ef2b06f2fdcec796a01c70af7c5897c0a12b76be6de06e2a19caf0de002a42aeb036d632edc8600d8680F3d28aea3d91a3d11d5b5bf)
+ , NZ (F 0x6e467b84d3ad0e0ca811a0a84cbfa82840b9f5bf3b99b1aa53ad99503661eecd02996d50be5fd813ffc620F44acbaa3f8c11Fa807dea8c53ee8fb1d267856224abb409fced51c) (F 0x004b780680475771a7dad0c56d8550230491538da83e471db9dc22b844fbb38c64967bc72ade3f01e2e522bd20b7b96b35f380f0f00da5869774df9a3b735e4f481e9970121dc21)
+ , NZ (F 0x2c00fc16ce3cd1d0ab4a4580d282bdb5bb70c7b4ab42562484a0541ad40a219ed6cf19c0426ff1fbe81ec1b42926d718062351aa10f20ef499fbf37f836469faaad173bb93eabb6) (F 0x6fc855eb5befa5932993671361e9ef8de0fae68c821a6e08b688d81a29fd0eb1ca83b602cc79de0abd2fddc998794249f48d26a67dbe970ab3ad7d5a373Fe5a14ea6539a3ba331)
+ , NZ (F 0x13094beb67bfa3186a501046196d6704607e475412e914eeee2863b8057590481b08d7a1265f30f66b3c6e8c309d428eb2d645b6432e415db7ed0eda947Fa8f82e05d05a656861) (F 0x33faab6ed66c267f497703d220af9b1038548a9cdfb46ecabef62e2df279bf456f934987c68b3b51e5c679d4a0506e9dd9a5e6a3a551420b1c26229ec93c4c0676d7219b6262666)
+ , NZ (F 0x5387f3c05734dc50a4fbbac8d0d9ee86abdc044dae90d7ae40c4348279a36ccb31ba2cd72448d66b3c2fa06a468e990660e1802d79665a248caa2fa4bbb066574b021ab76fbd8ff) (F 0x282d5de7b07d73bce212de0b9d01d9a72804363d426c6adc4033eb2b9b8d0a1169268e59f2949838f8298a09d8dc1721235d18d5168c1f36eb8b2c9aa9bef156b3e63b3bbd52a5e)
+ , NZ (F 0x30d88ae0871b383808ed8c955959f669674a9bc226b701d25de356a089ad6b5011a87091de2ce56d41fc87cbb782b8ef8b23d2087da1ac80e5e7730949045c4a19832f916e17228) (F 0x4e73961de2b2679b8c5dcd9642fd79af9ae2bc51333864d1c8f9465aa96f89796b62bc570188e004e3446e8c5a477b5ef44917c9cdebacbdcb6b9a6caa6a1e67a475b84e087e8f9)
+ , NZ (F 0x7a76eff48398f10670e084e039d2c0d6785ecfb0e5095d786936f4f720d0de06e0d3b8445b2a1e68206b6c4becdd8af295d79360b59acf8d83aa2e653117085c498534bfd2b55a7) (F 0x527F74d6be6d27574ea392518657aad2cb431cab555e20b0c7391c6261f68a3e697946fb0a30d29c663cc5606398b391e96f2e000f1c893565Fa3f3a56fb1228191e0e44814e6)
+ , NZ (F 0x11af2233e9141df73290ad7c87b8883e588ea9233b9bd78c985b2480344e2b425497e0d0c1c070e852a6e7ad726291f76d43035a804e19437d628113b04220764b5d3657edb6528) (F 0x264f08ee0b43bf5de7ca26a606069fc45ebcd79fc4dbc3ddcf46b7e8e675b534a44277b654a5f04b00beab2eb13d1e3cbd72ca81bf2d307526adc52f581490fb1fd030c202b10ba)
+ , NZ (F 0x1331a347d20fd3146c97610f1535f38b8dc6d7bb35e7c19Fc4800c0cd34c6d3cc065649a26a0e31017ff74e3c806363da1654f8c8d52f286687e592a9055aa5b91cd4159592120) (F 0x58325ca11e994F48172f7eaf88498c37c006b9f80e7159bd82b30e17805597c135ea13093e90c938830ef90de1a662e7d87d97c63569704e5a45b56b23b758bff0e7553f78d64c)
+ , NZ (F 0x7685940c33e76abc13def09b47a16d7da7cd281621567bad8d78987140024644ef6e1fb8c66f4749033887b7844560da0aad83c34d924e8Fb3a7f505ea994ed1d36df6e7138d4c) (F 0x2860c2f02a0f259696c0dffa69fcb215d1c0107285c72c8dbca67ab4bc4152c0b846cdceed81b5e0cebe82ac5659c2c8e90c96c4456F128a7d823291da7e4ec258bc09c95e849a)
+ , NZ (F 0x21f35fb874abe85b36ced75614dd3d96c36bfffce048af46c3c5099e73c13350dccff78d9ff013ccb71471267e609ffab655f4b7945275c479f22234d86cf7659073865c20bdf41) (F 0x116353735ea9a24a54dfff3007fd6bac0717fc74d1c030c5d6d1fcda9f3970355a793084034f94a16d9f31c310820a1c4417f8ae078bb9be017b7e90bd13abd0c0c7338933202a5)
+ , NZ (F 0x21a12705c24f16637f698b37c5aae0a1de9e88624a3785e987cad86cbcf7a21f2e50ec1b64059cbc343f73773d7e3b56e907f5fad26a409d5d4d059bfc4b242ff256dfa385f80ed) (F 0x340bbab94c6a8f3cbdd2c2ee98ed15b79c28e039eaaa677fd15a4ceb44ef200b281fc4ff2e39e35e5f7a7d02d616bb5973c8e32d8fa553ed1886f6409e588ea6b500f526b6da30a)
+ , NZ (F 0x141771444ed47f818a2926821f79F8ccc11a35e4e9191a8e2f45be2ad867d3b405d1533639297ab3bef2584e2eF577bde1f69d0d066d82365128f3a650609322908254f578dbf) (F 0x4b4009f7c7da66c2caf4459d1ad667051db158c17b7a932326681ac878e4Fcd3e968e545606dbe1c59ec8e655b060850e17b180248bc63c640ad7e3ef1805a18662ccc3716ad7b)
+ , NZ (F 0x59d917113b0ef334b1130c40221b5b0243d81e296927d7Fd261b13b472a697087caee2554a68599f437e126f71bfb1120140cc4c98070ce04c0e7a4dea17dcd33d251578d1edef) (F 0x1222665e1e3b84ce6dc4af88e1e5670dde191a9790b669b574a358d3c122182989a051bee0b7d27d2aaacabeb94dd1c16310450c7d2f46c67d0739042f70a28e85f1cd63d989d54)
+ , NZ (F 0x5f4b8bff19e055a2d6e31cf6d02c7f51227a49df4c1d7ec0a47ce909c7ea7dd2bf0d8eef88da5ef5c0bebed328ac7cb497796520a5496c445bb24246f6b9c000cf4fdc507945621) (F 0x332a37b0f24dc00bfde9beb5498abf895051b12dda1b490028a1659f791d8e3a7babd3a36fcdded0cfff6a241c9018dbd843452b4d11fd8a8efF17853bb4bcd00139c2c6ab674f)
+ , NZ (F 0x3276c232473944daae96263b71b98fd9c78c5f5fd570e2982e4Fa064f320c17881F8ce943f5d158e1bd28a76Fcf345cdca9374d9436b8e6bb9e47e72d048005c361f45435b53) (F 0x6ddc54de7a36ec861679d60cb33cb34c71d53f975214f3c81be881e426c4d367abf21f37bd182b99a5d49e383b490bf34863c3f2de6493c8403dce446e2750251ca5c2d227220e4)
+ , NZ (F 0x22882ee6f24b01e11a1039a3b4e35f406580f1d79e5f3d777f5aec8974c11cb89f8fb6bd9eaca05e4d847fa59497b1dd60398c891e2e550c5137b6282ed7566bf77a879bd293c5c) (F 0x3bb7d76aae5206e279a7d00331e69121f856f2d59821bac10b04f50248231ce2a24047cc6c5c6253defc55052174164a2cf5a882581f0a5a5f3ce228171fa9b81df93a856cf1474)
+ , NZ (F 0x4e3b01b254428121de747f326f704e4dc93f4dd35b0eb553f114f69df5387a5b656a8272c01cd247a80f8b6eb22377f6c3a6eec402d9e0902f0bdb9fbfdc972ad542ec3759e42e4) (F 0x30360a49c21bc3e0eef159556e5ed558e75ac3e3066ca48236af186577008dc951ca70d66F4116e4996f69a8a4178c1757fb61d82aeef89e5fc180c2a1e4ceFd2794e129916ed)
+ , NZ (F 0x42bcc5213dff1a14c2f13e7e7e5ceda55f8cbacc1c261040031f305bca5039d7b5c9a4816be9fd1a861290491f3b99da1adc9c8d8636ea7a9ea679Fd4275a0d637298e8748ea7c) (F 0x055954c005a2b9dbefd9be23bcf25a1764109e3f35eb3620f04e63f5af2fd725e1bcd0b1000015f6729c486f5aae4e9c45442db990d7f81e401e83f3d674f0421312bF04784c92)
+ , NZ (F 0x5981b63db07402d5ff98b6dcd9f5d83b35a7b5d98425083a3bd322043e8b06d3836dada5c056ca7f7dc724ac9b71d51df4e38b3a61eaf661aaa1008b24940688b493ff912699ecb) (F 0x3a5d3dfd4a16b30bcec236324c5a4563835b38b9f10575c1e61ae59295381b80e880938bf255d2a7b91897699ed0158243709375c7e36440bf88f1181b63f5c459F1e7d12ad4d9)
+ , NZ (F 0x41864ca2748aa8bf01b1fa490125b6bcabb29a8a8a421954c3a16c39a8288222674aba07c1d1e930d59bc635d9fcf687a3a4d09752b98e1caf6c4632e23114ec51e919b869a422d) (F 0x4d79a3cf06b357062f07be0daafdfbf275fd232509497988fbcda5c1232a9dbb45dbac2e4ec6f6193c15388906d50fa4b55f2f999e54c016a5c16871b9e237a6b818dd4e67e56b2)
+ , NZ (F 0x7859676d21778f0433ad95bfcab37a6e74cb49bf4c99d64c0fcb7d2f2cb90f4f85f4d26b5c4865d384c480f0fc816a9cea4bb6ee6050c6159f1440645875f111671b0a629caf2de) (F 0x5997e51c47591518dcc4587bedc8909e415813a430e8a8068fd38133dc574a07e2ed691d1334815d3f84e6885bd54b72fca97318282196f8339ebbaf4e37040362ff1db440c8932)
+ , NZ (F 0x0cc135560a3afbd50f6c1402f6b17c8c3ab47c17ab167aa353d0b36d3e114da6963c0369fd0b22b389d8bf3e5e629b7596fa7fb502ef753bcbee3451eb7709edd438adece2b1163) (F 0x706e331ea37f0e68240b814b5f523bd58d34965a2499db8700b9e5e8ad07d09d6812ae438478c972fcf1554f59538ed5bf20d12003da47f966c0fd1f02eef8ffd5503194a687ff8)
+ , NZ (F 0x4bebb8afd1e892eb5d6cd21b2627a11e4d071ba21ae12f64c95672492b533f2a9898a8a6a7b06ecdf02d97a4cF9f8977b171c565a720d9dc67e7bb0f7c1bd1f1b1bf35d9bbfcbe) (F 0x66fa35f402572352592461c7de3c8daadbabaea5bda8ab1241e9c98c2028a07ee7f67010338ff3e6f80631de6f8a690606beb6619f7cb57e0758bcbd47ae26203501f75a422f877)
+ , NZ (F 0x3318f0104462d74daacfb3ef465aa29db08af15e571e2b0d635b4e4e2947304ead67acb8fc5fdccFe7aa817fb6f60463c5612bbfa872a3e93369db9cb9354d82eeec68359e8240) (F 0x6763a6269eb0def9dffc3ecca9c037331f67c32396406fbbbea3ad80b21a2c77f42e6e7f362c08354bc71a4dc6d64f9081bbb27a45c49c6940005496b8909b041e4d9f20513056b)
+ , NZ (F 0x7b0a9fc068b987b555b57213eb1f025b301c5511b546f89a367c79153cea68899c3faf0bf2816c917eb66640df588934c7740a7b2e6dd833d8e7f15fabeffc7de6d7010599f7086) (F 0x5706ff1ad37a1a2b512b77c0bde933d1fd2c628c9016b6949255584aF7e80a520c389348ba21ac67d709f899741764d3b3b32a7aed9755c3a7cfd5bcf864d8cc60e19e3a64467c)
+ , NZ (F 0x38Fbe6b1f7360cfd5ba2ae30386e50dc809260e9f6a0e985a536b4ab66a0f29efc27947960F7d491c84e6068cd948d5d46ffb93396099a9c555607a41e5798f635f5b8b269ceb) (F 0x5988659bea6260bd71d5f0ba745390faf8060d36753c6b206b4fdF9c87f7139b1971bee47bbdae3be11aa8e13e7ba7132dbeda26be27947ba78baefc2e442b238c8f87aee7121b)
+ , NZ (F 0x126976ea031dcd773963c9dd8d9eb4b65b675806ad55577ebbacddb35682ab6e5aa5c063306b109a924d8ad5b1eec59d5f166958f0c6bd5c4e77baf2fbc382c171a77c759b9a020) (F 0x6391c3a5d6e8bea02e0057b495e58510a37baf944887d4ae392e49ce7Fe1b0e2a6a23191be32b314f6f96f8181ab29e87db7052e1c8b1681bb444c9743b14201c93975f76dd29f)
+ , NZ (F 0x435ed91459b56745ae6b0e573b1f95ec086eb438a0fd6a4ed047cf8f23f5c122d42771c52600b8879ae2ea2f5ca51585933b2cd8be388d806ae8997765c39a4adb48da5cf18b5f1) (F 0x00527ca4895bd9ee3534bdb83403d8ef2038bd4b591bda3490e517f5ccc268eb20c20108d4bc050c9410480ec1c36e8ae9d144b48b35c356eee0f044b9853db7338a3c7fa355842)
+ , NZ (F 0x52106e19f5dfd0109a4da13Fcee98ae02523f5Fef65bbb4386ffaa402e0ae18234c02f76c499b5fc6ace3df8fa985b7b87b76f8eb3e9426e121948eedae276412e8b5a8c1ee89) (F 0x768a34673ef75eede1cdb5277100c012f03281db7c927d7acace5049755b1ccdcdb249667291731c4725a43c390a9e891b690db63328e0ed6815ecc6485ef5b1bb610b2dcd7bd77)
+ , NZ (F 0x2bd7cc3894ab29ebf349e5b3313a6bbc000cf279b3045d25b7f047df2be3a33d0d537a86baa59bc774fa8aaa90dfb07897cdeb24cd1e781810e09dd3ff1b14e940525d2b36e4088) (F 0x6a7cda0042e97af02b56302cff22a5e42645fa9c4b51ef1cd57adcF5b248450c562e17cefd4ab93da38bc1cdf5baf9166e002d8bdaac1037ff0049c62adba3c7c0a3d20e78933b)
+ , NZ (F 0x216ad381dfba4e599030f6cf2d2a5525d18b99b8f39f950f11905697f76edd43de389ec20418559f9d24927f3fdb04011658ac3098fa2dfa843c01ccf3ecc0378b580d9f8a42be5) (F 0x04616957a14bc983c5ce7068cb2b19d5a136eaf1f24536ce9306ac64760f5fF448772c1Fedc0613ae7fb881eb6b4b6a9a02df34614b504d8af55901dd3945074944765539fb45)
+ , NZ (F 0x5921026f870e2bb470541ec0f0e2F3426f3d5d2133609c8d29bb59934d45fF04f3cb026b5ab359f3a61bdb19c5e87ba49ad4847a6d30b2c7ef091628050137fdebdd251691c08) (F 0x11ba3a1c95d7028d343aaaa3651ad3186b33b89ee972006Fc78dcFa2f125c0454b1ec71a210a921d0f03a739F29d7e0311d5452e1d5f380cc7b4e2926b129269bb1ff70ca3c4)
+ , NZ (F 0x20f5265959b03c5da3a2d80726c0367db06208ce5ed5ea444762dcb26bab90a938420a979985a9413cacc3f19e6de46d9c6e909a9a37c90e40ea419c6b90ea7dceb67461e64cb87) (F 0x36aeac023eb19382b8e837d96f1474dfa7f0b52ae777f648be1F4f2b7792d04167808c156f45ca132f4eda0d63a3c9c65b06c341cc34c5281431b67c8f540174f238eaee937956)
+ , NZ (F 0x7848c70180a8017f62F4d9a2c34ecd7843f0bbef283aed65a029bc2c3e14ab82178e749f108e48598a88821924c342b554a0b8813dc25aa8d17edd3cb9af8d4d3f92d61f3dc434) (F 0x5718cd37f25f3fa1ed482912ece1ca153866c97b8882a972f59fd00ebbca870c8db275c1fdd5fdbec7121db03538d32984c10fa048a9ff3611cfb73d59dd53db58e096e3d407041)
+ , NZ (F 0x18186a692c6b18205101babc48ea94d60b9b44a3ac3dce11ab0f1801fbcf2300dfc17db507bb83d17d99d1b936f5e54ed3edd9b253681d6d7969d6bbb12e72406516f8840d3be35) (F 0x490569f61d6775830e23a60eedce9f7ee29729cdf2785102c01ee479f150d9f6c20a1345733265c795eb7b1a162fdc67187bc22a67d0a34e5b611903863196be9936d781ddf1ffb)
+ , NZ (F 0x479c7a1e9cdf562ec140c838238126acfcfcbdd42c20eb1992697cf1f447d8eb65222e2c966e5a31b823b07cda0f0bc87336e55697ffa5927f941d9956bd14343660b5dbcc55b29) (F 0x2fa891b03b5507b56c8887703a89a9fdb1a402b0de00aa64a485d5712fb11f3d89e0d5be0815fdd4745bf131ec774484a139b2c6ed559d6f96a16b65b648f506bfa5c3ef637f81d)
+ , NZ (F 0x05d9d50306a23802da3445b35d989c12ffFb07e2152551e0F9e42f16d262b476a2264fcc4221cddec3154e3c21661a6e1d4b4fc3698e8f7b41a4b467ac0999d8c985b1a88a8b7) (F 0x7b8012521fcd276e08580a42d9d72bd68f571c3d646fa1a9a84a85ac400b49becaa9daecf8f83da8da3a615b00247ef7e0611e687aa7ff9bb28c30d6946709633ee87995e957038)
+ , NZ (F 0x3da780363e1ea076167770a07ae290cb6a75b8f0144f8a0bdc7d9de829a62fa37c72e14c232ab0d21b3ce15f72a2dfba70bf79e32029bc879a0e0fb0824b8f5cec109a94c309e91) (F 0x01e23dc5d74cde68fde271659e75405d4bc2d23656edfc113d03091889847e8cfb687b83f83f42c7bf36758763497c686a32946512f7f4caf3803b091b1b086aef068422af06adc)
+ , NZ (F 0x34b3c4dff18a007cb322a08cc7546d9c2154427ad3b22c7803b28fc645277e1651b2065648430Fb49c7f6406145cFdc8bc15fc9706cc3172037351201d8cbd2b47dee88c24c5f) (F 0x6ced668a920e824b76046255f2124ac16501bbf8dbb94319bd905561a6b4993afc0f2660865c819faf6e2F2f9b1ed2521c6b532ace05da1450e9dc4875ac3746ac39b3703449d7)
+ , NZ (F 0x76bb98f5fF0e31520f5c0332ba64d5d05062b535d6f1a8bb9957d81344e304515b05f706e558053ea47035b8dc74ed9edeb7c78907add1ff553c043b6bb37f70ee6dc8f2c9c9b3) (F 0x3536c1581c67473d59478188091eb25527a8e45ec52a4fffbb781b2dc8b8db4df17712732ee8f65daa1a1bc6c61a9433f00d5bd6e113e1f4ffbdf2beaadbb29eb80a57f4820f33c)
+ , NZ (F 0x283b6a2f66e232eb4101d89acf4a8484d6aeebb69b1389ed34269241c8064b9a35d403da1661ca59bf9f3383c9f51ca501dc9d8dd713dca9db841ea8fd17079c188d4cba895a495) (F 0x3b94a045ba77ba0ca9ee89301111c324f9ca84716ce4bec57f2cbb52ffc91a7e236b64e5612c50413365f80f508c96c012a823e8a8b8586b5cc60b8a5f8fbc00df8c1857422e7d0)
+ , NZ (F 0x1100a16d490883b59ac9571b37e10e6ffbc7347526f72d34f801d4c4ed89cc18c97de7448d28c61e26486590474ecd7d9ab2c43e9555ca1ccddf99c14dd7931843d3aa930d2126d) (F 0x015f9869bf42b7cd929935e0a33ad63245c65e525b4b3204ddd453a385fc663addc8a87570a1142ca7080604c9177e239802b5107005ba9a200e0ab50d7329aFb7f1f709035c38)
+ , NZ (F 0x33940d337b46f2af118e37cda55251b5f3710f7f97d66ea006e94d17db52c23d6a7d53c574f062ce3b96305110e7a2d5f60949323f77c1837ff7266557b49bbd8ecbb3128aa668e) (F 0x140d30d3eb77b2fc15ee889f914d8ef198d66aff6603c748f846421c72e0f5727993274d7f79913dd1968f80cb3e364c0fb3bc7b09368e9Fec7f4f4d749116632e2644b22af803)
+ , NZ (F 0x40b7ebFcfbe201208c25aba2afda14e0ad5b93b92b34852eaaa680631c9f8b785250ac55fc80ffd83b44723bc8818c52f2426179257c800ce6537cdd68727aadfd20f56e10b5d8) (F 0x4b5dc285066613382e48e61fd4cd1087a16763c4bb3aa70a522c298c2c03390cbd73895678c272c928a34e46ba3b054e624fd808302688728b9e493b4fc6a96f678cb84d5293758)
+ , NZ (F 0x422176ddeba263b92904f36770b4dd0036ef3d54b49ba70c246cd6e9f4ff0cb5d5c97e68d8effd9fa40ebce9253d29cd66722e4c7a4f1bb39a5f423889f4ac3bf2ce91e28827d30) (F 0x630ec81648932cddc8760245962f6a529b9f9601bd55286f01cf570c34a04b8de8615140f93b2bf557f533cbc206a0016e79ab84c09bda15b2cd863c06628a313be9b98e5c21685)
+ , NZ (F 0x2659f6319c6c18df52fff0fb2221d71a315f860b4404e3d087e20a12205e23f4a37d24043366f6f40c4b86ec4bffb96a3338c9a4d74ff9e0044f3a8dcd3e0a14e3f2b5c015d08d0) (F 0x751fdb4b4f4a71fbff7539cc50fbe2f1885c1d8621236e150a5d0059bc06673cf22ee68b9ea559b35a97e2100d7a9c75d7998cacbedabb1eed5e583e5faa107656da4617fcc0308)
+ , NZ (F 0x223c4ba033a515bc0bc11529983cb5e33ed5fc2099778d4ac9f27e8ef9da2aec43440ab4d6e309f9b7cf11858f699af3345F3Fb53cecc434f74747389297b61eb361f5a3ed379) (F 0x766e4c903f8f0c8d65ce27327d8da9a199d60d845082a2581714de3a390c711f200f1f3afc08e7de4f7100b353e5436af5173c730f2425db74773de44dedb46a243ed832576bbc2)
+ , NZ (F 0x7e2cfaa4bd15597c8eaeb116d19666f39d20cc3233b315629c0a40c0cd47ce79e466e891b092ac2dab692413530c2c1503d0f3ed4355721e4e48009116365f6293c90f781585355) (F 0x475f45d6eb8dc9060cbc3408bb96c2bcbade90e96b7a3e197f61dc529ac1dd2f186119d01e60c237a2bf971ef208ef9742c44fd8a89ab42f61870ec111b6c0af61385f335adcc1a)
+ , NZ (F 0x28335c295cd563422428870f512d48508d14df1ffa1662201eb4cde90d2de82b00c3aa77f9d2f9e4799268b8bcfcf0c98a6f7370592c7fdbba414174eea870f28a5f58ac46a66a3) (F 0x67024edf507a3224355f427b3108dbc928aacfF5d7809082923c74ce33b49faccdb933bb38e7e9e9fb6dcb22dfc289cf955c8ca15b8b7ad78e0d147eFae6407ce593cc78af1fd)
+ , NZ (F 0x6236c53c59b072242f6105d68d24a3a4dcbf649e9abf8322142eb0315866849966ea9485bd09411ef9ebbb2a8ee9711b104cce503265df6d5792568bdfc4544ff24109c2d55186f) (F 0x07433635710b8bd67165a4a6d631ad09bfd730d6f50eaa5db42eb1229a5fc17bff13eb91ece09ce146458dd217d2617b86f85005fb12376a9dddb6d79b21c3ccf6f492c1f9e2e7c)
+ , NZ (F 0x0e0F1f53ecbbb7a1ca69c20b83cd6adcb53a1215f1ff47869d3ec8F586cF3db8ac92e0a578b97f716251a322b35f825d55af1302879245ee9fb02a0db1f6341333061ba40483) (F 0x442ae2f589efc9b0b642b55ab4c5dede878bbdf73a361bb442bFe62434eb0778a27948796fadb01d3eb1cda233fb892315fdb22d1b0614162cc7c6c29f532d0c1845ae091e3639)
+ , NZ (F 0x53e4c834af505ecc20af598c5371a2172911004d9d8a3f46e63a459deefd36ac21da8939f3ce1e8d84fa23f30f7017aefF7052be3e71658d83bb32ec9f521730ddfd92c4554980) (F 0x11a4bef911f496c06a63296574a34d1b070bcd83327f0c456ca343263e6ef6308223000e7b431f4a61044ee62daa5a428a946fc2f0c345cf40e00b38eda364f528cc7253a2de6ab)
+ , NZ (F 0x755c3F3e0ce21c1f9667d07d274af32003bd138188103c4c4fcce690F41791eb3d6b33cf3ae5482e713198ceaf4299380647ab68369f37e8e582e9c491934275076ee9b10fc12) (F 0x348f6ea593e0a92bf3eb07fd4ff40363f19d115280dc7b4cd7f0f1c0d3a556482c142d49387bd38f81f1de7be41cb4fac594e889e70cefa0016a251f705887099b56bd26bc92e28)
+ , NZ (F 0x5b78b4f170f6a1d4afc3ea1d23f815b2a32942de32c245751b7d466d69518debd1e4540630dcba830d4e035be99f2e1c6b84e58caeb716e2c370b937ee884fac7a58ccae4071d58) (F 0x3fb43106773d23f1a5173e9c42c9c34d69b19703bdadfca42d984142b7d174f28a11befc854f9ee3afaa80cc06342808b57f01c2da77d5cb3e7ecc339406077f4bbf40d51879398)
+ , NZ (F 0x6b56ca08bee40be92f55d5708a237f6664f354e053c6b745c676d1671b6a9f51237b1a60ba7cca1ef2c8f5eaf0124e8f6b2a9afd1f4f22e17ad59315a046501cbe7cce5e89533aa) (F 0x6124d0ec34587796edabd9bf7c3778894ef9d4993fff159e4fbaf541c58d3346b1d5d1b98df8714a22a891154546c52bea908d8cbf666f8f708349b2419fa31847c6227c60af2ae)
+ , NZ (F 0x3b6bb55f5cFb01ea1c51c8a3613f369e92e662a04bba8f3e83814e0d73310a445b52163c6c82f8bf628ee8391F8e03c667736964fc6629153bbf3a24c10b66fb8bf9720ff2155) (F 0x35d61495fd54ebac76f7d27093a805e0a67a1899fd259e838ef47e2b791f2ffc1e798559d9d763b25633de8a6aeb7aadca80184b16895bef07d7aa524136481ccfb821efcdccc7e)
+ , NZ (F 0x575a7310c8bd95026b3c27e3777c47e6e3979680942207af444aeab06d7ab885db9787f58d72ffbfaa57f5ebb11ca7c259e442ba1c36a5f79ef4028ce3eb851014451bc5e403511) (F 0x41614abd43cd2e9e60ee89b2e1f3e29429327ea2d3191b70357d20779e3241e600efdda6ab06f8a3c91a1b9781caa319742a38898176149ebf90c90648526480a6612f268251a8d)
+ , NZ (F 0x23aa49066958b24d0fc54929018a35426681b308f9f47822ecf85456caf701814906c3f917f1241e0649cb814d18a911746fc729a3f29472214Fe304f02cfcf96dc7292f76a6f9) (F 0x219cc84a3432a5df0da6d8d71d65b5258e076ff6bb455e29754a5827d7615b4b03a253581130610432e47483232b6532935a14b08566ed70ea34d03998e80b2759e9f7e37031074)
+ , NZ (F 0x1cb7421b8ad4dd72e9875f651940d4a3ed75bbcf95710b8352a85b72a891328835e785452a51f37f978ab07d442f800972b00d2eee39a49e797f5b8812ad334a92351840176fa14) (F 0x4d050d26f9521ff914074eb9d9b661d8603e5d4d2a8dc35b420c2ca1e7c82dfb43f6f947733c5182b03fd4b3700ad84224Fe89aad837e1f658e94fbbeea6d621b8c1d42182f9eb)
+ , NZ (F 0x07b94a85f6309882612d9e784fcac00284318111a76caeF8e77e6dd7396de14b5dcf7b71ab9db59e53139ce232dac360384c430abbdfa191b0b4e42b92f93a2cb73933c403edca) (F 0x5a34c223208c5f174c9b983e5fdab45ad0c9f0a34b3f84d28cc81cdaaded4871993106c268ea01a7e690cf2f940e1370aa7ac8c73e86e52e3d90f711bcefcc47b56d555b8a80632)
+ , NZ (F 0x7ad98ff1eb67a3d4b9f2ff19eafbe1d7cb53da7b1d52d8480da718ba3a22aea68ffc6695b50793846f7dFbcd0c1ffbc6195a1df6c450e27077c2eb6d6130eb3e19bb6f90f30748) (F 0x07519966b1e5cf37e4dd3e045c112eadee9d3a8949e3749a7036738d410476ce32981b36d0ab64bcced97dac5396a1888c869ac9cc7eee344eee1e56af6817ee9ce8222b164f45b)
+ , NZ (F 0x305bbaea3a23047547f75c3cd73ecb130b1d395060f6a8e392de1242cd8880765db46e58d6b79ee17aedbb6dcd5f6f6ba5da45233e7a4bde33bb757bac042f87dccdbaa638fc926) (F 0x02e682ce3bf9139c60dd39e83b81b9dea52ad3319a6d262f34c4255bea295483bfc0fc0af5e531cb9cfcf6bb878fad342947c7968b0181ab053f4d957de18d7a5b024625ccb678e)
+ , NZ (F 0x627fd5c1c7b11187b47c9bf3b1c9d53e4c4bbf93d411F522b98e05cb982972cbae2ed94c373fb49c34ce887e3ecc213ea5a0e909cd1fa5596de6ca99c788f2d1872973d9911cf7) (F 0x066e9c8a18dc90db2b0becfa8cec01160a81837c12a7028dc069db628947542c53bcbfd342fb7023ab1f325e4b4b39dc8424fd5f6ed82d2f9909a97890bd65180df55a7ebc29772)
+ , NZ (F 0x67965be5a9eac8e589f6cd714a7903fd8a6d7e8fb49a2405362b47c50e09fc703f3b78ed2500bc7572c039bff47f060cf4f103613095431cd8f1653b459dcfF12bd44e57bfd558) (F 0x1a9baed239596489a20ef956bcefdbaee03237b5a0835a6edf0e2db8aaebc9e3e356e3Fcb36f447aa513add76288c7d5e8ee8f7ea595385d4da107fc3c39294e979c9c84424045)
+ , NZ (F 0x54021a0073232390e4f66bac27730693567a51f47d784bb80b78f553139f5e015207eb6edfaa5fb6Fd4fdb118749443ab99e2935cdde101a96Fecdf84df190d15d8ede6f32149) (F 0x615c86cd0c1aa157917ea45d43dac5761c01b497c54aa3e45a52c8aeb21b088149499434a182b87a18Ffc82bf9294538360a0f5a179329a90a29fd7b8fc5ea13c833c3bbdf6ae9)
+ , NZ (F 0x35Fd94e66503330753d999554b6db32dedb5ad46b982a103217e1e15073c2347142165b55e849792ee41622d06875e2d6840cd96c493af335440efbcf5fa6bd773dbbe553d1b1b) (F 0x026dab3ad6669b9b9f228460d5cfa8bb5dcd2a1ec522ff6bf0ed1a02c3c6eF357efae9574abcd6ab0947223e79c25d8f8b75108f420d6c2503Fe8c70d05713001c7c85ae4cb13)
+ , NZ (F 0x1401c8d699c7ef490250efaaf4da80014c65f00e832cb4e26917d72ddca42efbf028baeb65c18494d81bb6c5e9f7079234fcbf5fd567e0b30a5b95d6fb15d088d5a92184594ca13) (F 0x312b563f34b404bd9aF4205de4cd839d6558dfbc083bf27fa205463daaFd099c4877af8060bbf947ae252719bb17d9da62f583455475dd29f71818066383d225c71e42a78c279)
+ , NZ (F 0x43bc8838a940286af8397aed5cfb0e13da386963a0220e4365fd4499109458bdeeb6a1693d9202cebb11bf3eb2818b1f683cfa8e85d1c26c1de9ee979fcc952eb1a307b6d37e46c) (F 0x5cb2f1c1df4899ddb6432eb046965e3dfba96cdfddc3445c4fd08183316161e4956f0fc868cf2b816Fbcf0520eb9ace0998ab17ebd94662402b482ed3cd1fb1105c6a9fa737487)
+ , NZ (F 0x7bf83350a4aaa3839f7bec16936494d8d90dad7604d76588f40458dac0b427b5fb56d8faf1042b01672605128d927f38862ad0a5966989dbbac019415220e7d0a78dc9056da7541) (F 0x2e07be5e1ec9cc9b38708937c845df474139d452ab447ee8b8F683cc17d3a4375bd5a69f218b260d9d2a1a9b88674870a779fca3d16267a327f1fd54760d2f6d029d8cb94297d2)
+ , NZ (F 0x27f8778e9785ea6d3ee56a35af6e1c926b9cf58b0d5d43c3e2132e13061259eca1e8a1887ce9de25d0e0da9bf6c5ccf72b450df793d0b08daf27656c022f5d527cd36a3304c500b) (F 0x6ed2dc412ecafc05d822b1a21527f24ed5beed4445b46e6f2108b5771a492b8be46cc63ba1714269fa869afa46bdc84cb815121c56fd089e7a97fb3943e848172f5583ad3f90cf1)
+ , NZ (F 0x7119aa9ee307d302f829d2e013d8ea10aFc8e780eee0d56aac14dc2fbc06fb640d01668ef5f57afa9b94dac762594ee385f85baf8d24aea9f880859d4f83d47089356ba005729e) (F 0x39ab8727da4b03122c829a42F25113ee054b521dc32263ce46b0e77e9512652874a92a94f1299e022c02ad4d44df654F5b6dd791d4a1a0d5e0b74d9a0d521b39c7494eedb8b47)
+ , NZ (F 0x528210a266efdd74cbc1f3c625b2a76e4000e15742c584b04273cb2e6101f30291fbbcf0c7118f8926ab264242f8a9d8c5b8afa2b4548e55074f7d9893f8b416747d0fb0a065d31) (F 0x1c3d14fa974494c65cec2b6990ae0176e1a9cf28a5ad45e94126e78608f349322ac52458b2f554cdcf6f4a8b9f7b93e61787b7d36eddacf125cb6a3e8812b3ba5b2f144bf108cee)
+ , NZ (F 0x35eebec9ab1ab330a030a14569ecff850178df57f90fd15a9f654476cf67f4798af3630f3a568ea9f766ce093812c5502c162e27a8ed69830a87062c355903f20a03b01fd87ed1d) (F 0x66fccfb927b222572fc066e9988ecb1d2bbe802b069a6f942de6ae1eeed17fb23e56b8d47ea059d9b4e39fba5a417042b9c016fa4db74e3737a39f78f023e9cb6d21b536437907e)
+ , NZ (F 0x174a9f6dac3a5f59d330fcff2dfdb0fba7cde52dc4594db423ff2765b62b478af3e5c37646f8c0d7fa2a39025ae6065551a9a3867b0dd551c683eded59252144b9822a8f6861929) (F 0x1a624adad4015e3740285896d158f8d9a2becce2046523f12a256bbf2396bcda7cdc1ea6610e904cae462F2e97e269fdcf8d735792870b66c4146d683beaf9b9937ecf5728bdd7)
+ , NZ (F 0x60ab210a15eff90ce9eba8c9138cf5eb264e89356687cd67ef9269ba2d1636679f38df3a7e029c6b636408fdde7ea615d9d059066a5dfd875b133d838ba3a123c69265c702f99a1) (F 0x29eaaf5c2ce8b6827d6e080a993dec120241cb3bb69e3bb52bdb58153da49143d9b80a3a98e53d0175fb9a22b5c94f656cd139daeabb2527dc5ab4ed0107a63e84be3979d7a5172)
+ , NZ (F 0x531a0464a9fb9f2c67c03f97e1d5b22425b9c8e0462f5ead16a126a53a89087197fb0d7781385713c1b933f902d8dcc7b2c2e70d2317626be88c83f8ab171ad0456d7dc6050856f) (F 0x1b8fb03a70863efa7503aa4a36505cf241be8b79d065b6d3e89498751b79524044cb18f89e1d12b180ce953457d43c9736edce2ed178d799f28d8497cc74c1d44e30e5ea8e2d5ae)
+ , NZ (F 0x32f4d59e7d6448f7dcd9192ee13a2c54572de6687bd7ef9a303c5d2d1667be44b2270d02a47942cd428db3b5e7297425ac429F41a9ce89ba82aeba50d658e0b87abd60697e8491) (F 0x215e1b051b88f08ec2f6e4e0726702f4355e13919b8967887d6b089636bb3f9bf634cb79a6adbc5c130dbe4029646213cc704b7f70b6e114230434aeeaf6e3e48d07ee2ed0b11b9)
+ , NZ (F 0x798f69f1f811186e4edc165adc7defa44a5715d2c39d94c4726a97f2452ddaa401dd06e97c071222528edb87fce732cf109892bfdd3b88bac1dec143655f81dabf4a8c0272230d4) (F 0x61892c6fac23e270a81a8ef9cfa1437736b4230b69e8dc90e2edf85ded7563259192ff574ccc7486bd95404c7e216aef838347925866fdde22970642cb6ae5e9558fF4cdb9ae2a)
+ , NZ (F 0x6b4a043a32fd32c694a7767415f65ca0eb0cc91f5dac231e510888b1b7364d2311dcca28a0a29ac5c1ca8776565a718e9258a1ccb84b48d126f2170f23d1effd4eff7fa665cc23c) (F 0x1e060a4056c263afae920bc3058ddb0202d501382f329ef8d4aa29624b5a3fbf2e315a4d2Fc68740520b57b19cdacc21bf32e54f4091232f6089b3a381ce8912a145c32c0da1a4)
+ , NZ (F 0x45020a8ab2e7960653ba1b7da62b20861aca832dd6a88c52b16f2591b84f7ddf9bf494e3105ee444731cc59eb8f70c4c2F01d51ac2fac1cce6a3649351d3b03ea443df722432cb) (F 0x035a023e449c1417638ede14e257a25d90f047f50492fFffc4bb44dac1a70c2ccb7204d181a9be8e3cedc89a0b488103d86d894fc24d00ac18849e1a82ae0dd05677bd9ff89967)
+ , NZ (F 0x2b40f03fca12058aebe96a0a05d0db60818a7a102061087258719bb950812aFe56fb90696cd6022b4729a72ae050ca97dd581774424acffd245192f5424f1ddf06c78691790c8a) (F 0x64432ddfbb2087afdd53e52d462fa11c5a4e6c73976854c38d9594548615cbcd851e8e0b3dcc2cc2ec9576e4a3598fbc17aecabfd63b396382d1c2ac32f3e3fccc7e0962bd5caff)
+ , NZ (F 0x4b687be60be95aa0a889901c416bd1a1d4ed1672c976aceb22be37c7f6a3d33c60031bddb6904dc6a603dc696f583199aa5f7c6e7589bFab8da16256d24f58fb55c6609ca2cf52) (F 0x2a72538eab5404aba298e9fd00d8bcf003ab7ab1ef859dd66f501d029a115b18cd36732d53fdbc9e8d1f282303facd60d588fae09ea126ae545a2191472986448dc807c6310b222)
+ , NZ (F 0x24b6a954624f57f3dae8ded05b3e9b9073e00ac3197aeb220b77c8997f5d7995cac32c8d28F4cfddf8efc4690ffa21e54fa553752a37ecb87106623412691F17d44cb403a499d) (F 0x46086d0b649ea0f69c3f644503cba8541778dc28dede5bca58d82c4240d79a5cb802a6e1ba0ea330463c82f1d978a8d72b751e0c58391341d5d6a99058910b824F816e94848ae7)
+ , NZ (F 0x41d98200a7f608f82772bcb00742fbe049dc2ebfcc6fdf24b05de18e2a4f27e573ce431e9ea51b6303a9694933d21d38c56a5a5bcc7d3081490c150762c031ae3cd47012ad26303) (F 0x7f4c2f1150234cec53c90442c392846e5b93a121a06f0c5f732c9255dc1e9da3a5aa3bbcc82215836cc2066952cbdd47fcd6c9398d0f310e5460784e9203d0a9b14e0aa9c3cc94b)
+ , NZ (F 0x67723885aefd349610221f04e57620ab35bda2350c46f3bd077b68ab9fa9cd36cbf72950bd944c1ca47051ff24124067ebbf3591b7a48314f1b2ea6bb02097432c0d68e7da5c0f1) (F 0x6eb014b641d5a0bed8bb82dcf36177ed698a19900bf4c5a55f389767846aa76ce411f9d19b537e0cb5ea4a09abf963a43d5e9d48F0f45f7d3c63020aeb12077a07e4a34eaa9547)
+ , NZ (F 0x7e00b9eb12918f71c45fbcaa3d9f0ea9ee4c3e73af523ab8a9c0b63cf6b317e560929dd72247dc68827819ee8719c0fa684f3c768f8cc4a29f8df5b6630d0ddabfd37b669679cf0) (F 0x48f8f577ae1e57437961c5d9f293ef44b3ceb230f356d9873915cf550654c42edc2db856e67b4f0b5e0fd99a271df8Fcf0991b4d1930d58951a8372c05348749c77f6039df6c3c)
+ , NZ (F 0x5260d1736ac29a3f8d1fb5df7b2796f2975cfba0b1082b825df00dcae411b0db901720b680a4943525de5d92d720d291c96fcbcc84b0bff24ffca50b3377789deeaf679a7f8a04e) (F 0x3dbd74181b7b4c5913ac08ce6f6db84015678db413946c5022df24e4b359406070bd3f3d15b7116e454e25c2f7523a41d2c554e1b8921ab468004c44dcd655e919f40366607e9b6)
+ , NZ (F 0x72ca28ea57c9f90628349d2a4f7ab70ff0cd6df7e744216ed774bc275cda176cebcd72e6f599579a9e009171d578da8ae03b2e0b9fb7438abaa64765025b548a18029886ae350a4) (F 0x55343e218a707698e9067b01fd3599db43121e4b6dbbc80eb46a001c88eb777f2105c96970df0cf1c5f64a5bc44ef09ed5185f6062e981e2d97b48bddcffd4e3bac3f05a7781302)
+ , NZ (F 0x5c39b755a80009b5112273aad86ae4804cde8b3f39d2328025761df567c7ebaa791d897ba3ce6e64d4b2ca94beeae077dbf63202b1b9692d3b688108442475a3eaa0a7a35534da4) (F 0x29a789b84ccd65d20399cf5955ab267481bfbf73376bd037d702ba265c0c0e9732f6e84cf3f571135ba8b49f298463d1868e3990c44620576881ae79e308c2e40381a8def2f293f)
+ , NZ (F 0x77aa364eeb14a6a95c9bdf044963e7e309a9d200a03ab92131d731f4842b8338fc62fcd842ac9f6a0b53a43a89df45ef61f9865f7e8f23b32a5c2fb2bc3d536dbf9be0a84ca1a35) (F 0x2b867eda0f44fa3a626c0866ecd1d95ecd76cda3da773ae1f58ef2Fcca0139f05c4bdfcdf0ce5752511dc6f2ba4a74fbc3ba517388fc70249a9391195cfb5270f9cb99f3b7abd8)
+ , NZ (F 0x29dbb1450eaf97140924cbc124a327893909b94c4ed2300aca9778a7623e71504350c1f4731d87b6e4dd57250224be538c2909c10d68b272356b3068f43fcf328f937e365556bac) (F 0x383775ca885a5F0ce98da21552d1c7587e253f22026aead75e3f5906a396f4208ca8c82d5a5d514bec51f6857a91db6eaca2c0066f090af4f115f08cb7c5c4d5447b9b120685fc)
+ , NZ (F 0x365c1397c9800d1735ad4480c67f7ecc4f93d41cd34459bb0d3d090c9d9cd8871cbb0cb664db2bd7d5d8bd238f091025d516b7d684470fd659cda0008181839173d549f2c587d64) (F 0x7cdcc4516bd725a44c0b3a1263ba7c4cab805bc7af704b7986acff38f006a9f6d2b10661faa4f207b36e9bbb9b95070a09ea007776791280bae5a15eab934c3abf6a47c11497431)
+ , NZ (F 0x50b19f451b3acf6b6fb4325daad9e931a69461f103e9b3a0ca9c31e76980c5aff1e4fd65bb588b3b39b3df0bcde9be77563ef200e47f19fd51342d83d352b195d8cb024fa6abf06) (F 0x67b5174efa28a978dcac1bbe352f78bae99c6ccf2255f8cf2145b93a4f34e7ce7297Fe1e5c9e9ea28d11efc782fd92ecd86628ed05e8195afc500159f28a5a9ce63bc02694aea5)
+ , NZ (F 0x747050c59587bef98e906842d0b15a54d2cd6f366420bd0a89b4bcc6bb992d238d19ebecc588cfd1965b093a36ae1d23fc0e435bc9167304627417959dd9bd9c2e18f4447244a73) (F 0x1709696ab745c52242876f6aef5679c02bdd0a4188f93db67a49e65b1ce6a7fbfb4adc30792f3c266318f722362d58ac2da66b2dc6de7d7f4acd384ec9b83ccec3487e1f82d49d4)
+ , NZ (F 0x79ce46262c732b7ba821c97158e2718a46851034f8717ce8a7f37fff92e3c7be01e8969b356f7eb7879c9d9d7c99e6369751a86bcffd3ac62ead93e2d3909a47b4c213b98e0cbda) (F 0x0394746bd24cfa6d9b6bff64c6295c0F1ab7cb35efbb395cd920ac5de89a5db22471519c31db82ef544d105457bd159186a9e2ce46b61023dca5af2e9d50ad7b2924514bfd552a)
+ , NZ (F 0x33dcbf154a2068d1f614da13ee5e7eb8d23691a2bc8c7ecfbcc6e05b0d339d9a168e7313b5a80ac5c355cdd1dcc505879d099d999321658a308a698eccf3a015e7540490cbb6b7a) (F 0x535ccfb1ff8009ae47ca0a2e8ac9f3b67d43e3a82f9532988a45f6f880035598e4b4bc9da5d5e357f89634098812d3994405a8578f15b9957760fc49ec28e96c0ec2d16a97ed7bb)
+ , NZ (F 0x28c497b12c0aFa0e36f0e80223174f2e5f03837ff6c2e680f49fc662bdc0d88129b45af8a4611fc84006de92ce1dbeab075bd89f96e6d3fb0514d52630207401216a03ba8d292a) (F 0x5aff4f53228da53e47465aa923f715F809a70f16fc79d49c27b9880013ffac98cc862c6e4F6a1a9966c0a927662d5084affab8c67ba94f8a55dd0616a77b72d879cd80bfbcd06)
+ , NZ (F 0x750a4923f6a4b633105ad651c4a29453dac455c4df65492530b4cfd718075e0e70f2aaec7a9f3089f6e574b2eddbf3895279f46ef4bb8b9fc9c4798f610643f6cd3a2b982bd13c6) (F 0x49dd266531ab0299ba7ac056498f9b79e5c8adc256daf1f13d31bb552ba208126a5784eb8e26436d941bf71e369bbb55444a1b4cf519c88c3b4a7700ca9f16fd1fbe5c352ea37be)
+ , NZ (F 0x22c098429c6ba2f0508c5f9d64ad23ee8bFec827875f589b2c5b6420cc408a0ac5dff1dc91c989df650fb4aF66050ef86e4e4fd44a9c01e87e0a91269ce40c98Fb2ae44dab0c) (F 0x21a8c90fa744b668aa03144dcc6694db433ba5647483bbf525b06cf4a800c7eed07ec23b67c728512e369c1d923205b20cdba4fdf680aff02d90d20a928d146785347e87dbfca78)
+ , NZ (F 0x126c35651bbe3999a1b9079e8d7a564d9a96dd6817cf189c83164dc32f22fb725d95e9866fdece0174c790a242c5124471c651afcf1cb7f012038bcc0ce7bdd4a3d43bf27384402) (F 0x3b70814dd3a4f39e7f37e7cd03387e9f137ed634858f43d8f61d9c4199F9c013f38291cc292f8ee8fc2d13f4972b2031726cf5eee8301580a2122becde190afa348e7092e2828e)
+ , NZ (F 0x5a4672875411c110bec2e5426284a5d7478d9faaf7b0315F06b1dbf019939088eb3bc96c2be73e169c37d51516d2a46c368fa1cb69680ea28842195e5dcb1e4ed620ad95a0a0d1) (F 0x0b623cc8243747e8cb4c454c705520730ce270ab39988b563fa2a8ba2188fd434f0950779eecd17a3ce5b5dafc8ac7c8561cea85be2bfcd4ab8f351c4b76480814c44bc4e4f3b5b)
+ , NZ (F 0x5c4122451a980ba946c38fde723472c1a94f6e8704b270510ee372c6b4b4c25fa3086a777b6bf7f4664e1bf5439ae807a278a0664eb890bd5e3f2ed74628607a02bb2dd8fb1cbd5) (F 0x34a4b8a0df3aeab5b08cfb8ac699cf6344dbc3dbfc8c4cba7e788f753ca6666a47b4ab27fd4a2950362ed6626eb92d9f59ff3f1ce81ef80c5c9095317185f5a567ad334d333c581)
+ , NZ (F 0x796a712a63677c1e8e055de8b86c450ed73503b1b47182ed27b8bf6295f07161eb7c2083bb3a393b9e4f45043dd0aab9d488716297b313680e410fdd9b5a5219a1499458f9eae4f) (F 0x31d792d9f8fa7f2d1f7b2d4392c2acb88c43a8285acde12f8a3e0009b4f40f1640c0819839a1a64e6361b22def21992dc030abbee27aa25ef0ff15eF932950d952efbe4d7aae98)
+ , NZ (F 0x25fdFc99d36097ede65569064f4a0e998de0f116d6843e215831e6a516a915343ef4b2ed151396c1725cea4876d8037efa00c394e26fa68160137540c7b3cc539d9e5791f7cec5) (F 0x11b9620e401f6c611b01827e6eca5e29b1af4759f63974ab8004b17f1782e63d3590bd5bb03c4a258f72c17F7adda55d309c24cd5f5dc8ef4528c73949bb0d3102d40e18bbf448)
+ , NZ (F 0x5b2dbbf3920e84952a4b952cd7c470fbcfc37ec208c06fcd154692a603c35508883e9562a68ff09be6ed9a61239b3a1d883283b8f98830b0b60770379fc6b2538a21969c7de0e64) (F 0x2e019cc4cd532dd9cadb73a32c303a7971a94913160Fb3ba1943af1f0e059d03b2b1e5d0813951f957b6854f8475158c21e31ad314a25df9e80d73b8ae73acc88b477c36debdc4)
+ , NZ (F 0x680b84661c08da860de17510df1b9ff4f557bf4050dc5bb19d0938ab594e23a4b1f9faf100d34ec9d63d75167022f46351de23eb48d7917984bc4e70983ae569bdd7f3ba2b14a46) (F 0x51aad1c1b5c454a8678fb46f088a8745c3eac254f199a5e327d5a4942e7d9570b38a3fa3bd7e7d665cd0f1d7d7f87887bfbe9f98e2bdefc81ceb7f7c8578b01ddfa598675651f10)
+ , NZ (F 0x7937b9d5e6f334668d184f6270988ba4b0175f4bd1c911bcf26b9eac932aec286d2494b68425ec7e7298e21e1aa6fbf4cec1c47f10a9ebdb87f85e28a7ddbe346546ce6379fcf61) (F 0x3c842f9be1df9224f276c02917172562e0b8629ab77cca477e9e112fa97ee01c63ef316b10da5a905c840a41657ce1276e2680d6f131cc8b02ed023dacd259aec923035093f506e)
+ , NZ (F 0x7d673b1e1571ae18b062af9209c377ca17942d91b5061bdbebe8bf05e3830506b9d441470640412c3cfdc20ce33c48813f2013da7293d687e2b725862c858ba15dc7b94f922f2e5) (F 0x65bd7c64773e4036ba2806f4861e7b79056ff08943d5dc85a3bdebe4c3c0b71a9fbad531ac3c0a04dc701304642e52a4f97001c4127aafded5acdcbea1c24eb76727f6e29bb1360)
+ , NZ (F 0x36a7249bFb958de4f00712499123245fa91dcc0b612ada84c6e2d8ed309970454d6951383a0074478a4c27bc28fc2de4716064f114d9a2ce72bab7836a237760dc5e056704f817) (F 0x6b45842c54f371b86bb9bf91af9121402ea5eddeb175afcb59718d386e977d450735820b735bb6dd5fa002a8cb01545a3f7cb2767e3f9596905f63c4b4e8ae0c98363806aff98e5)
+ , NZ (F 0x5eba5b2125c3a20c4774c38f2e0b3841a6b59442591044ccb9375f6fbcfcf96cde208412eeea4448669b67f0ec344a78b0497653fa79d1779fbdfbcf44a441971ec210cb138f7b4) (F 0x51755b6b79f8a2bb491d65d793a36ef3a203cfd9e4d547bcde659f6cbc1c9fff3c24b6150f29d2359dc9c036f8014387fb9b4018fd3b0c59923afd56029f4b7a405b7e37a283085)
+ , NZ (F 0x45b33ff6cc6ec770853c5b7a22a281e0c93d749f26f65bb8861b310e3110f39848F98343727984b15b99dac424b23294c505895d83a3dfae92cf8ac5cade414757fa76609fab32) (F 0x7ddcd16f5702de9b76672847259933943b2b11a8887f4f1739c2a37e60628c7427bc220f4c7abf755e2b9a841dF8b42665e91727972bf7b90b60a3f9de87697fa9583c59e9d728)
+ , NZ (F 0x671e996b99ed09e58f19673d53a6f5e7be412b550325ec31c04a1b77ae44f6e7eb65a2659f7251Fced42a8e936c5ef57d5f95734e4d3bcb3e9d00303a7f2cbb11377073a49303e) (F 0x7ca677f2e4c2564f6c0786fd29434c2aefba0bb6074c4f893bf3e56545dcf8dfc95d10c8bb4a7218e074247bd4c941d5f2f355b0c99697d1222361006edacd89f143287cf36797f)
+ , NZ (F 0x5745a33ecac6de34a50f955b1ffc56ae7a4eb2fce18616f86beb1a3f2b91363a984422d915caee3da54c1e4c6a545054e80dfc3f3817d7fa472b00F9c5e0f0ddf50a333eb56dd9) (F 0x3d9d3f856d9a9Fa5a6b023b05c546dccad1a1f9110c1e6b6e243709ea012d548f64519dd7f315cd7d07868205eec038c0e735dbc4e430eeb53eaf12a0e4a8174e906c4e4a55b4b)
+ , NZ (F 0x2cfae4592af570f38e541dec8dcca7cbeade7d892e3c18dee90d3e9b168351bdca76dbbf314a00a55dc85e6d382e42018b86cdd015959fdd570df48f06b23b23358db01212db87f) (F 0x648ea715e8b48bada7e967a4e03048c56174b19fb2e2988c01d2e94414de2c1afacf8ee93f06373072b600c9afbf73f7936c6809dbabb3d7695e80259dd97f2bb5f9ba1c5b7cfb1)
+ , NZ (F 0x613f3ab3165fc71b004088117bceb41b3ac50dd7b446700011887a95b7c824faf76ac3404820762887ca179bf2d10a363fa3a20fa46ba2c76147be6b85f0f8c5f83Fb0e3a6488f) (F 0x2e52a4a35868f6702f312b627c7e8185352904698f54162718fc3c7d026e25cafd39e12ab306c16b341a35f7b37535f3cb1eb875d91c71be6d4dab6a248949f4db79fd02580bac8)
+ , NZ (F 0x123c26e5e9680718c26e2eab0facd11727119816af987706036fb6b7aa175b1267f73ebb575d3c24a9041c67368e0771b324c30d12392f4f034225f3850bd74d13824b8e9e233b6) (F 0x62bfbb315897247b0547e62dcadee059c8074f6801dd5c0a3b43809c20de83797d61f3085c4097898ad8bfb1a73287ad4bb1ba75e701768a879304bde1c871d96b69ed26558a396)
+ , NZ (F 0x14f26c7ffb565ffff35d1dfcdac4b26d3a17cc7a6b891ee80144b8635891517ba14e1a92a1363a4fb0a3a7bd42b7c7826191e8a9624122058ef67c035d433df86f69c7c0f20a932) (F 0x7b79b848a40ba4333473766579e698457a1c5b0288a7c66cc0ef9bc198199efa847c19297a04e7032665ab2cbc8c89eb28535a62410c9e63db3df03010c4714d7f7912b3e8ec1d0)
+ , NZ (F 0x3b53b5b443F18f770bb7c999135f28271ab283a3674ef2fbe284399828b9b5f7788242cac75623b7d2b76bb7a4bda51abcd8149018269d7173cd3f08112b50f854ca5c30cb424c) (F 0x079af554472db5fb9c807281d3563aFfa13de9c895f03054ba9472aa951a5540ad0697576309b74f6ffdaf7fd3006f1c8d8e8d84399F9e885964d823cfbb5cdd8dadeeb02eea0)
+ , NZ (F 0x105fdb39f97dc10cb83c3ed23f17e4d50189b87252c012d67dc1edb8af20aa91011943650d67c0709899a6c06f065f94fa3de9cdb2570779a51b7a4c50085d6446b7fc0f0fbc471) (F 0x2cfafce1d14283f59cd3c27493ec2b3c5aec5e173ac5a18a5f2946139c4fc373f8fcc95380c18abe21c037ce7f98c5106a88a54b3ab5d7a31d90abbb837931de66f625534803b63)
+ , NZ (F 0x0962a184aab92f543807a625f590c180534d2706aaa1f75a42364e707285b3e5426ced41e7dc6d8a39db02b6d433714e931dc50fb928f3e9ddc4cdb67359db08dda399b6c1924f8) (F 0x71bba6c64295b24fc29ac4c2ebbbf6ad2c4c9e66a90c78462a90c731ddf5b0e46cef90c0a7cc0c3923ebc1f2984eb2d0a9cdea22e48a0369fcaf4e4e7e5252f38c2dd411866c57c)
+ , NZ (F 0x1adc2f8701850d337327187a79350544d801a8dd8ad07a722a661c48b8633951b1c4061e8b58e33df7d1442cbfc6baa8310beabb5ec43cc2245345c6facd51939ed5e0cf6cf0183) (F 0x6ce927e2deee5079d4978707a27803888011d8453bd6adfbde5a1700d3545eae7b7fbd88939ee818ce0de0a3eaed668098c3ba4662ddc037796f510796b53c7df96c37f1eab82bc)
+ , NZ (F 0x2ae01f9453f66cad96ce925d99241008de65b45bab8787cebeb3197eb14a9a4cc751a7d06f631a1bf5f2083bcc011684c5732d9a38675bf08da0675f62ac8a64ea26cf01557f893) (F 0x23652bc1ff40549F9275015064e55e7b4b7a18f5dc801e23dedc2e3d7bb98d56a30cad08a99057f49ca1bd4292af85230a7698d5d1cbab9977686416677d73f56c7ae26428f75c)
+ , NZ (F 0x4985ed40c9e2d479ef810cd18159774c4645d248051b52a053cd4a3d3fbb51bd91a1ec7e5b542c052dbbcd63876968c474a0e31849867a27eb8b827c1fff4fc8a97e3b4ee515b65) (F 0x6bb1dd67e5d3d9371e3d981262e85543fa88701af825328bb36e29c601eb7de4a31b80eb79e5dbdf1f88ca73941cac2a8132890dfb0eb176e2da821f4f578323d79dbfb56d4f294)
+ , NZ (F 0x2003b099d21cbb834990f878f0438798b8c6eb2edba0ff1bb2f78a6bb7e4863742daa9eF4f86de202064de38dc233f289a9d246515d33899b2a57abbfba48dbb15e2f71851786c) (F 0x45394371cb9534edb0605699841c12095344d233eb11868a16de07042e929beba5c832ea7228490c6f82d564c1d7697a70b6ae3ec9c8cdaacb4a24d5e88069b58daadb40c2def8e)
+ , NZ (F 0x51dbF35c4e4f0db98cfa741ad10ec1ee95F257aa734d44d73c132da27dd7d1f2a5a44849a54c52836139660ac4ab3f38869724a64eed1cdc3a5f465fF73c644afbbf35047b31) (F 0x7bf1aabcaa2544e5b0c41c88b3f8e6c1eada67833436e4460b32863396b927ddaf56f6003758ea446190236775fc9ea2e6bb2354906c8258e2f847b0e7eb1f78358852453e154e6)
+ , NZ (F 0x1c545ecfc87F687308879a5a2f704e89f71f522ee15413ebd4dfa0ca7cd38fff728df76aeeb92bd10169cda4709d47301b787f17e8f7f31d9acc35e21c73bee2c1e40e34f80f7d) (F 0x0417114ef4c3353c80c85a41e5199584dbf819fb4efc8071a78b2a8cf0898b589fce5abb37f274a4cfd521440981fba8219b0c77bc90651f6ea4bde41205e32a14552e749b1a6ef)
+ , NZ (F 0x45282951813a86360a737f9477965cc4bd305862adc3601a0acad11322b7e1a5beaf0e4c79e4848b65c0aef27af528832ded33b268cc9d5443a9b8418d9e11e7d2eb27c2f00b6d0) (F 0x25ae41d2a6f4da08a9683c7f1fc862afa31a9ad782f34dbb28de2774799957afa1ea912e96db22b1e7966ca32f621da368e76d65c7111b81c22ed6f355a6a50586930cdf7d6db01)
+ , NZ (F 0x08f3fb0878e600322ebadd5252d49c54518d5ec56225a6e6b30a2ce37d42eae0e4164a441a3a2b35d9442205125534ab55a731e27860a04df95a059347a86458300aea7e4ad2acc) (F 0x343a00618a92288c400f7e1537db087854d9FdeF7e5daa780048924497403aa847aed8df10d33bce8300fd94b6b4d400ecb7b80f7ccF1830c25edb545b7ddc4f6ea71f18cade)
+ , NZ (F 0x5fc11a7570a7cabaa51d06a3459ed775ff37401286a800523630f27e6c40c72192790cae0fdbdf7b76cc602c063f2f71fccd7b5c49f9f698503b05a439466c0427ef243c098215b) (F 0x3cfF509824892aa939a8835368a1131c8e944fd4d7543999b6f67ffae815fc6786fff6e5d61b6e9e2688ffa96b46f869ea3be633b2ef90ce1e7e0e90f90b00ab59582c6958c2e5)
+ , NZ (F 0x6c7a31663ee204389b3bb735bd596fbe0c1b2ca208aa29039bf5173Fadc932aff6996F1a8a778d11f2cfd500522ce5285f858c12eabb3ab1ad28ec409129335a7e5512d04df0b) (F 0x624ae2a1bcdf0ac2667b8f0d7baa59230eaf66d047363bd627c0170abd50e026a821156dde688000bc6416f4cc4eaade2f2167d53e8f7a65d4b5f4d2856eb73234bbcfbf1265ac7)
+ , NZ (F 0x44d5144f422aa01f978690942398c036a4b52e1549d6114ea3fbd95436b32176f6c62ae132f8b7a86fa3361d7d78cc1ff9266d1b120752ca8009988563a1f132883c7b20ce70c39) (F 0x030270f5fc129e66490e3bb36730cbe2c4d3bd9a49c100017ed1c061ec6199df9b388b31773711cc8c31108dba3941832e5a92df80981854f9b1ee090eaa35e150486034e2cf76b)
+ , NZ (F 0x71f120017609bac1bd5698c46f7a76b48e35ad80c444f45da764bb59db5fc4cdb522d10f5b1a69859dc990da9f52cf41eeb59354a50e39be818e053d9b91e8aa88665034ff25745) (F 0x5f9983b67aeaff7388bdd689b6188d007341fbf645e59d1d008c2e116ef712132d6b749a0b0622e76b8a028bd716d372d0434f780980993b883be2a64d4f37e27e021e1599115e2)
+ , NZ (F 0x397aaaaddea38f915ae2957a63919e9b5bb621e464650a3d923722ce392fc9675c9069f8324e234c78434cdd3bc74b53e6aa31c55138418327a28549322d1935357ef3cd150bf9f) (F 0x6971e39e3305eda5f3a76c8c4a143a700a793f4130628e2b92987c2a18ea40e30538a656d231f7c0d52ff2fdf9264b0e36c51fc48d3308ef89bd96e18ff29cb2c86b5a2073ade60)
+ , NZ (F 0x5d4303ece7d319b3d0087b23286c99546b0820c2e086ff2fc0897dea80af3e12097838e671cfa5ec60ac8f8ad6756bc22144d60685257b0666be692cdaf54404054f603e190ec39) (F 0x3c507596ef6dc86ef4f27a9d0497939d05f8d6a6bd0026bd79d8d941c694a887041c246128fc29211e70423a8ad5d738641ef2f05746c4c8ae0f80991a2181c59a7bb24facb94f2)
+ , NZ (F 0x237dc5fb2c18aa357e982434c11a38390b932df0d91fce549d340c0b594ad53d2015b70f258e5940632bb3b1a4fdef6430ac377bb05a77eea6eb94e87f21b48b572178427800d01) (F 0x35d176ddff2190172dd5a0fb54f6e44e94cd8f76dd1b2ed60bcb114ae27c8e63bd40921bf6abcda5d76b1d891e0b6e00c69e48ea65d441346f93d802b5bc1523110eeafac36a342)
+ , NZ (F 0x1b1a7629da0765d97f5f23f037ad384720d250150bf1cc1f206a20574553b32dd760a726955a5bfc4a32fc0a423516acd675a63d0dfab650fcbfc68232bd4e367d08a9c6a45f31f) (F 0x690c08f214407c90a073d39772f1f3a409c6c2a44640b002b48bbe76db3c5135c5fa4bf5697bd2bfa3f7ce78c1df292e8e341c072c8a17e99017f05a9c41613c1b569d8003be0db)
+ , NZ (F 0x10ec53f59e1b9b72d0e8447d21b0b3427f64058a292ccfb65684403a153906adcd9e8ea9ade3521ca9be7e5d20796fff7a6d53f3e21bcd12f15a37bd14b3ff352f97c4e4f2f615a) (F 0x34fdb134c927026e4680909dc7f5a3bbf0207ed17f83d03904557a142aa7f5a987a9fd6e5152d99c56d0aeda6f3cce6cb0cd79452a8f88f055d030f95e0b9b31fb56d9cd2e9bb4e)
+ , NZ (F 0x757e3a80f323c4bf54f5bd4798cdf34f94ec64bd2f1bce17fa4e6afc37e422fbd0792dd9287aacc4ad6892a2373b59112d4086cb64dc2083c389e7f93e359dd6389821ec53dfced) (F 0x1a7c7b0a4c752251455ad3cddf852e862fa3500a5046e8d7a52d723b207f0cf1681d321cb99b3e45fc935215460cde3251f0e91ebe1bb4de20071cd075b8225065eae2e10744177)
+ , NZ (F 0x0de1cb1e08a3a48d04767c86861ef5bcf980900a884cd76283dc904d4de68758866e81fa05325cd67915a14453e16da06186abe91c3ee4fb496dbc57fc7b2c47ab1cd81556b22e4) (F 0x27732be84f1c278d73b97423ca06eadcca31bfFe9c1a7882431724fb6b54e11b72a7bc42f1f76fc6b7bc1c9599c28c7537ad25e642b4f40a2cae02c96779f0eaa9f76bbeb46227)
+ , NZ (F 0x42fc65989d4e63c0cddde318fddf19c2384329e257c04f31cbec7e20d42f9c8b0f0805cf0647f677de6f96d49a78f9d0a29968f86a85d2a368638df1ea4086d12785301539b221e) (F 0x6a790daf1173ce89ce8167446e9246de56bc14b74d476b06be08e8b709691a44c74fb5dd0a93aa6274619f705a1ea90bcc29f59c1703f51a6877356deaec70a6b9fb86224880e9b)
+ , NZ (F 0x71e30881ee50c7142e2c6f8b215933944d9081c6f894959a4247628c0adfcdf1d0ef6e61d9823346a8ab09c2dced825ecb04c931e927b992eb62a5506e5d2dF8b0eb103bc053b3) (F 0x429d926e8dc08d5b4a4b5c598c648b862de55dc5d5850a7b0e836cd5611dfd23587f8b7c34d8087aa17d469aa2a064ce2f8676f621b600d33851f71d084f6ed8e61daadd172433e)
+ , NZ (F 0x0c726be16f5838d966631af9d0d77db0a411110f81bfb48f290b1acc6b01e41ee57d2dc674bffd3f4b7d2d9fb010b1eb1634453a31dbaca5dd011006760d61882622dcffd7c7b42) (F 0x7a727e7d4ee8b760825a2c689c0892938640ff6418ae69a863d3f5cb3eda2d5829830714d4f20f79155a377108a627b33397ff9e97db11f9893afbcb2a92fa92573935b95601715)
+ , NZ (F 0x7f0cb44b7a6a440b487d81ac425e4004a1d0366bacf200fb0b81b682ac6b3484d5af2064d7264666a20ecF08a9F47acbc930c6fd8e15b5c9b535329da879eb19c1b120a7b1f6c) (F 0x54d4b68357bf2d86398c2fc43777c3e72a8d5a3fb0d979098cb62716227f5bd33df0ec6c328a13d21f63d1b2765f3094994e1ea6e31759b7c1c65806a59e35249696702321b67ea)
+ , NZ (F 0x2d8685ae010ecbcb7d56a8ee200eba739cb352e598a7bf7539dd83a70f5813274d49850d726cc1eb2307bf837b7384485ac7f0a716743734dcbc2b68e2f3a16c229b319f37f2b7e) (F 0x5801b5f8e504754192869194F7ce06bd8de05d8474993401a762c011d0ddca38c92dc8a6f1fd510319bdd7e8a39f624884a8773aa1208f60e39f12d35bece1b6cf332c665e7232)
+ , NZ (F 0x300da4a53800d1d14b90587a5a8560b1e41ae5d44ecb67d602780b42d9da5b4b5c4aa407b8e93f51e715cad060f2a7b2818a1b21001c3dc381f31605812d3740ec2f856af9f7e16) (F 0x560a13eaa55f9d1a60180bec949f9666ad38b77d89c188da060a688c91165c8d41c14728047f1e6f7622dfb866fabfc9055df147ebbdf3e96a70b49712f0219b7ce170564708290)
+ , NZ (F 0x16ea93685a3bf520a830bcce7b19f8db6d292f187d85d79922e0e173f1fb3b52d714d72129da349420da1157898b6042b2587b248b053113c539cd01a60bf92b09ab057d3b348c0) (F 0x41e4f0af8cf2664b94951b23ceade60bb2b000d763539cfbe4Ffbf1f5bc904e5ae0f97fa6dfd8c29408546d74853460871979c10efc8dc5b6b5891a5c5c340a4f74329bed3a4ce)
+ , NZ (F 0x7367f0F84730015544e16584da14a2de8a12632b3ebc2e2534e47e81346183e1fbe1f63aa5b91b2c583acaa4af2664941a0ad1210b2866a15698806bb5e70c9a807b92a3ced503) (F 0x3682714a6613e3733a5456d0f13368d8cf57cc0b19b6726d77dc216656b56ff2e69409f376698f4bead790eaead28b4975cad839803e9500fa0b495f31ca57ada1284ae2d70a217)
+ , NZ (F 0x4b86d5b43bff8b053b7b62d3bbf2f302fb85ac0e4688a0d9c39524a76dba069b4093a93eed947e008f271f33c246105acf2aa5820b19bf8584e078d5aaddb11773196c6be802529) (F 0x6bd6dddb439b228dbF96fce77b8afb0236d0ec27da5552e9b80c0d60cce3ecf85cc7c0ad030caaf83500bdb286b7867ff289a0f138cddc8dac2d72d12ca3f90ae4088f65dd9a5f)
+ , NZ (F 0x4f40e4b730a01211818049aa13812651accb63c4675b91b04dfc7776266e0ab03202181e788aad03b428e22e03edd9125c376b3276bd00c99b7afa315f31a1ba19a50c206a99a67) (F 0x5e44c275b165b33e9bdbeff684c639656c972299591703bb071ef7147e1073b43d941ab5ff57f122ae7ef70aa275312fdfb02704631e20d713c0a8228d89c364c81100d8cd366fc)
+ , NZ (F 0x5b5a4ec714481f88796e9c753b73e026c52c90591165f83940b8c9b7c462fcf01304bbaf80b1816b01e9be137b707cba51da5957a493313dfdb2f40c33208d05bebdde3cb37b22f) (F 0x584edd65fcfddb222ba1b7fb670c6549c48de7fb8516ac02e19736fd9a3fb051994e337c1a1be261Fc80977652b4c7f9f7fd137511613204c002d3f164515e20298937e67d76c2)
+ , NZ (F 0x12b7a4828e74be0837833a8b836f5c4e656c150e44de02aa689bc4442f772a0128dda9b7f8e08d1128305130821d9ac05a35477285ec8479ce9a1cb433eccbeb263c8475025bad6) (F 0x21b8713bd51c8206a6bb3c2e512be289ec5c88f51e923adca6ae92df07d3ce557dbbd3d04664c57fd15df9a0e0bfc470f36c82d8f4a7689d73878121a1c0017112218ada8f63fde)
+ , NZ (F 0x7f84ced72a5ae052cecc85e316f7e0ff6d04735c4fb21500ae0f9384e9b33ffcdcd6Fca5321303b4324824d8983cbbf722ea48c914319dcc45781c3b0caceab513f45728c7219c) (F 0x4a601a6ec6be67ce19c126f4db9d27c02b08809bd70d589050177fddf85f6bd4776729bc7eeeceab8262928550df6e7d5084e17e2189362c10920b6a8d03b4c55642c2ef12e0dca)
+ , NZ (F 0x5f167a4394a5a9e45c487d0c64ce498d73e39b12e723f41fceb7b32217d85ee605379864c326e5e1581c3f87530ca605caee02e522f3d3ec882588ca25cd97d54d3f692b76f7ed3) (F 0x62538ba829937d3eabf95cc9b34bF4536676a9f4a686f50a3fc7555236f39085ddf98de2ab5b61d22fc01053120799f40d7338d7e013cc430f68b51252e24cbeb0cb03d4a2525e)
+ , NZ (F 0x257397db73f74d14577e1d076b0e155405b0f1e835ddcdcfb3294dee36bc6e927da03c7038754dca27e9f8a8c6476b4eba8fd036b45f58006ee04a2fd1a6c15ee87b8139398dd1d) (F 0x22e5cbe41b8171a82b43d309cc1ae3f16f136aa587d053f5887a5c113f18de3340bd9ea6ca82778728aff679d700814382e0bda7507428420251a739b097e449d79075d263b0f21)
+ , NZ (F 0x73b0f85021385427ffad987247d1F21cF34e0c5f4ce1e137e935299add9d81d6a7a23fa4966ece686f0203cbbf23de64278407d4ceeee0b4d9b08e81609a789f494ddcdfa1a35) (F 0x7987392224e6e0f61439d3d18af6b09ad1a40d3b214393e54357f5bcf31a059dffc1f4fae3b91cb48ea52eb6b7d14f092475c0fc0ce4211Fe4aafa26d417d2e0387415d16dcb4f)
+ , NZ (F 0x5359e30bbf71d2f4345f6a2758b7854506d3249427a640e31dc410c9d174b6f9bd49e52f8945b3225341bada70477ada3977434d0cdbe827b2992cf58a2f7b8beec1d8207fd0dcf) (F 0x2d576879c096a0b1191d438a3b96cd06bdd65b2496688e047b112c05ac885953bbcb1f46fa669191595731e856344493f9ab6887eae66a90fd6e41f6a8898Fa1ce48cbaf0a1caa)
+ , NZ (F 0x315fba1881ccf4e9541eb3f3f54465a08995cf2a45df59b7f548a65bF78e8991c291d148f17e07d4cca24f49851307d81642e19025e9424fc0c6dd7ed8351416872dddf9cb7a68) (F 0x7236259b79e33f69fc330bf7353855e7624a0cd47d67e9538aedd99530da5b63b5353595a2759013c83d231e0d774fd129adc1Fe3e19c8f377d84bfaaacd5a28cab1e06e83cb3d)
+ , NZ (F 0x5125d0728c41d4b530c099825be9c6441d16404e7cb5d5a53807bf1d9447e8a40d5f936a2457e602834570b35946c4cFd00061d1bdf357f2b5dbb17d362b4b452139df788455dc) (F 0x4f8cb683e98c3dcaf3a50d91f6bce371ab82c69a6125fb2497e935c74514dcf6623ea28407deee4e92698270f4527ee479b0b7ac2b1ab8b140a4ffd3c5257F8119811861269e4f)
+ , NZ (F 0x18bdec8657f05873730bd489c03786dd9F5a5470e9a4437f9F087777ccda60db9ac57c4facb475ff5599236a38a1c7ad3ea494dcfdd0e0f04333347066e297d0a29bd535bf81c) (F 0x1e9a0c8e0777a5be3a323a218aa39ffacb28820942f0fd84a903e88482bf52ad22673396495fc7fca0bf70db65a347cd52f38a39a90a11cdb98691345b5ef367eaba30d5032cf26)
+ , NZ (F 0x0f9ef22ef92ccebf033d68eee7b598eacf4c3d6e3204f206e0b0ff08bc7bebe9ee1f391b9c6ab94ac08a4963127a17a5aefc6ae440fb4f19a116e9b9b73d20b94acf187f6ebe441) (F 0x245ab22813d398528760bf627f48c744e861938d3cbc494c62932df73a98aa3a8de41393deaf8076ab64ca21e888f7ffaafa603b0ce6b4670a3e23b98b892522ec5a069cbe817fd)
+ , NZ (F 0x25948137e36436b138efb771e5d19bb28dbfc1d07e8c48d38e7ea368765fd1ede5a56a1bc766167ea98dc58376dab41d3bc4f7bd20011b0389bd5f01111f0686c0bf1eab65fb25c) (F 0x5b3aab88c9163f1bb4666d5d001ca65a1ef619c9a5673336f9ceb800a1b7ee35ae03a6dde930c4098d566ae21706d74b55e51a6c1f22daf5e581b3b98d9b28530d360fc74f10232)
+ , NZ (F 0x59de934bf3672a08b9bb2186a2e97603c7d0b0bee8eccdf032571db83c3bbd0329cd8bb03d5e01e1728bd8eebaddc3a300b0f72f7c684b6053e0975be44582ab969de73a0401017) (F 0x6d06948a0482d47a2c7c4128d5ee831a30b47314edc30180ce9aa7b9069671be93b1ee31f26411cccc7a57c39ea6271b03d9531c43769dd7b5cbaaed863fb41743804fd2a1c3166)
+ , NZ (F 0x7a96ed1ac1d354bf97aefbce94310e45b8707c6150f77e3445e64a4f5cb98f10eb5a0125691d38d05ffc886f7aaa292ce52f915152e017da17266eadcb870f8e608e7626d24f4ae) (F 0x1c5a4e1e746f9bf97f64fac8f7a10813123f6ac47ac4b9df6825b1137d2dd6f251992e5d72974e871168e9536a5eb905faeeb014c056abf65bc762c8775e1f5776d707032aea19d)
+ , NZ (F 0x790fcf9257801b28eaaa83c678fd5b941e2e96b06f19367de7df86f8d2f1b1f3400F8cac128e184b10c299a991ae350074b7636fbc380724190f8ec6e9d2d13aeb55e44804edb6) (F 0x797ba3b03729b69ece26f2c04173e615524554aa5c78690ae03c35761ca1b064204cc18f6038c664b75e4764e38f9ab31cf1585d4092d54681a0555a82f07c744bfafcdaecdafd7)
+ , NZ (F 0x29e339be8251ad2dad6969d1a2fa1fb9a022a5bb36719d0b54c9c075ea93e128d054aabbeaf6b9f54ae98d97896d547b97821ddf399c00abf455e14e18bb79952587477ac0730c9) (F 0x23bc1c1b9eF60df0b63ed86cfa97d801d037c10c80f1f4e8c5ebd36abed3268dcacc05be80b057777119995830a36d548b79d3e50fa8d3d397f20effa4b3da9f174a5999Fcf71)
+ , NZ (F 0x037e7587b5723638b315f0eb2a53e99558a387d0ae8be384792d523cf14e5c8cf4e9a2f032b4b055c589d590e681cc0563f1acf5aa63f41bf6bfd5e9c51781afdd0c509040d3442) (F 0x310b387eeb512951177de1a744c39b2ff195d08a536dbf11ddc691a51d3950cb869e4959cf2bb9a3a243c606279eac12870a3ff4c1f2e115918bf47dda6ea16b1b4cddbdeefb59b)
+ , NZ (F 0x2b8910934e8639d37813f0291083bdf513be9b15941fbc33b2a3d76e673fa95e8d5f3a267f60333dde0504c8c70c2a7e98e53d4935c2ae0e78543c99f90432ad56cb9bad3278ed8) (F 0x01321f2fF1a5e6d955820776f356a2ac960606dc190d08f4991850c4a140106d9df3acf297f0f2d3c5a7c7e87e4b63f501142a07f18a4cebaadd3446dff48ea9a042e34336345b)
+ , NZ (F 0x353b9c4e8296922b8eb3a3b00aaa3710cbf1ffb2ab92440e1d0553ec687a69c083aa53c7c31d410203aa17ccFbf9c4b13e5bfc6f8aec5bca70b387ce6d0e2f8d942dc3c94d1397) (F 0x4fb52c617e464b7f347f409a17665f664be51d500412a36561a29724f311cc576814e25fc62164913b5a33a45262fc5b243e146e4862f72870590175e2ebc515e57bd45760bc4aa)
+ , NZ (F 0x24a41106c260b91e7c0946a118524c6974513a7a35b791551fa9ed9b6173fb8c7c263c9b1890a3d23890320c255cd3ebfcf53b100967F859d9271e37faaf1d389480f696bd4009) (F 0x172a786f79b09662dab998dcac611af3350fdc3a48a9972db13478f9193a2f2323a058239a940b57408ce8e693c533eeeb195880a38f28b886b416eaec10f503d757f7a3225d276)
+ , NZ (F 0x0a153eaf7bb8ce1f7638a5506a68c19e021a853fadef1ed2a37f768a6ca9dd9757F2a2f36be51d4dacdcf4548f62b8778cdad6a4d05ef6b7278e3c907d254a9a022d411b1d67f3) (F 0x07a0073938686ff26a9c76647cedfa2411ed69e3e415ae037c336e0f8749dff038ef7e0aff59135f855b6c511b061ae9dF1b27fca5732340ec6e4db241af56e286a77bb661334b)
+ , NZ (F 0x0250641ecbfd9920d0488621602244d1107b3caca40f4a32a48649841a851739087a4b6935dfcb658a4ef07b2df124697853361031b86f1b3c37b9116595fd2f81788e99ac4a845) (F 0x0996ae085ce20c495f5d0dcb82e370cecb223e2cde3d6634f6711563d5f750ce12aded72d02f9c94a61795d1930209d765ba554a45ffb59db30a3208408abe664b40b629afc9c54)
+ , NZ (F 0x4e3cde035286577ba899f2fb9a95253afdeac1d7d4ea0e89c1a009d60bf79e4857e0ac0bfa89Ff521f3d329b257a712884cd27f7e2c039de9d37e2F92527ed8f7f9c777c5aadc) (F 0x6614467e06b22147927e68e5dbe3aaa0a710519cfccbcbaabe6d110d54b5ac6bb12f3b2c8c97d1a4cd5bdf4138eF3e8593f1ce63b01af6ab8704b479e5ce908e5ad0939c510d62)
+ , NZ (F 0x1901ded9c7b65dc1068c84b6d5ac3cfa15e6e61b2788a2592094e2b4455cb2f6a99820aade15ea1e420a2e451ef3e385d7817149f02d42d27056ecbbfc5560e4421549cac29001b) (F 0x6cd583ad69c2f271bed8aea8efb077478d61ac4ec3a9f0b53fF406aec468dcce079a1dda0f12ef675dbc243d263ba642029214be28af9e4679989255831649a3ee8d4bc2cc2c16)
+ , NZ (F 0x536ed0052e2cd4ced48fd29bF13826737bdfa1d5be65d3db9f93f8cf9c033b2add2aaa6d821296b6ed5f047a8b470f924e1d6e9255c5ac0f8760b79d43f2737e8f654e13f49c76) (F 0x226d8fbb38b22c259a86393002b3f690d3e13a480a093fad41058776cc69f72092dc5d078ee9b99294d9625a8755bF06695fd96e36e6a12da3c6769d676ca8db54cF0ee09eec2)
+ , NZ (F 0x3028c14640c96c0a52f9bcb44e0c1230364fbfc1bb1aba5cdbe1905758f855843fa6e77a252037fb4c3e8954209c702b8d24F98b18b151492c3294be1f39253c14f316da0de161) (F 0x22acabd0e5ad23d55717ef7bed416d05722d15F04791c2f594d1fdff380c06a4ab230df22377e09d25037b62940424a38b949e8280ed3d7bb79c6d58ca45b385fc0c101721bdc5)
+ , NZ (F 0x77cebf07cf8a559ebb581284fbd09ab13457b4e6e88ad4634961bdfde1d758f2c96089177b6f203e252bd42ee031f115c2a1663f3dc57d98106ef0d592ba7df2d5d0708d6b68380) (F 0x37be418360f056b1716d6c3bc6fF31bae88ae85cdead7b4e7250d36387d07e6c21d15e5a246721f9dd3a4322357ef9eae51394cbeea41708ab8f82de2b94fb35b2734be18e6147)
+ , NZ (F 0x79fb365ef19a0a1c30199d42c838617250788efd04e6cd3c7cfcbab459e4e4fae99a11bd81f459127f2097a2a5485972c395d869eaceaff8c202390d79ed52dbc0ec4338f122083) (F 0x0e1a39a6650372eb224d912366fd08e5b3646081dd3b649f2fa0092696b2f17dece1cfd53e3576f2947901038460bd86f1aa05170938a2584b719f2a3ec16113445b33e6203c9d8)
+ , NZ (F 0x55dd7b0ad66fa84c1b105253dd9b5026832add8a1da91bd93fc41260540f1d507df8aabbe560be5980ab93caaedb5a93705d43d6259576170077c6fd869e740c18c72865610b9eb) (F 0x2d72f9996c2d7b314176783755e5a40882d1bc6e8aa01de6886694a1c7e5522fb8a134abec7120c3227a840d5bc0fa913735c8a26edbba393897b81603F2F3982d4879dbba92a)
+ , NZ (F 0x1cb04b224b85d42d1c72968168d76c8c9a14aa1f949c778ff9e372eac69a1144bc59139050c6d1ff62b3b32a4e0991cdc485793aba33be7cad4e217ed0b6a39507d216086c9b418) (F 0x6a6448a91d36c7275fcebfba56fa91d3370f1608f392d60683fa2b312be092dc1cb5c2df37ab2dee5c1e6609b38496b66c16e55e3301a5ef280876579fd9943d8d6eba21dd4f1e2)
+ , NZ (F 0x672a396da1335476d238c634f24535737d09e4dcfc422844bea556d14ccbdec5cff6667d3ac10583f376d3432127c5ab0af2dbdb5e1ba68fcfa854c9df9969b16ed148388c115fd) (F 0x60aa824f7943223dbe55e6b2a0f5ab39eda93acd3bdd1ac91f8e4b1a825a00a8bd99335c25181a9eb2a2f00790728743a8d646baa3b5d0c6199fae797f41ae0662ec3295882ede2)
+ , NZ (F 0x39e74efbd9db238531e833f6056ecf0c9b5320cd3a80caa236954ce84a742eca53f73d13cbe60477acc1b81e1bdaa2224ebc8424d839a21c395d2dad6c491d65bbcb1b7db12f1d3) (F 0x0abbb65ee27989d420f3392058a094f21bfb922c7b5ea5382bdb342d12675abf61a1f7fd11d8124d41a5c0609759e6e1262eabbb7b85e775e2bd97afa3e008200075213b3106b60)
+ , NZ (F 0x0d2055d690b9397726ad8ec9de385a0fdf2141480cc29777b1e9ecb96eb44e03d0f310cdc9b7a8dF5784baaa3c63ac5ec056186b8ff669d8b7f542f0d280ff4500522a602365b4) (F 0x53526c91a2ab71fb76582151504c1a1c94cc6ebc197d018b1726641abce3218a2dc07f93d68c89914791c5f63284e735d9362fdf556327cb7231d7d8babedbc9b589b9450c8d4f4)
+ , NZ (F 0x711ee90e2135581e784e24c2cf7896fc11aae34d02444f6e712a74235097bfc32105f0323bf3d688ecf6518631c4677ad518d68e61fb63e310e79c1f06312adcca30019f187d436) (F 0x5cd27ed00ea43d081b2e1e86c7af38e1879690e305f7a247ec64f53b566ea5a9d461587aa378644f410e50c1edbb4ecf6a284d787ef4734823865403872d78aaafd14f06c3e64a7)
+ , NZ (F 0x4abdd808cf20bcad18cd4d2d792f1885154f264676e1651e0a22faccce55960411f601c7287a6ee9b149a533c07F517a38e2ac39c696f0b9707334a73a097bbd88b85396bc2710) (F 0x22f0a1a9fa3686b5cae144fb28e9f0711435ff294158581F430f7dc8f7c4b2a3956e4ee57286055dd40b91f7c4abc8ec23964f7dc329f85352Fd486204d708cfab08b1579a182)
+ , NZ (F 0x5f258cf2aec6add6c043f7861f5ba200c40a7f15b5c0a7f7F356919e1dda3aa99d989c7336aaa51f5c2f708c05f9f676e74945262d4a70Fcef26Fc1eaf6de9cce952d9dd9956) (F 0x02522900bf9fff8e11ee9e6b5302134bad383999f2a6271f856ade8e935ae87f564d691a7759f48444d256a5c363ce235a39622f1f49389fc4f29f83d686405e35e41d71854e0cb)
+ , NZ (F 0x504029f9701e433c11d4433b0dc1ea7ba5c88291c06d1fd4820dde01c24a4ce25b74304cb7e7d0381d5048cb6daf224c24034be60944276a53c3bb9a38664e6323504b438ba4c3b) (F 0x3bf0236364a982a9afad7648491cde3fbbd130e32a02becd75c043d3a8b4869028542065d6e2dd9eb16c28267d08bc5bba0428d5a307221e6595e6dc07df1dcc0e3774c706a9e76)
+ , NZ (F 0x775589b5557ed1a20961d691a4ca07f0510512e87c16228b42212f9b4af3c49a380393db2e3106df06ea4c258a271d593356e5634956c061c17a5c52f7c44a296c21580f8e661d4) (F 0x38afca621805858f4bf9b47162ff98bF1960bedab935788f51251e4F8650b0b3ee5099c1b38e185ad673f1af27b002411c20fb6536Fd0ba702ee07e1b48da9307c484bae834e)
+ , NZ (F 0x3f43a457db269562aa142da2b2466eb43efb7aF51cae1ff0c2f19157f5a5384081a404221e4005a69e839d16f77756475514c375fa715a9a3bf807bff3e2901052ba4fa989d72a) (F 0x6b5ac416681ac89312368f54209be6dfb64922ce7d1dc83d93f99096e974af1c9b7d72a87d60e6bf8ce6df0f10adbade4154c9c5b689481cb9ab1b5a6456681ecf9b5ba278cbaf6)
+ , NZ (F 0x79d8e290b75a9ddc7a2c03eadedFe7f17164fac958cb0fdb7dcf1c0af6ac04a069d235a230cb789effa50d1b129fb8885e33814a793184108ea0d10600a9f4b79c553aa07aF74) (F 0x05a7a22330536e540e4a3a4e2c0305acc52420e0d9b6bebf123747426c11f46b7dbfc88ede95355d735261ca8ac350eba3e5a5e52879f0a16f843076fc2999a706b824f036bb9a6)
+ , NZ (F 0x0b05665f487cb54d4f92a574c992c72d2d1e702ba7ebe79d9f01f8c4851a4a734ed32df1178338c9f3660965d90b09e403aafc30532dc10990e510f3646bcbbf77f148635f7a9d9) (F 0x323a6c0fb5e7214f60261be63a6655eda8254de575944c7d26Faab76ff6ee0221d24b3f33f9eaa27b7423013768cd65e668b32998fabd694ca482874fa6c1299d7873da57f02aa)
+ , NZ (F 0x296e64b7c0c9311bedf3358ebbd28b212cc0c4945993477f549f3421a9533812c0d0aa7a45c5b415e29dea0877e5b1b0601bd111a18c16a5990e72a1dc4ce76f9d056652985ddf1) (F 0x0b81b340c3415a1cb9187004692a302bd6c53f089f4cfb8e76c865a17f56acb3bfddbcaf557156e769cbb98d5917ec0f606877c49561d310803bbc5d0ecff1946f3652a3407b495)
+ , NZ (F 0x604231bd97187888281e3e49f38a7f103882c7ff2f466171f33da1da82d0013fdc9781575a4e4cdae3d7579e3cb46366bd1678e5e3782ba6151f36a8f1467d4c967192f13469a80) (F 0x240598810071c6115c842d21ec8ea1ef586a01c1752c3686700ca73f457202a731786b64b599ba7962ff8c3a4cd66cabd03ce4179fab19572b398d0716a00219ca90669b6904afb)
+ , NZ (F 0x356c1067a64316558ec0f45a6ec0aea1d8e40442ddd47f2d1548f8be380e957d16865db62e5ebb20f0d4b27ee474414b15f67961a121496ef97503b13c62a3d09cf2c12bebe3f85) (F 0x64afcc31c2df0818567468384d637660d3da95bb35a9302dcec3abebf0594c59b2c969fcc0692eb0e9179368b971d98bc0399b420a225dcf7b9377cbb9008ee802f0738e88b9e19)
+ , NZ (F 0x20b65e3F08c0538d3e77F92165c68daa29e995bb8da7bedac5681bf3e0f119bcaa6fdf64258765f12308b385bdeb9fa38da681F524a51f7a467e6b6c85360f88ddd95228b119) (F 0x11b8817e80ebc647d17fc073a1b1e58a5F0abcee81eb741aa4097afd85b44e70c54e88916bce95b5f0bd6fd0f4c03f781bd4c2b8d5c1648fb0754a2d3915999d728159eede24a3)
+ , NZ (F 0x5ecc7cab08731d0c422095c03bb31b965591cd3f3166e211a7631089341a908d796376ec8e3db3810397624854b3b1e283d5e2f3e34370234ff3caa6a0ef6efd7690293ea9078a1) (F 0x15877b2c9687f5fd4496c7fdaea28c5d52fdd5aa3a95e30e92f9779ca40509a34615310ca76b313970f5a815d7c6babb7f2da11fb00dbd706de6000eaab639e760a7ab76bcac91e)
+ , NZ (F 0x4bb68d4eb60a34edb8c8e6e8ad47c80c3deaa318f95e1a897caee0d3acb35ce3a4904eb71b290caa060e1d5db534272bf8f88d11d0b292592534cd778c7188e6946d98cacd5d8cc) (F 0x6548de54cb8eb2e8808946f093100575dbea3e7bbbcd9f93f380855fae6f4c116ca65fcb6e20d74ec50d8eF7c345d4b98fb411d09d061fde75Fcb92ea72d9aa815b02e9cd1c3a)
+ , NZ (F 0x1116295e5d00f99a03bc646acc90e39a07178349228b322ef62ff5d98025ce1e59377fafa47a58271e377a545917c2e0392c690eed81eace986fa0c5d93ff1b559abbd902599ca5) (F 0x016112c3e8ec657a84b7cd6aa5f9e1539d329fbacf8317119745a902c0145ccb9252181c596ad8959a7fdb9cf6cd044dcba40e953e503f7957a106936922b4aa7e88f76d1cb1d85)
+ , NZ (F 0x26b6a409c98e914e891c05e3f0f9c852f3af7a721f0a55c5df637d0434629eddff41702fd64f8f929ef99adcf562fd02348c930dd90c2b4a2a4f52b5d57dddcFd7c18d602300df) (F 0x49c4c9ac1a84eed4e45983de0cdb967920d5c63509ff8788782515c7842b4ab554238b0dead3a1a90f965aac8d22fc08179321eef7fd5f5a9e375389e568c0c91F34912029ce04)
+ , NZ (F 0x75ee179a569388821bd0207d0662d289a8632db7a46af068cbeac0970F1620236fa6e5f9f7940e6e52651f027747f89e68f63160160cfc0dadbae05f69d8fa650a102f4ac6745f) (F 0x47e19717934e14aa64db8633b6e1cf660e3332bde7bb04e3404e8500410a36455041684ed13ac28c47a6c20e342b247a277963d74984a0b568eb3a4cdf1e807be3c49721d275a83)
+ , NZ (F 0x07c7dfc167894ab06f21ebc8e74a6796fbadc457e1731e379e2cdff0c027113bf30c0e5bd53bb7f35e6ba448ae7b19a057e1aaa8ccbaaa917da6317cebd6b5a672346ad6a847fd5) (F 0x141d85c1a589ce727f7f44134aa32c07eaaa499dfac6efd83c229Ff8401aada72229372dd78d8d56b460473220573288f25c3b7facc5d6ab7b01368c68370e402a6c2a6d05c9d2)
+ , NZ (F 0x63d5ac83e688fdb970c2aa61d4702ad326c63d6f888ada88e720142ba7c46206fc30e8954b43cff74271863bf166892d81270b18d8646a29e4920a086530b7321da7153584ff6ba) (F 0x5e6e68a734053e087d120323f009b2a8739e7f1ab01ed39457818564a2331b8f48a76b37Fbaa680ad3c361848cb0b46c8e7e62762b0e8f61a576d002ae5a0b493956b6f165e5df)
+ , NZ (F 0x5d784a1aba718286cf487ea2b522c4e4d65ec0081d52e831850043d70ae884f693899f06de5b51b9ae06447c5fa9b9f700f245fd7e079c9fc9af08c785d0c807deb8f570482a2c8) (F 0x683b279d38d180Fc6480b54679ae33ebf1eaea474b6e1d15195fF4aacdd216716d508b584b9dcd96c0e258ff4c9a90a8d442ef8b0712dbb7d877b911fcba2bfd388b1fF5f287)
+ , NZ (F 0x446c3b56323053c1faf9fb4f4cbccba4ebdd66d41b8095e715f35b9782c5d9513513a12185d3d8e11a654610ccd2eef1bc0b53886343d90eda3b8ff60511d3162e8eead6ba3ef40) (F 0x7221FFc0d05667b6db875c5043be112897e36c8014aedcd0ffa8b462be6e81b89f114ec682d32445923ed9187d25ffd63e6f2a6277930138a06770e1c4b7ca4b3c231a863ad4d)
+ , NZ (F 0x2ed3ba283e9fd13ce5344c724b5bad55b0908741e3c2215a128ae52769150756b120f5dcf52f1a1097c5763ed62c9ae076851366e78acc96478d25a62aa38d5e2ea88742683e838) (F 0x267cb2663a53c07de79d38b0bca7e132b66eb73d0c200396b4f827ac6d2c492de485969bf432ccc484c6338a56d532930f65dc10b9e9f5e14bd01dbc736c9fc5b8eb6650f90dd27)
+ , NZ (F 0x250dd047910bbe931d7f83e682bdfa87d3c7b2ac0dd4076ab77Fa05564f5f3be15fa940ae4ede244ca1d9946d1115e81a704a742748b676d35db4e17e442d718d6193c32fb3a24) (F 0x01e2840a9e7f386a33ff084f161054b96919482bd82dd34dd3e47760bf102be5014d875f40fFfb37caf48a4769f53a6e252d4f4b776a7317f37ec4F4396b7ce98644cdf5c9ba9)
+ , NZ (F 0x69167eda02e1091edd7e9cf043d62Fe36372b396da48e761b8401fc9fd1b3a7cc1a69f0ee7fffc2debec125cb0363c889a239408e140eecce06b1674fa682ba18dd58dd33173d6) (F 0x152130d2445cdd78405dc049b093bf150303942990362e0b8f70551c2f85c22fbea744aca18a3a5d7ab16fF95381d455c5417ce1e3129ccba9551d7ed2b2603ffff21bc8dd5d8f)
+ , NZ (F 0x28e3c50988240558c72b2977db81f2c5ebe52f4a75501e27ab5564222a70b7b61b6ca4866bfc21ac1ef994e4bc8ff326a941b06a8359c9ca988b7c652662a2207f379b77cd6a153) (F 0x6e478dab85ee60273b263365db59055f6eef13046df0e13443b7a3ee2835d7ac082d08bade5193080f686e15e2b92b7042cc2e02974f6adcfff21c34fcd081c9d7a3a16c412de2f)
+ , NZ (F 0x72b043c6f3fd639c263edc39c3eab0e51b39556cf26f76801258fddc15fb739123c4efcc407b94a6f0c3a2424d25433a6037647160324da61bae400bc350d4089b362beb75f8b41) (F 0x5b7c97380810ed0652b9bfc1ed3d12d3941d75196af8b44129af6a1c3a4606b359126a995f51189efc5734b3cd3b9b670d3f1de7385b3f958b2e504Ffb00ffda2906baa659aeca)
+ , NZ (F 0x546e349c35d9d3430b6178c50ff3f4fdd81924ae706d2e4339e37f88348531f4f9F03ecad409966ad01b660195fb5e38bd3ed6c5d0988cd8832749b5d07e4986b216734aa98692) (F 0x0649451ed92184ab690656112a815459030a9df5cf4595ab8da5f8c6c01c7ee5a6c7cb72f5ea21cf9753cf073f9bd33453825f4e5b93a2d1ceb134699b8e8a61a6aac81aecaa8c8)
+ , NZ (F 0x45fc0750Fce3c935c933a57f6bf46bbdc8ab0a1cf7500a7e7aa900038ebf69fc4429b16a8f651c3ea86903185acd4b917c01e06db80b70f15fa505cd36473dc11c2766179949ac) (F 0x0f1db535af9fc8173a8335671209b9037508fab56d9125b4294cb08d7e1878f5a851ad15fc29c9c4c842481a1d578bd88c43cd7cac0109ab4ed56376f570a02cb765c52a10987e9)
+ , NZ (F 0x365d16d6d1a64183bdefc7b7cac4996e68956fb8791061272b41258ad71d276491bf69b4d6534dfc00ad45917e0ab8b71c2a7581adb443917bf14e45aee0547aada7d697748b548) (F 0x2f83d51154f25f2c1a4676b86b9393b1262dbc8aabb5c63333a6141f1fF6ff47240a3642bc5218405f1ae03b60066bf334d8ab28606490e04b78317c470bb609ead54957627aef)
+ , NZ (F 0x4e7fcebf36244eb3abc32283b9e4af9e193afd3f696678d18eb59f35592c1f44de4c1e8e6c5942f17fddeccefca1a3ce9e0f5e274dee18c152d679a9d70c4cfc0dFd4885d88580) (F 0x34cFc87868b6172f25038d9342ec5f75a6d5370f5530579512ec206e25c9130629036e2e3e6cefd9eaa7c2aff5517289caf298c4f142e07e8324025fdd80f3fb0d377db72a8045)
+ , NZ (F 0x4f53671973d2c3d9edf26bd14e87117adf6287b8475b73f612282897fde65eddd0ae7c6fafd49661fd95e4220330bbaf597085ec4c5639dc3a9439a88c6c98e85fc7ee0e605f1b1) (F 0x5caac7d22d272aa197ef3368b65c942b505052466a0bcc53df2515af3fdfc3667020015b3e718ad982e1f8731F2aec54945a02433c7163a31100f38ba3b624575ef374a84f7854)
+ , NZ (F 0x6d3b7b8b2d7d8227ea673366028e21a9008b04dbb40f5080483d7312b8fb31d8e4cbb020854d26f1cdf772de81a0f55Fd34a4a0193fc51db1ca429dda0618de157cbc5fbc0c7b5) (F 0x0cbe9c3e555cfbbc0533b8847481014c42cca111bce71aaa69744351e6e69860070028c5c65b023aef9cb2204814c23ba2868ce5e3b6f89110789c4708fc229f4b10e30e939fcc6)
+ , NZ (F 0x0227b8ce16fdbcc9d128d566ae50bcaf838c06ccad3d9a14d6cc57e66d9e60afa72ca1840e4aa7a691d06398b33d8ddf9523bd25df334f01af000a0148f1b599ac4522a13e1daca) (F 0x2c5f05331b8db5b2128cd39859739b7f2e6e8435c98a4c826e7e8b5dd8ba05c447779d02cff1b1d034d3ee0088290645eea0c5613765f280b9bf231e5c0fc6ff8ae7ad1735ff517)
+ , NZ (F 0x4359f7b432f9cc7a7174978c0dbe393d3422732f1b2c76a0e161b381fce0ca235e8c7ffc82c93c39a7cab198965ac015672111627eeb14d31b34b60de2ea358482db2c2a0656db5) (F 0x612bde975a69d09310c69d3165c910273b1d99666ceb475e5de328268445d1396246c5805c5ca501855ec2d02e91377e7ea4555ec0cb036312b2c081871ffa242dcd0bf57593627)
+ , NZ (F 0x7ca892f5fa9d62d61b4366ddfdbce8c7743d7fd45b2290853ace2ee7bbfa3daaddce31197002d0ee882c3ffcccbaacdb1F617be29c588af2b0df1490379283af8fd291091f1547) (F 0x10d1d0bf3d4c3d5623c84ded0409078ad4134976fcc54deef03d4819e58367fcc544f61ec63078e92dd8ac729078d0212a3a3bc8a810e597285350d5b00fd9998ef1d46f82f0a78)
+ , NZ (F 0x2eba3612b2805ddac9401bf62f968e7fafd73e72fc3F6124b823820e2c0cbbf0bbc576cb877536952ad16a0be29cfc75b2b5f4cbe3a9e929afa9b31e445861a7f70307bf547e7b) (F 0x15947eeaa139e6d327f5fc28474b4c43392c840a24d37516f551af0f088ca5d1ca24e489a4c386aa4df4efcc1a5d112Fe7eec379c76bFf77934a2365ab54903a6b860d60Ff41)
+ , NZ (F 0x0af93eda366d4525f85ed1b988ff3c1d5db710e2ff3ca902a0f122d80f21e0e4eFb244de845908b1b0894f9daa83e12163f044242ca6b10173036b8bd5dcb1647f3731502be500) (F 0x331ae20aaee9bc061d40830a6a257e0bb523abb561b51bd8da2f3caf6ae7f3b71c9c6db5f1c9b081fc70c1b1e8068d31aafadeb5de98b056fc294afbd72300ebd72b6ce4bc18511)
+ , NZ (F 0x78df234cc31ed548216c38f32ac3a5168097f63e22c2ff5c9db89d4b62dd84fddd459884da6b48f06afa8f077b698ec10e2d45a6f81df304063a094e67460e8962bbd184bc48cac) (F 0x5152497bf7950cd6e698c897f72ca62c4cc0ba0c62c9cbb49cadfa335d917168db5952bcca47d5c2681fb33b958c29a5e18c968206173caf01159f4764ae5cd8019df1cadaf7584)
+ , NZ (F 0x1980ff1364cbaff6d59dbb67e5b9c441af672b13d938065e766ece91bdca8cab71aa4ffb9a61a92024e094685858d7922a261bceeb9b80e61f22b3f2a3a30a544da18d4Fef30ad) (F 0x116fa0cf7ae9b5615e5cbc5c82e2Fb024966c8ab10d459e758c62b43570fa1553bb4eb86207f216840882d3de4ea3a3c11998020c192d2b456abb5b75f1db482d79bb1dafbcaeb)
+ , NZ (F 0x4bc9e353acddeb147142bb4b0338415aabd88ede94740f0bccbd2324e70882856c76299d6ddaa9edd72c4f4c5a4089e95bd087ef96ec109bdb3d9322a908edcff47bc3747d4eaad) (F 0x52a18c5949ef65bbd9ae6c7c7d2fd5c0772d64616bbf3b858c903a4b0427fcc9f1844da363949b421cddb4d8f27a700336cd304338fded128836162a1a0ee3ff16034589b9d0bfc)
+ , NZ (F 0x45b3f71cd9613288a3d32F878cd8cd636327ed57268138d4cc9d11a560442ba9a7a20702a84358099f260b6e94f1837ad1100cbb4f72e8ab7e1bce6b3c4c867dddb19e22e57016) (F 0x4524cda3cdc9c022b1841d370083bd68bbdd11d5dcb9677fd47e24b4f73dd0bdf1d2dba255153a0d421f2f3e5246279b9ed70694e49a883e7700c664a10a268280de0b9afb91c09)
+ , NZ (F 0x02840c70f63de4c8f1ef8519e071756bc5051ea20659F117979c95df7dace65370aaf894a1d3345cca79c09286bec986924a6F5523984ce5d6Fa9a2dddf033de9832821F80b) (F 0x295c63418faadfcbeaf1dcebd0bbf04c32da3dc8ee4d4e9d89c24486ac03e0a3805762ee8473ebcd7f362a027d1247e53e9aa7a5F017192c40b712dbea96af2e00bbe8a65408e0)
+ , NZ (F 0x2355d72b024bc848c42c7cff7971a616cad27bd1172961a13d687affa6a69ebad48caee32b1dc3d93b6b74aad589b925ea6122a80462cb1b2c8c08eb267dc1c3ed240cb09a1e122) (F 0x548e1c088cc867a6683141a46a333b0c69678ea4efcd0208c15a6c0c4cbed75d2f5cfd14de7f4b4491b0b9cd02ee940e45a30634b52e3a14e7481ce887003a2bc8b70d6294a789e)
+ , NZ (F 0x30420796fddd68c49c948b7d1f4fda59231d20c0546f3000d2ee663f765f0614485101d82a76b6c4fa1fc2fb5b4a897b2f430a435dbbb568843e11d159081d04c5e4dbd044940ac) (F 0x356c5c5e903021c1ffa6b7bb34f24ba07c072c6351a8eed1ce58d8fb422e63b24f1a14f1a01e9f10bab6c78805188d7b1bc6a0473F107dfa1790fcca63341144a12ddf4d8ae560)
+ , NZ (F 0x6cb6029d26513e2ba68f750dfd7dff645d9390673eb9052b9878bba1ff3fccc87ed8f9d6632ddc8f5bd03a102edeacbe37c8a6936158f111e0d12a9cf7d425e991919413ea8dad7) (F 0x7c4ee05e79883e45c95beFc88fffa8c1cb615b3089c5b727c49c4c2675e4617ec7c9a4cee296ce13907321cc56a3cef574881314181565c7d686de34a2e9719c9446945F51983)
+ , NZ (F 0x6c7aedf18b89bcc56e23ddc249dde79f58697c1c6252f939a270fb38b65aba99d3851a3359792cb6eebfca4561a80f541fc31a3d7f4cf5937e713e38af59f56cbbf2690014a3041) (F 0x244cea94c29Fe1a27f27beb4dc62e09bb629bd27f5706086fcd2678c0e105757048957ac24a561525346d2f36516a0bbcdd5c50281e68e77e2c77a9378bdb5fd3d808fde941298)
+ , NZ (F 0x3603d5125fca1e87e6b1dcd3dd17d3cd86bb12f902eeac8fd02c3bcbbcf7f8bf6cbbe1366f9c8e25d949ddbaac7c27bf518121079bb8955e9a64659895df5684578b800a2c08c84) (F 0x4422a84d9f9de240ce0a8c6a55a3ffae5515c11492416cbb7017e9d5441be5a2b825339b42095e5ae98d135698e4c08f910f132a079d0b92211a08a91b1452b33d746e102ae764a)
+ , NZ (F 0x414caa4f733e932553009d93d3251a42F2c580ab7d283e2d1e170726f5f9be5b7653408fa7572d3f009cf4ee802613aa3a31c2991dbdfaabccecd832c4e86c6a68f2e612739b7b) (F 0x23ada1bcbd3a506cfb3de390c21ec572a1c47173c0c81720c8464525c52a45cfd671762041dee2f16533dcda869caeeafc34891021cc2b2157d4f915e1d5bd8a2b57df9c24734f0)
+ , NZ (F 0x57afce5cb571cc5760d1f0a4d90e91f5ac8391977d11bc37dcd85f5e01839d984e24a429e7df120a724a21949f1cac61495d3f1639e886024c21e04c46c69103522355b046d2cf6) (F 0x48e6ec239e955630bc6b80eb7d476fdcb853cefdd1a54e1dbc181de37ffcec38F02f8b5db392ee55d55b6bcf18836db8602fc27ca0e006aeca2c79e6635661b9ef392714bd3b16)
+ , NZ (F 0x1546b20d6b24f309b7ae5c49949425b10350c72ef077f8988448bb7665c0fd3630c8d3f5c9e3e16106acf422f0149817f27dd80b2c66bbd4d92ddb663736649130b459ef2cb4d91) (F 0x0e0a7ccdd9f2e40c2509cb8759c31882c6f0af9082f9ae4c0eced3870Fd4f8d009c4de7e640F3ed4c8639deda22a6c3df4e57a6e3a7953cbe00867e5b40df37efadc6a45ec0dd)
+ , NZ (F 0x08498134b0bc9e1b75cd4590d23e5b78faed9a4373c9a054ba5896243b0d589252ae5854d56199d8e3191b670e6dee2fd2669eab6e90cf1738e6042b7c85ecea74ad1bbf4daefc5) (F 0x090f572ab081f45c3ade75e3e2f359707b4c9dff7861adb0276b4590efad86056a666b5f8889447af7560f5e9b778eb8e8f55bbbb61d0502bdf7baab4352099f2310a43c163f168)
+ , NZ (F 0x1db52c53c2b2f23fa8366c0b101aab1e67a7edf6b833d3a06b867fc4ad23ec3398ca5dc92a18821f6c3595c3f0c823929275c32e918c2cdf8be51019bb5a70f980cde3ce21a9ba2) (F 0x048764a0bdba152ba8574fa87c9364790068c39edb48a7a67da6357b6f057b4deaa6f086cea3bcc5861351bc77f076f2d56b7b464bb8a1e9fa8d0c3d2e514a702f6a14522afc6b4)
+ , NZ (F 0x3ac0271c0670a3580320de9c16b540dc328f4e92ba7fda73ea7e324d30a41fa283734d0b9569c9b45466857ef84634fa46e178eb71d2579a05ad7bf92c5a9cff4b3117000095df4) (F 0x0ecd0510b9de90dd810dc2120cec126f92fcfa69b97e259bd59cb7bba690e221d0f07a4e43acae95fa333d7ab6fa7200b9b6eacf843cf3e523d9d3482d57df3f23efdbd55cae8d6)
+ , NZ (F 0x73e43c002b75c7a4a4d93e49a754c1e221e79bd2cb4204a318492637f36112a9502b2e98118456337c751d9a4095adF9cd80e9f8504524055b60545b7f2a4e41203dbeff36e0fb) (F 0x328495a6175c9700da2e76d59c80b65d06202a3ae0fff5ab0eb06ba6031a30a29d7a846a8e19b615b15a996aa883e6b8e9107dec94f59daaa541ebd06a89577Fb57edabc453ddd)
+ , NZ (F 0x1156a682ef64a1522a066b63389f0fadae4044b9f3F5b4307439c2867cfdcbc1ccd6ffd9ac2eba59cbb103571cbcf4fa1ac80ea3da683d146543225ff9685df780b0c7a7816a97) (F 0x434fc638e047abcdb92582ab47b8b4e41ce110f08248e460eaa8e72ca80cf48a312db80e5143d4513e5bce24d798e13b89ebf1cf14fdc431791880ddf13d8d06d5f522c6a8263ed)
+ , NZ (F 0x0a1cc99a2250bc566dfd190c12a101d97832e3ba8f2692b6ce51fb5c68d8604bf92c146a02e9461054ce0378d2cdf8afd3f201d23575c867b04465a6ec6285807a1d672b9631511) (F 0x4707c15da62c0aecfa76e70d92c8a473b6f4bb0a671323b34bdd0fc80190547b8a5f7b5ac1d6f6169271b87770aa100e2c271db5f6696bc400166fc3bb5a81df3b6d8c4749427c0)
+ , NZ (F 0x6288a3951452e5528074104b97fcb0adaab85ab3e74e2a14f5405b29c3d30084Fda236bafd981a19794dd83a3da847f456629dF8ec166ada2bfc183e1f18a24cea91f6b135faa) (F 0x1f179a306ee07b99d97fa2cd7751f8d29a994cc976a4f63422bf0b7f624360037585217a07a75ea7606b1cd64b46e3de3cee7af5cc133427c17a2faa4c36d03cce1465e5385b37c)
+ , NZ (F 0x75e86c8d781dd1cd96c992575c1132550eed0b2ec272682c1e38a66cd24c1553e927318052439fd2eb613e2548ba64cdce738aaca67ec9eba2a6882ceeef458aac36eadfc55e115) (F 0x51d3c8569b6a3ef24982caddf1f34f35db9481574ad0eb493c52c312addaedce6959632ccf46831f3685dfc63eb050637797a048da937eec8c90c1bb5d39630e28d7db3e1a3a616)
+ , NZ (F 0x33898307fb6fbd2f02e0fcf54a42cf7698f169a845521345fa97b2717287ee83c2d668f742577089b533a66c431ed1ec4ea7600b2b8c1bef0e725b23e584a600d1cf6bd58428158) (F 0x61220bc84633b9416f2de792f72a4b8b02b953001258bc09016aaaf9e25bd0b11a9c7723a602fb308f8d27c0F2c2a754ab1e0b413a2e2d361b901253bf90750fae2fadc718727b)
+ , NZ (F 0x65135b6a2732e5483bea9f2dd9419393197da38965dc2c78bf0e1189670e58216b987dc0462a599F7956ec000f79636ef5abbf6f47b0c55fab0a357f74781291da65c1462883a8) (F 0x65675cb8229cb6a04dbbd21dbc99952df4dc91ceb0ee5b747347df2fa9a9d5f4e79c7c9bd0d2c45f8658b7d66a391482badc5a6251e1a5c9d3daf659f367334a7a7d3988cbf477f)
+ , NZ (F 0x3467444a5d1c45959b22ce189325acbbF3ca3edab5175d0bf2a2f06d30bd5f6ac6229945cd4bbdaa2320257d172d66b0cbe1be188b9a59f15b9ca7449227dce5a9840e48c84e01) (F 0x2d484925b7550c182f02dc5274e30F4b56c6592afce7523f0895acab5dfdf76350a72390ff6fa4e368d9d6b4763acfFa3171e2a26c4c6bb75401732f8a1e17efa3c6de4dd80F)
+ , NZ (F 0x0d6781da1f70c0ca0fa410e6f0899b4ea0c47d59285b1df883d2f6ecf7139cac789b70a606c56c06b88b7acf2f9c9c34bfadf14df00a086ef0a53dda4c30047da0b26ed67a0a6F) (F 0x0646552538e32e98b7103118d1763e95b8f34e6F298a185c6eb9ca13a958cbd3c2ec37ef5ac043678e83cf33229eF6a219f51696d0aac00e136b83d90625d901b92c2649cb7cb)
+ , NZ (F 0x31e6f81edd6ad2dc707562a4ade661dace6e32675a01bee14cbed4f3eb285856340d046ce0672863850384839b0cfdf64635e5534d7a9db5a068938d67521cb5115cbfa9a4cd045) (F 0x2e208f01333b0dd205c7925f83bf1d7e56d1735a2da5d3900883dbe0b22cdde1f21d06179b0aad7c2ce3401a00c0ea7f55a999c456bf77b7679584db5e0b3e1d7a6253d13758d9c)
+ , NZ (F 0x121c2ce5665c81d109b91f631012472c1c22dea3b5d99c7dd1ad0683370c74967e647cbba4613ca97a354353a6bf194672effbd69df8d4f7c4831d1f52bf8e0464a822a56b2970f) (F 0x1fc2b608661087e7eecc452815db4e675396ce72d8160f0c8ce25112178e649399cc410110a97bb42ebb3f41185797db97afbF5097d99f6e30c3e113d34d4b74946e705f4aa128)
+ , NZ (F 0x2c897cf2767a245e48807d8af27bde6d6280df43c7e6800fdee0f4c03f3ca98e5c71159dc82018671dcb71cf039c2d7d259583022b8885ec82a66255704fa67c6c8d40617acc5ce) (F 0x173b84a48370a612bba01af96cfceff19c8f2368b3f24f8cac65a1e9d2de5b3427a28bb163a709ca120a62b0932cecae73e4a0c8e39678cF4790716254070c207cbb38379a2d56)
+ , NZ (F 0x5f82dFe9093c66405f8ab0b558f03cec040710496047ec20190cef43b52e89149bec4c8c800e0edd5793191f2178bbc6d54847c0c6466b388d43c88707f3058fbdbb422187dd97) (F 0x0b60e0ef6d27780cc47a415d15d51643e545816bdb0fa9102bc6edfadd92443f3429ffbb2d1331b71a888f11bacf5680b99419216096a0f2bedFc396a26a708a9c1e457c631067)
+ , NZ (F 0x3cd3476c6692ffdf6c2e5be56bb78f973d06405d5f7a5dae04b8220fa942fd8cae084b481a2c304fF897a915Fedb36af2ecf5246b847c0c535f3c2c8a6dc53e59825c1857a806) (F 0x7903aa449c8ad8b5b7497754ee146c81c73c550273283627b840bcff66f78bee549ef86a101ce1331ec2d658e0735f07f14e9ee887a181555b3fa93ae296383c60038dd6e21c2c1)
+ , NZ (F 0x4477939d8d18b7f04aee584e7d578976906216ec92fd8df89479a58eF19c91a2a4d085319ca9a83293ee5c88ead2a4722e813f9c5a8781fc1137b4210b857b2eF96c3fb9c6b3a) (F 0x073d04a9373b661bcb729b10536beb3c4af77e10ecf8142cd0d61c015acdd035ca95aaf2db6cd00e60f4d41e78229f9c61e87e1ace08f4c02e5cb02b1f46be5929f6dd5ab3ec0a0)
+ , NZ (F 0x06a0623a242da11c1Fce29c2f3924db45227585d9a91e415e87b145f2a5069379bc5466b5789eb8b54652188cd3536c91ac2e151b201cb0f7d1afF674253d3848734dc0626ce6) (F 0x1e075bf9c5b9ee8e61a97a2c494efdc37ee6581c9a58799a98de5e4f5817353c56b5397231a93b52b56626d21be6efda54347973dad055c76b6964d791bF92a72f96Fbf3e68a4)
+ , NZ (F 0x28eb5f962270e554ca71d5b26db5554650fbe6d4c129a47b9379ae52d4a1c45df8c746ef7e7ef7cdf512cb647c9b9645e5584f31794c9d44b2299dd56e5f795154ae7d620be84e5) (F 0x69ec24eb14c2a7063250c7b5263e4ed1e6ab315dc144d25559f5dc15690af24db7647cb1df8bb67b07cf08f442b5d1ccb00a150910cf8fcef8cb561ffd7e0e53b2a8f130b833658)
+ , NZ (F 0x586e5245095db75d43ac104e2b48b4d0Fb005ff002f25ea4ee3f006c3abf3764cd90a829a4cdd6076Ff57127e98a2b62f7305af2cdc776cd5d2fc6F6d5a2d609a38e18ffc7e8) (F 0x155528ce5ffb8f81a8291b9656b0ff93d5b0ae57e6da32231c92a81ee477e25399f06852241f497d04b4af730bd403a4a3ef46b6480d0010baf1ce3b4bad66f980a492f1511eae1)
+ , NZ (F 0x6d1f4c4b82ce435345223934e912b35fd9f33266a7be7b95970aabe6ca57e87082b77b762a1732d68ca09cac496395d95a4d0c426b08b3901ef1e878ea6e6d009e12a14c1bc7f9c) (F 0x5d6b51b3dc41dbdefb9c37fadf5760bb67ed052cd9560892bf1a3efc4b9f2cc0027f7699694c363789d2cd16b7a6fa875aa42b9b23980aaa28ccf312025ace274188eab3fdfbe88)
+ , NZ (F 0x0d112312ee88b90bfbef8fc5dc2867259f105aa43d57833337ffa2b98a0f28ba3a9200b36d29b85970a077a8dc4cc5d4f010ab8faa256649dbb7e82F35841e4096c47676dd5989) (F 0x66b5cbb08ca8667f942f4193ed11a2544069898e9d15c4cc165735f20ab5649bcb3560a29322216a72c875be7f91f5199b895adaa00adc3F0f596e97b222a4d9df72411b3e1e86)
+ ]
diff --git a/testsuite/tests/simplCore/should_compile/T3055.hs b/testsuite/tests/simplCore/should_compile/T3055.hs
new file mode 100644
index 0000000000..50853874db
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3055.hs
@@ -0,0 +1,9 @@
+
+module Foo where
+
+import Data.Bits
+
+-- This should be simplified away to -28
+int :: Int
+int = negate ((((((15 + 18 - 11) * 3) `quot` 2) `rem` 19) `shiftL` 3) `shiftR` 2)
+
diff --git a/testsuite/tests/simplCore/should_compile/T3055.stdout b/testsuite/tests/simplCore/should_compile/T3055.stdout
new file mode 100644
index 0000000000..2fe7a367a0
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3055.stdout
@@ -0,0 +1 @@
+I# (-28)
diff --git a/testsuite/tests/simplCore/should_compile/T3118.hs b/testsuite/tests/simplCore/should_compile/T3118.hs
new file mode 100644
index 0000000000..57b1ad0c92
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3118.hs
@@ -0,0 +1,40 @@
+-- Test Trac #3118
+
+-- The test is quite delicate. It aims to get 'f' to look like
+-- f y = case x of
+-- Red -> (y, y)
+-- _ -> let v = case x of
+-- Green -> 2
+-- Blue -> 3
+-- in (v, 5)
+--
+-- And now float the inner case to top level
+-- so that it's not so obvious that the Red case
+-- cannot occur. This crashed GHC 6.10.
+--
+-- It's delicate to make the bug show up
+-- (a) because it relies on not "seeing" that
+-- x = Red until later.
+-- (b) because dropping the Red case must happen
+-- before float-out, which itself happens v early
+
+-- In the original report, the x=Red was concealed by profiling
+
+module T3118 where
+
+data Colour = Red | Green | Blue
+
+
+{-# NOINLINE [0] f #-}
+g x = Red
+
+x = g True
+
+f :: Int -> (Int,Int)
+f y = case x of
+ Red -> (y, y)
+ xx -> let v = case xx of
+ Red -> 1
+ Green -> 2
+ Blue -> 3
+ in (v, 5)
diff --git a/testsuite/tests/simplCore/should_compile/T3234.hs b/testsuite/tests/simplCore/should_compile/T3234.hs
new file mode 100644
index 0000000000..7969bf60fa
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3234.hs
@@ -0,0 +1,8 @@
+-- Trac #3234
+-- Should give a use of foldr/single
+
+module Foo where
+
+x = ['x'] ++ "haskell"
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T3234.stderr b/testsuite/tests/simplCore/should_compile/T3234.stderr
new file mode 100644
index 0000000000..7aa09b7e4e
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3234.stderr
@@ -0,0 +1,69 @@
+
+==================== FloatOut stats: ====================
+1 Lets floated to top level; 0 Lets floated elsewhere; from 1 Lambda groups
+
+
+
+==================== FloatOut stats: ====================
+0 Lets floated to top level; 0 Lets floated elsewhere; from 0 Lambda groups
+
+
+
+==================== Grand total simplifier statistics ====================
+Total ticks: 45
+
+14 PreInlineUnconditionally
+ 1 n
+ 1 a1
+ 1 g
+ 1 xs
+ 1 ys
+ 1 k
+ 1 z
+ 1 x
+ 1 g
+ 1 h
+ 1 n
+ 1 a1
+ 1 lvl
+ 1 lvl
+2 PostInlineUnconditionally
+ 1 c
+ 1 c
+1 UnfoldingDone
+ 1 GHC.Base.build
+5 RuleFired
+ 1 ++
+ 1 augment/build
+ 1 foldr/single
+ 1 unpack
+ 1 unpack-list
+1 LetFloatFromLet
+ 1
+22 BetaReduction
+ 1 a1
+ 1 b
+ 1 a
+ 1 g
+ 1 a
+ 1 xs
+ 1 ys
+ 1 b
+ 1 c
+ 1 n
+ 1 a
+ 1 b
+ 1 k
+ 1 z
+ 1 x
+ 1 a
+ 1 g
+ 1 h
+ 1 b
+ 1 c
+ 1 n
+ 1 a1
+10 SimplifierDone
+ 10
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T3717.hs b/testsuite/tests/simplCore/should_compile/T3717.hs
new file mode 100644
index 0000000000..eab0540f13
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3717.hs
@@ -0,0 +1,10 @@
+-- This tests whether a supurious `seq` is eliminated
+
+-- The test output is -ddump-simpl with uniques suppressed,
+-- so it may wobble a bit and require updating
+
+module T3717 where
+
+foo :: Int -> Int
+foo 0 = 0
+foo n = (if n < 5 then 1 else 2) `seq` foo (n-1)
diff --git a/testsuite/tests/simplCore/should_compile/T3717.stderr b/testsuite/tests/simplCore/should_compile/T3717.stderr
new file mode 100644
index 0000000000..828f789bfd
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3717.stderr
@@ -0,0 +1,33 @@
+
+==================== Tidy Core ====================
+Rec {
+T3717.$wfoo [Occ=LoopBreaker] :: GHC.Prim.Int# -> GHC.Prim.Int#
+[GblId, Arity=1, Caf=NoCafRefs, Str=DmdType L]
+T3717.$wfoo =
+ \ (ww :: GHC.Prim.Int#) ->
+ case ww of ds {
+ __DEFAULT -> T3717.$wfoo (GHC.Prim.-# ds 1);
+ 0 -> 0
+ }
+end Rec }
+
+T3717.foo [InlPrag=INLINE[0]] :: GHC.Types.Int -> GHC.Types.Int
+[GblId,
+ Arity=1,
+ Caf=NoCafRefs,
+ Str=DmdType U(L)m,
+ Unf=Unf{Src=Worker=T3717.$wfoo, TopLvl=True, Arity=1, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
+ Tmpl= \ (w [Occ=Once!] :: GHC.Types.Int) ->
+ case w of _ { GHC.Types.I# ww [Occ=Once] ->
+ case T3717.$wfoo ww of ww1 { __DEFAULT -> GHC.Types.I# ww1 }
+ }}]
+T3717.foo =
+ \ (w :: GHC.Types.Int) ->
+ case w of _ { GHC.Types.I# ww ->
+ case T3717.$wfoo ww of ww1 { __DEFAULT -> GHC.Types.I# ww1 }
+ }
+
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T3717.stderr-ghc-7.0 b/testsuite/tests/simplCore/should_compile/T3717.stderr-ghc-7.0
new file mode 100644
index 0000000000..c7db559d6c
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3717.stderr-ghc-7.0
@@ -0,0 +1,47 @@
+
+==================== Tidy Core ====================
+lvl :: GHC.Integer.Type.Integer
+[GblId, Caf=NoCafRefs, Str=DmdType]
+lvl = GHC.Integer.Type.S# 1
+
+lvl1 :: GHC.Integer.Type.Integer
+[GblId, Caf=NoCafRefs, Str=DmdType]
+lvl1 = GHC.Integer.Type.S# 2
+
+Rec {
+T3717.$wfoo [Occ=LoopBreaker] :: GHC.Prim.Int# -> GHC.Prim.Int#
+[GblId, Arity=1, Caf=NoCafRefs, Str=DmdType L]
+T3717.$wfoo =
+ \ (ww :: GHC.Prim.Int#) ->
+ case ww of ds {
+ __DEFAULT ->
+ case case GHC.Prim.<# ds 5 of _ {
+ GHC.Bool.False -> lvl1; GHC.Bool.True -> lvl
+ }
+ of _ { __DEFAULT ->
+ T3717.$wfoo (GHC.Prim.-# ds 1)
+ };
+ 0 -> 0
+ }
+end Rec }
+
+T3717.foo [InlPrag=INLINE[0]] :: GHC.Types.Int -> GHC.Types.Int
+[GblId,
+ Arity=1,
+ Caf=NoCafRefs,
+ Str=DmdType U(L)m,
+ Unf=Unf{Src=Worker=T3717.$wfoo, TopLvl=True, Arity=1, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
+ Tmpl= \ (w [Occ=Once!] :: GHC.Types.Int) ->
+ case w of _ { GHC.Types.I# ww [Occ=Once] ->
+ case T3717.$wfoo ww of ww1 { __DEFAULT -> GHC.Types.I# ww1 }
+ }}]
+T3717.foo =
+ \ (w :: GHC.Types.Int) ->
+ case w of _ { GHC.Types.I# ww ->
+ case T3717.$wfoo ww of ww1 { __DEFAULT -> GHC.Types.I# ww1 }
+ }
+
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T3772.hs b/testsuite/tests/simplCore/should_compile/T3772.hs
new file mode 100644
index 0000000000..588337d241
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3772.hs
@@ -0,0 +1,21 @@
+{-# OPTIONS_GHC -ddump-simpl #-}
+module T3772 where
+
+import T3772_A
+
+foo :: Int -> ()
+{-# NOINLINE foo #-}
+foo n = apply n (id :: [Double] -> [Double])
+
+-- = apply [Double] [Double] d1 d2 (id :: [Double] -> [Double]) =
+-- deepSeq d2 (id (gen d1 n)) () = deepSeq d2 (gen d1 n) () = d2 |> co
+-- (gen d1 n) () =
+
+
+-- where d2 :: DeepSeq [Double]
+-- d2 = df d3
+--
+-- d3 :: DeepSeq Double
+
+-- d1 :: C [Double]
+-- d1 = df' d3
diff --git a/testsuite/tests/simplCore/should_compile/T3772.stdout b/testsuite/tests/simplCore/should_compile/T3772.stdout
new file mode 100644
index 0000000000..f3bccb5426
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3772.stdout
@@ -0,0 +1,26 @@
+
+==================== Tidy Core ====================
+Rec {
+xs :: GHC.Prim.Int# -> ()
+[GblId, Arity=1, Caf=NoCafRefs, Str=DmdType L]
+xs =
+ \ (m :: GHC.Prim.Int#) ->
+ case GHC.Prim.<=# m 1 of _ {
+ GHC.Types.False -> xs (GHC.Prim.-# m 1);
+ GHC.Types.True -> GHC.Unit.()
+ }
+end Rec }
+
+T3772.foo [InlPrag=NOINLINE] :: GHC.Types.Int -> ()
+[GblId, Arity=1, Caf=NoCafRefs, Str=DmdType U(L)]
+T3772.foo =
+ \ (n :: GHC.Types.Int) ->
+ case n of _ { GHC.Types.I# n# ->
+ case GHC.Prim.<=# n# 0 of _ {
+ GHC.Types.False -> xs n#;
+ GHC.Types.True -> GHC.Unit.()
+ }
+ }
+
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T3772.stdout-ghc-7.0 b/testsuite/tests/simplCore/should_compile/T3772.stdout-ghc-7.0
new file mode 100644
index 0000000000..c226e09309
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3772.stdout-ghc-7.0
@@ -0,0 +1,25 @@
+
+==================== Tidy Core ====================
+Rec {
+xs :: GHC.Prim.Int# -> ()
+[GblId, Arity=1, Caf=NoCafRefs, Str=DmdType L]
+xs =
+ \ (m :: GHC.Prim.Int#) ->
+ case GHC.Prim.<=# m 1 of _ {
+ GHC.Bool.False -> xs (GHC.Prim.-# m 1);
+ GHC.Bool.True -> GHC.Unit.()
+ }
+end Rec }
+
+T3772.foo [InlPrag=NOINLINE] :: GHC.Types.Int -> ()
+[GblId, Arity=1, Caf=NoCafRefs, Str=DmdType U(L)]
+T3772.foo =
+ \ (n :: GHC.Types.Int) ->
+ case n of _ { GHC.Types.I# n# ->
+ case GHC.Prim.<=# n# 0 of _ {
+ GHC.Bool.False -> xs n#; GHC.Bool.True -> GHC.Unit.()
+ }
+ }
+
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T3772_A.hs b/testsuite/tests/simplCore/should_compile/T3772_A.hs
new file mode 100644
index 0000000000..e6b57c98b3
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3772_A.hs
@@ -0,0 +1,48 @@
+
+
+module T3772_A where
+
+class DeepSeq a => C a where
+-- class C a where
+ gen :: Int -> a
+
+instance C Double where
+ gen = fromIntegral
+
+instance C a => C [a] where
+ {-# INLINE gen #-}
+ gen n = replicate n (gen n)
+
+class DeepSeq a where
+ deepSeq :: a -> b -> b
+
+instance DeepSeq Double where
+ deepSeq = seq
+
+instance DeepSeq a => DeepSeq [a] where
+ {-# INLINE deepSeq #-}
+ deepSeq xs b = foldr deepSeq b xs
+
+apply :: (C a, DeepSeq b) => Int -> (a -> b) -> ()
+{-# INLINE apply #-}
+apply n f = f (gen n) `deepSeq` ()
+
+
+{-
+$cdeepSeq :: DeepSeq a -> [a] -> b -> b
+-- User INLINE( 3 args )!
+$cdeepSeq a (d:DS a) b (x:[a]) (y:b) = ...
+
+$fDeepSeq[] :: DeepSeq a -> DeepSeq [a]
+-- DFun (with auto INLINE pragma)
+$fDeepSeq[] a d = $cdeepSeq a d |> blah
+
+$cp1 a d :: C a => DeepSep [a]
+-- We don't want to eta-expand this, lest
+-- $cdeepSeq gets inlined in it!
+$cp1 a d = $fDeepSep[] a (scsel a d)
+
+$fC[] :: C a => C [a]
+-- DFun
+$fC[] a d = MkC ($cp1 a d) ($cgen a d)
+-} \ No newline at end of file
diff --git a/testsuite/tests/simplCore/should_compile/T3831.hs b/testsuite/tests/simplCore/should_compile/T3831.hs
new file mode 100644
index 0000000000..55b4d08f3a
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T3831.hs
@@ -0,0 +1,107 @@
+{-# LANGUAGE ScopedTypeVariables, FlexibleInstances #-}
+
+-- This test has a deep nest of join points, which led to
+-- an exponential blow-up in SpecConstr
+
+module T3831(setAttributes) where
+
+import Data.Monoid
+import Control.Monad
+
+class (Monoid s, OutputCap s) => TermStr s
+
+class OutputCap f where
+ outputCap :: ([Int] -> String) -> [Int] -> f
+ outputCap = error "urk"
+
+instance OutputCap [Char] where
+instance (Enum p, OutputCap f) => OutputCap (p -> f) where
+
+instance MonadPlus Capability where
+ mzero = Capability (const $ return Nothing)
+ Capability f `mplus` Capability g = Capability $ \t -> do
+ mx <- f t
+ case mx of
+ Nothing -> g t
+ _ -> return mx
+
+instance Monad Capability where
+ return = Capability . const . return . Just
+ Capability f >>= g = Capability $ \t -> do
+ mx <- f t
+ case mx of
+ Nothing -> return Nothing
+ Just x -> let Capability g' = g x in g' t
+
+newtype Capability a = Capability (() -> IO (Maybe a))
+
+tiGetOutput1 :: forall f . OutputCap f => String -> Capability f
+{-# NOINLINE tiGetOutput1 #-}
+tiGetOutput1 _ = return (outputCap (const "") [])
+
+enterStandoutMode :: TermStr s => Capability s
+enterStandoutMode = tiGetOutput1 "smso"
+
+enterUnderlineMode :: TermStr s => Capability s
+enterUnderlineMode = tiGetOutput1 "smul"
+
+reverseOn :: TermStr s => Capability s
+reverseOn = tiGetOutput1 "rev"
+
+blinkOn:: TermStr s => Capability s
+blinkOn = tiGetOutput1 "blink"
+
+boldOn :: TermStr s => Capability s
+boldOn = tiGetOutput1 "bold"
+
+dimOn :: TermStr s => Capability s
+dimOn = tiGetOutput1 "dim"
+
+invisibleOn :: TermStr s => Capability s
+invisibleOn = tiGetOutput1 "invis"
+
+protectedOn :: TermStr s => Capability s
+protectedOn = tiGetOutput1 "prot"
+
+data Attributes = Attributes {
+ standoutAttr,
+ underlineAttr,
+ reverseAttr,
+ blinkAttr,
+ dimAttr,
+ boldAttr,
+ invisibleAttr,
+ protectedAttr :: Bool
+ }
+
+setAttributes :: TermStr s => Capability (Attributes -> s)
+setAttributes = usingSGR0 `mplus` manualSets
+ where
+ usingSGR0 = do
+ sgr <- tiGetOutput1 "sgr"
+ return $ \a -> let mkAttr f = if f a then 1 else 0 :: Int
+ in sgr (mkAttr standoutAttr)
+ (mkAttr underlineAttr)
+ (mkAttr reverseAttr)
+ (mkAttr blinkAttr)
+ (mkAttr dimAttr)
+ (mkAttr boldAttr)
+ (mkAttr invisibleAttr)
+ (mkAttr protectedAttr)
+ (0::Int)
+ attrCap :: TermStr s => (Attributes -> Bool) -> Capability s
+ -> Capability (Attributes -> s)
+ attrCap f cap = do {to <- cap; return $ \a -> if f a then to else mempty}
+ `mplus` return (const mempty)
+ manualSets = do
+ cs <- sequence [attrCap standoutAttr enterStandoutMode
+ , attrCap underlineAttr enterUnderlineMode
+ , attrCap reverseAttr reverseOn
+ , attrCap blinkAttr blinkOn
+ , attrCap boldAttr boldOn
+ , attrCap dimAttr dimOn
+ , attrCap invisibleAttr invisibleOn
+ , attrCap protectedAttr protectedOn
+ ]
+ return $ \a -> mconcat $ map ($ a) cs
+
diff --git a/testsuite/tests/simplCore/should_compile/T4201.hs b/testsuite/tests/simplCore/should_compile/T4201.hs
new file mode 100644
index 0000000000..dfebd0534e
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4201.hs
@@ -0,0 +1,15 @@
+module Eta where
+
+data T = MkT
+newtype Foo = Foo T
+
+lift :: Foo -> T
+lift (Foo x) = bof x
+ -- The point is that we expect
+ -- lift = bof |> co
+ -- not
+ -- lift = \fx -> bof (fx |> co)
+
+bof :: T -> T
+{-# NOINLINE bof #-}
+bof MkT = MkT
diff --git a/testsuite/tests/simplCore/should_compile/T4201.stdout b/testsuite/tests/simplCore/should_compile/T4201.stdout
new file mode 100644
index 0000000000..0009de14cc
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4201.stdout
@@ -0,0 +1 @@
+ ((->) (Sym (Eta.NTCo:Foo)) (Refl Eta.T))) -}
diff --git a/testsuite/tests/simplCore/should_compile/T4203.hs b/testsuite/tests/simplCore/should_compile/T4203.hs
new file mode 100644
index 0000000000..9423de7a36
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4203.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+
+-- Triggered a lint error due to the specialiser
+
+module T4203 where
+
+
+newtype NonNegative a = NonNegative a
+ deriving (Eq, Num, Show)
+
+instance Num a => Arbitrary (NonNegative a) where
+ arbitrary = return (rubble (rubble 0))
+ coarbitrary = error "urk"
+
+rubble :: Num a => a -> a
+rubble 0 = 1
+rubble n = n * rubble (n-1)
+
+newtype EmptyStackSet = EmptyStackSet (NonNegative Int)
+
+instance Arbitrary EmptyStackSet where
+ arbitrary = do
+ x <- arbitrary :: Gen (NonNegative Int)
+ return $ EmptyStackSet x
+ coarbitrary = error "urk"
+
+newtype Gen a = Gen a
+
+instance Monad Gen where
+ return a = Gen a
+ Gen m >>= k = Gen (let Gen m' = k m in m')
+
+class Arbitrary a where
+ arbitrary :: Gen a
+ coarbitrary :: a
+
+data StackSet = StackSet
diff --git a/testsuite/tests/simplCore/should_compile/T4306.hs b/testsuite/tests/simplCore/should_compile/T4306.hs
new file mode 100644
index 0000000000..ba32981f61
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4306.hs
@@ -0,0 +1,12 @@
+-- Trac #4306
+-- Check that the worker for 'upd' has only one argument
+
+module T4306 where
+
+data D = D {-# UNPACK #-} !Double {-# UNPACK #-} !Double
+data UPD = UPD {-# UNPACK #-} !Double D
+
+upd (UPD _ (D x _)) = sqrt $! (x*x + x*x + sin x + x*x + x*x + cos x + x*x + x*x + tan x +
+ x*x + x*x + sin x + x*x + x*x + cos x + x*x + x*x + tan x +
+ x*x + x*x + sin x + x*x + x*x + cos x + x*x + x*x + tan x)
+ -- make the rhs large enough to be worker/wrapperred
diff --git a/testsuite/tests/simplCore/should_compile/T4306.stdout b/testsuite/tests/simplCore/should_compile/T4306.stdout
new file mode 100644
index 0000000000..b2a93ff1cc
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4306.stdout
@@ -0,0 +1 @@
+ $wupd :: GHC.Prim.Double# -> GHC.Prim.Double#
diff --git a/testsuite/tests/simplCore/should_compile/T4345.hs b/testsuite/tests/simplCore/should_compile/T4345.hs
new file mode 100644
index 0000000000..0a0dada9cb
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4345.hs
@@ -0,0 +1,16 @@
+-- This one elicited a bug in the simplifier
+-- that produces a Lint out-of-scope error
+
+module T4345 where
+
+isNull :: IO Bool
+isNull = error "urk"
+
+wrapMatchAll :: IO (Maybe ())
+wrapMatchAll = do
+ nsub <- undefined
+ let loop True = do atEnd <- isNull
+ return Nothing
+ loop False = loop False
+ result <- undefined
+ loop undefined
diff --git a/testsuite/tests/simplCore/should_compile/T4398.hs b/testsuite/tests/simplCore/should_compile/T4398.hs
new file mode 100644
index 0000000000..3cb0647c1c
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4398.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE FlexibleContexts #-}
+
+module T4398 where
+
+{-# RULES "suspicious" forall (x :: a) y. f (x :: Ord a => a) y = g x y #-}
+
+{-# NOINLINE f #-}
+f :: a -> a -> Bool
+f x y = True
+
+g :: Ord a => a -> a -> Bool
+g = (<)
+
diff --git a/testsuite/tests/simplCore/should_compile/T4398.stderr b/testsuite/tests/simplCore/should_compile/T4398.stderr
new file mode 100644
index 0000000000..ab17c8a4e9
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4398.stderr
@@ -0,0 +1,4 @@
+
+T4398.hs:5:11:
+ Warning: Forall'd constraint `Ord a' is not bound in RULE lhs
+ f @ a x y
diff --git a/testsuite/tests/simplCore/should_compile/T4903.hs b/testsuite/tests/simplCore/should_compile/T4903.hs
new file mode 100644
index 0000000000..70250d1d14
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4903.hs
@@ -0,0 +1,10 @@
+module T4903 where
+
+import T4903a
+
+{-# SPECIALIZE eq :: TreeF Tree -> Tree -> Bool #-}
+-- The pragma is only problematic if it is in a separate module
+
+f :: Bool
+-- If we don't use eq, there is no problem
+f = eq Tree tree
diff --git a/testsuite/tests/simplCore/should_compile/T4903a.hs b/testsuite/tests/simplCore/should_compile/T4903a.hs
new file mode 100644
index 0000000000..e78859c55f
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4903a.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE TypeFamilies #-}
+
+module T4903a where
+
+class El phi ix where
+ proof :: phi ix
+
+class Fam phi where
+ from :: phi ix -> ix -> PF phi I0 ix
+
+type family PF phi :: (* -> *) -> * -> *
+
+data I0 a = I0 a
+
+data I xi (r :: * -> *) ix = I (r xi)
+data (f :*: g) (r :: * -> *) ix = f r ix :*: g r ix
+
+class HEq phi f where
+ heq :: (forall ix. phi ix -> r ix -> Bool)
+ -> phi ix -> f r ix -> Bool
+
+instance El phi xi => HEq phi (I xi) where
+ -- Replacing proof by undefined solves the problem
+ heq eq _ (I x) = eq proof x
+
+instance (HEq phi f, HEq phi g) => HEq phi (f :*: g) where
+ -- The problem only arises when there are two calls to heq here
+ heq eq p (x :*: y) = heq eq p x && heq eq p y
+
+
+{-# INLINABLE eq #-}
+eq :: (Fam phi, HEq phi (PF phi)) => phi ix -> ix -> Bool
+eq p x = heq (\p (I0 x) -> eq p x) p (from p x)
+
+
+data Tree = Bin Tree Tree
+
+tree :: Tree
+-- The problem only occurs on an inifite (or very large) structure
+tree = Bin tree tree
+
+data TreeF :: * -> * where Tree :: TreeF Tree
+
+type instance PF TreeF = I Tree :*: I Tree
+-- If the representation is only |I Tree| then there is no problem
+
+instance Fam TreeF where
+ from Tree (Bin l r) = I (I0 l) :*: I (I0 r)
+
+instance El TreeF Tree where proof = Tree
diff --git a/testsuite/tests/simplCore/should_compile/T4908.hs b/testsuite/tests/simplCore/should_compile/T4908.hs
new file mode 100644
index 0000000000..78634e72bb
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4908.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE MagicHash #-}
+
+module T4908 where
+import GHC.Base
+
+f :: Int -> (Int,Int) -> Bool
+f 0 x = True
+f n x = case x of (a,b) -> case b of
+ I# 0# -> True
+ I# _ -> f (n-1) x
diff --git a/testsuite/tests/simplCore/should_compile/T4908.stderr b/testsuite/tests/simplCore/should_compile/T4908.stderr
new file mode 100644
index 0000000000..9e24e6fca8
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4908.stderr
@@ -0,0 +1,73 @@
+
+==================== Tidy Core ====================
+Rec {
+T4908.f_$s$wf [Occ=LoopBreaker]
+ :: GHC.Types.Int
+ -> GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.Types.Bool
+[GblId, Arity=3, Caf=NoCafRefs, Str=DmdType LLL]
+T4908.f_$s$wf =
+ \ (sc :: GHC.Types.Int)
+ (sc1 :: GHC.Prim.Int#)
+ (sc2 :: GHC.Prim.Int#) ->
+ case sc2 of ds {
+ __DEFAULT ->
+ case sc1 of ds1 {
+ __DEFAULT -> T4908.f_$s$wf sc ds1 (GHC.Prim.-# ds 1);
+ 0 -> GHC.Types.True
+ };
+ 0 -> GHC.Types.True
+ }
+end Rec }
+
+T4908.$wf
+ :: GHC.Prim.Int#
+ -> (GHC.Types.Int, GHC.Types.Int) -> GHC.Types.Bool
+[GblId,
+ Arity=2,
+ Caf=NoCafRefs,
+ Str=DmdType LL,
+ Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=2, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=IF_ARGS [30 20] 101 20}]
+T4908.$wf =
+ \ (ww :: GHC.Prim.Int#) (w :: (GHC.Types.Int, GHC.Types.Int)) ->
+ case ww of ds {
+ __DEFAULT ->
+ case w of _ { (a, b) ->
+ case b of _ { GHC.Types.I# ds1 ->
+ case ds1 of ds2 {
+ __DEFAULT -> T4908.f_$s$wf a ds2 (GHC.Prim.-# ds 1);
+ 0 -> GHC.Types.True
+ }
+ }
+ };
+ 0 -> GHC.Types.True
+ }
+
+T4908.f [InlPrag=INLINE[0]]
+ :: GHC.Types.Int
+ -> (GHC.Types.Int, GHC.Types.Int) -> GHC.Types.Bool
+[GblId,
+ Arity=2,
+ Caf=NoCafRefs,
+ Str=DmdType U(L)L,
+ Unf=Unf{Src=Worker=T4908.$wf, TopLvl=True, Arity=2, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
+ Tmpl= \ (w [Occ=Once!] :: GHC.Types.Int)
+ (w1 [Occ=Once] :: (GHC.Types.Int, GHC.Types.Int)) ->
+ case w of _ { GHC.Types.I# ww [Occ=Once] -> T4908.$wf ww w1 }}]
+T4908.f =
+ \ (w :: GHC.Types.Int) (w1 :: (GHC.Types.Int, GHC.Types.Int)) ->
+ case w of _ { GHC.Types.I# ww -> T4908.$wf ww w1 }
+
+
+------ Local rules for imported ids --------
+"SC:$wf0" [ALWAYS]
+ forall (sc :: GHC.Types.Int)
+ (sc1 :: GHC.Prim.Int#)
+ (sc2 :: GHC.Prim.Int#).
+ T4908.$wf sc2 (sc, GHC.Types.I# sc1)
+ = T4908.f_$s$wf sc sc1 sc2
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T4908.stderr-ghc-7.0 b/testsuite/tests/simplCore/should_compile/T4908.stderr-ghc-7.0
new file mode 100644
index 0000000000..44e691547e
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4908.stderr-ghc-7.0
@@ -0,0 +1,77 @@
+
+==================== Tidy Core ====================
+Rec {
+T4908.f_$s$wf [Occ=LoopBreaker]
+ :: GHC.Types.Int
+ -> GHC.Prim.Int#
+ -> GHC.Prim.Int#
+ -> GHC.Bool.Bool
+[GblId, Arity=3, Caf=NoCafRefs, Str=DmdType LLL]
+T4908.f_$s$wf =
+ \ (sc :: GHC.Types.Int)
+ (sc1 :: GHC.Prim.Int#)
+ (sc2 :: GHC.Prim.Int#) ->
+ case sc2 of ds {
+ __DEFAULT ->
+ case sc1 of ds1 {
+ __DEFAULT -> T4908.f_$s$wf sc ds1 (GHC.Prim.-# ds 1);
+ 0 -> GHC.Bool.True
+ };
+ 0 -> GHC.Bool.True
+ }
+end Rec }
+
+T4908.$wf
+ :: GHC.Prim.Int#
+ -> (GHC.Types.Int, GHC.Types.Int)
+ -> GHC.Bool.Bool
+[GblId,
+ Arity=2,
+ Caf=NoCafRefs,
+ Str=DmdType LL,
+ Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=2, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=IF_ARGS [3 2] 11 2}]
+T4908.$wf =
+ \ (ww :: GHC.Prim.Int#) (w :: (GHC.Types.Int, GHC.Types.Int)) ->
+ case ww of ds {
+ __DEFAULT ->
+ case w of _ { (a, b) ->
+ case b of _ { GHC.Types.I# ds1 ->
+ case ds1 of ds2 {
+ __DEFAULT -> T4908.f_$s$wf a ds2 (GHC.Prim.-# ds 1);
+ 0 -> GHC.Bool.True
+ }
+ }
+ };
+ 0 -> GHC.Bool.True
+ }
+
+T4908.f [InlPrag=INLINE[0]]
+ :: GHC.Types.Int
+ -> (GHC.Types.Int, GHC.Types.Int)
+ -> GHC.Bool.Bool
+[GblId,
+ Arity=2,
+ Caf=NoCafRefs,
+ Str=DmdType U(L)L,
+ Unf=Unf{Src=Worker=T4908.$wf, TopLvl=True, Arity=2, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
+ Tmpl= \ (w [Occ=Once!] :: GHC.Types.Int)
+ (w1 [Occ=Once] :: (GHC.Types.Int, GHC.Types.Int)) ->
+ case w of _ { GHC.Types.I# ww [Occ=Once] -> T4908.$wf ww w1 }}]
+T4908.f =
+ \ (w :: GHC.Types.Int) (w1 :: (GHC.Types.Int, GHC.Types.Int)) ->
+ case w of _ { GHC.Types.I# ww -> T4908.$wf ww w1 }
+
+
+------ Local rules for imported ids --------
+"SC:$wf0" [ALWAYS]
+ forall {sc :: GHC.Types.Int
+ sc1 :: GHC.Prim.Int#
+ sc2 :: GHC.Prim.Int#}
+ T4908.$wf sc2 (sc, GHC.Types.I# sc1)
+ = T4908.f_$s$wf sc sc1 sc2
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T4918.hs b/testsuite/tests/simplCore/should_compile/T4918.hs
new file mode 100644
index 0000000000..ea5efade29
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4918.hs
@@ -0,0 +1,6 @@
+module T4918 where
+
+import T4918a
+
+f1 = map (\() -> 'p') [()]
+f2 = map (\() -> 'q') myEnum
diff --git a/testsuite/tests/simplCore/should_compile/T4918.stdout b/testsuite/tests/simplCore/should_compile/T4918.stdout
new file mode 100644
index 0000000000..c79b116f03
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4918.stdout
@@ -0,0 +1,2 @@
+ {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.C# 'p') -}
+ {- HasNoCafRefs, Strictness: m, Unfolding: (GHC.Types.C# 'q') -}
diff --git a/testsuite/tests/simplCore/should_compile/T4918a.hs b/testsuite/tests/simplCore/should_compile/T4918a.hs
new file mode 100644
index 0000000000..5db7cb00b8
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4918a.hs
@@ -0,0 +1,8 @@
+module T4918a where
+
+class MyEnum a where
+ myEnum :: [a]
+
+instance MyEnum () where
+ myEnum = [()]
+
diff --git a/testsuite/tests/simplCore/should_compile/T4930.hs b/testsuite/tests/simplCore/should_compile/T4930.hs
new file mode 100644
index 0000000000..ae5d4fd5f7
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4930.hs
@@ -0,0 +1,5 @@
+module T4930 where
+
+foo :: Int -> Int
+foo n = (if n < 5 then error "Too small" else n+2)
+ `seq` n+5
diff --git a/testsuite/tests/simplCore/should_compile/T4930.stderr b/testsuite/tests/simplCore/should_compile/T4930.stderr
new file mode 100644
index 0000000000..bb1637cb82
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4930.stderr
@@ -0,0 +1,35 @@
+
+==================== Tidy Core ====================
+lvl :: [GHC.Types.Char]
+[GblId]
+lvl = GHC.CString.unpackCString# "Too small"
+
+T4930.foo1 :: GHC.Types.Int
+[GblId, Str=DmdType b]
+T4930.foo1 = GHC.Err.error @ GHC.Types.Int lvl
+
+T4930.foo :: GHC.Types.Int -> GHC.Types.Int
+[GblId,
+ Arity=1,
+ Str=DmdType U(L)m,
+ Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
+ Tmpl= \ (n [Occ=Once!] :: GHC.Types.Int) ->
+ case n of _ { GHC.Types.I# x ->
+ case GHC.Prim.<# x 5 of _ {
+ GHC.Types.False -> GHC.Types.I# (GHC.Prim.+# x 5);
+ GHC.Types.True -> T4930.foo1
+ }
+ }}]
+T4930.foo =
+ \ (n :: GHC.Types.Int) ->
+ case n of _ { GHC.Types.I# x ->
+ case GHC.Prim.<# x 5 of _ {
+ GHC.Types.False -> GHC.Types.I# (GHC.Prim.+# x 5);
+ GHC.Types.True -> T4930.foo1
+ }
+ }
+
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T4945.hs b/testsuite/tests/simplCore/should_compile/T4945.hs
new file mode 100644
index 0000000000..fba6e61ad6
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4945.hs
@@ -0,0 +1,30 @@
+module Main where
+
+import Data.Int
+import Data.Array.Base
+import Data.Array.ST
+import Control.Monad.ST
+import System.Environment
+
+main :: IO ()
+main = do
+ [_nr, _len] <- getArgs
+ let nRounds = read _nr :: Int
+ len = read _len :: Int
+ stToIO $ do
+ arr <- newArray (1, len) 0
+
+ let spin :: STUArray s Int Int -> Int -> Int -> Int -> ST s ()
+ spin _ r i n | i > n = return ()
+ spin arr r i n = do x <- unsafeRead arr i
+ unsafeWrite arr i $ x + r
+ spin arr r (i + 1) n
+
+ loop :: STUArray s Int Int -> Int -> ST s ()
+ loop _ r | r > nRounds = return ()
+ loop arr r = do
+ k <- getNumElements arr
+ spin arr r 0 (k - 1)
+ loop arr (r + 1)
+
+ loop arr 1
diff --git a/testsuite/tests/simplCore/should_compile/T4957.hs b/testsuite/tests/simplCore/should_compile/T4957.hs
new file mode 100644
index 0000000000..63086cd78d
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T4957.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE MagicHash #-}
+module T4957 where
+
+import GHC.Base
+
+f :: Bool -> Int -> Int
+f b 0 = 0
+f b x = let y = case b of
+ True -> case f b (x-1) of
+ I# v -> I# (v -# 1#)
+ False -> case f b (x-1) of
+ I# v -> I# (v +# 1#)
+ in
+ case b of
+ True -> case y of
+ I# w -> I# (w -# 1#)
+
+ False -> case y of
+ I# w -> I# (w +# 1#)
diff --git a/testsuite/tests/simplCore/should_compile/T5168.hs b/testsuite/tests/simplCore/should_compile/T5168.hs
new file mode 100644
index 0000000000..22b4349fa2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T5168.hs
@@ -0,0 +1,32 @@
+-- In this test we do -ddump-simpl, and grep for 'patError.
+-- We expect *not* to see patError in the output
+-- because the branch is inaccessible.
+-- In GHC 7.0 and earlier, we did get a patError in the output program.
+
+{-# LANGUAGE TypeFamilies, GADTs #-}
+module NoMatch where
+
+data Tag
+data TagExtra
+
+--------
+
+data Foo a where
+ Foo :: String -> Foo a
+ FooExtra :: Int -> Foo TagExtra
+
+-- The cmm code for fooName does not match against 'FooExtra'
+fooName :: Foo Tag -> String
+fooName (Foo s) = s
+
+--------
+
+data Bar a where
+ Bar :: String -> Bar a
+ BarExtra :: a ~ TagExtra => Int -> Bar a
+
+-- The cmm code for barName will try to pattern-match against 'BarExtra'
+barName :: Bar Tag -> String
+barName (Bar s) = s
+
+
diff --git a/testsuite/tests/simplCore/should_compile/T5329.hs b/testsuite/tests/simplCore/should_compile/T5329.hs
new file mode 100644
index 0000000000..cf659110ca
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T5329.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE UnicodeSyntax #-}
+{-# LANGUAGE EmptyDataDecls #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+
+module T5329 where
+
+data PZero
+data PSucc p
+
+data Peano n where
+ PZero ∷ Peano PZero
+ PSucc ∷ IsPeano p ⇒ Peano p → Peano (PSucc p)
+
+class IsPeano n where
+ peano ∷ Peano n
+
+instance IsPeano PZero where
+ peano = PZero
+
+instance IsPeano p ⇒ IsPeano (PSucc p) where
+ peano = PSucc peano
+
+class (n ~ PSucc (PPred n)) ⇒ PHasPred n where
+ type PPred n
+
+instance PHasPred (PSucc p) where
+ type PPred (PSucc p) = p
+
+pPred ∷ Peano (PSucc p) → Peano p
+pPred (PSucc p) = p
+
+infixl 6 :+:
+
+class (IsPeano n, IsPeano m, IsPeano (n :+: m), (n :+: m) ~ (m :+: n))
+ ⇒ PAdd n m where
+ type n :+: m
+
+instance PAdd PZero PZero where
+ type PZero :+: PZero = PZero
+
+instance IsPeano p ⇒ PAdd PZero (PSucc p) where
+ type PZero :+: (PSucc p) = PSucc p
+
+instance IsPeano p ⇒ PAdd (PSucc p) PZero where
+ type (PSucc p) :+: PZero = PSucc p
+
+instance (IsPeano n, IsPeano m, PAdd n m) ⇒ PAdd (PSucc n) (PSucc m) where
+ type (PSucc n) :+: (PSucc m) = PSucc (PSucc (n :+: m))
+
+data PAddResult n m r where
+ PAddResult ∷ (PAdd n m, PAdd m n, (n :+: m) ~ r)
+ ⇒ PAddResult n m r
+
+pAddLeftZero ∷ ∀ n . IsPeano n ⇒ PAddResult PZero n n
+pAddLeftZero = case peano ∷ Peano n of
+ PZero → PAddResult
+ PSucc _ → PAddResult
+
+pAddRightZero ∷ ∀ n . IsPeano n ⇒ PAddResult n PZero n
+pAddRightZero = case peano ∷ Peano n of
+ PZero → PAddResult
+ PSucc _ → PAddResult
+
+data PAddSucc n m where
+ PAddSucc ∷ (PAdd n m, PAdd m n,
+ PAdd (PSucc n) m, PAdd m (PSucc n),
+ PAdd n (PSucc m), PAdd (PSucc m) n,
+ (PSucc n :+: m) ~ PSucc (n :+: m),
+ (n :+: PSucc m) ~ PSucc (n :+: m))
+ ⇒ PAddSucc n m
+
+pAddSucc ∷ ∀ n m . (IsPeano n, IsPeano m) ⇒ PAddSucc n m
+pAddSucc = case (peano ∷ Peano n, peano ∷ Peano m) of
+ (PZero, PZero) → PAddSucc
+ (PZero, PSucc _) → case pAddLeftZero ∷ PAddResult n (PPred m) (PPred m) of
+ PAddResult → PAddSucc
+ (PSucc _, PZero) → case pAddRightZero ∷ PAddResult (PPred n) m (PPred n) of
+ PAddResult → PAddSucc
+ (PSucc _, PSucc _) → case pAddSucc ∷ PAddSucc (PPred n) (PPred m) of
+ PAddSucc → PAddSucc
+
+data PAdd2 n m where
+ PAdd2 ∷ (PAdd n m, PAdd m n) ⇒ PAdd2 n m
+
+pAdd2 ∷ ∀ n m . (IsPeano n, IsPeano m) ⇒ PAdd2 n m
+pAdd2 = case (peano ∷ Peano n, peano ∷ Peano m) of
+ (PZero, PZero) → PAdd2
+ (PZero, PSucc _) → PAdd2
+ (PSucc _, PZero) → PAdd2
+ (PSucc _, PSucc _) → case pAdd2 ∷ PAdd2 (PPred n) (PPred m) of
+ PAdd2 → PAdd2
+
+data PAdd3 n m k where
+ PAdd3 ∷ (PAdd n m, PAdd m k, PAdd m n, PAdd k m, PAdd n k, PAdd k n,
+ PAdd (n :+: m) k, PAdd k (m :+: n),
+ PAdd n (m :+: k), PAdd (m :+: k) n,
+ PAdd (n :+: k) m, PAdd m (n :+: k),
+ ((n :+: m) :+: k) ~ (n :+: (m :+: k)),
+ (m :+: (n :+: k)) ~ ((m :+: n) :+: k))
+ ⇒ PAdd3 n m k
+
+pAdd3 ∷ ∀ n m k . (IsPeano n, IsPeano m, IsPeano k) ⇒ PAdd3 n m k
+pAdd3 = case (peano ∷ Peano n, peano ∷ Peano m, peano ∷ Peano k) of
+ (PZero, PZero, PZero) → PAdd3
+ (PZero, PZero, PSucc _) → PAdd3
+ (PZero, PSucc _, PZero) → PAdd3
+ (PSucc _, PZero, PZero) → PAdd3
+ (PZero, PSucc _, PSucc _) →
+ case pAdd2 ∷ PAdd2 (PPred m) (PPred k) of
+ PAdd2 → PAdd3
+ (PSucc _, PZero, PSucc _) →
+ case pAdd2 ∷ PAdd2 (PPred n) (PPred k) of
+ PAdd2 → PAdd3
+ (PSucc _, PSucc _, PZero) →
+ case pAdd2 ∷ PAdd2 (PPred n) (PPred m) of
+ PAdd2 → PAdd3
+ (PSucc _, PSucc _, PSucc _) →
+ case pAdd3 ∷ PAdd3 (PPred n) (PPred m) (PPred k) of
+ PAdd3 → case pAddSucc ∷ PAddSucc (PPred n :+: PPred m) (PPred k) of
+ PAddSucc → case pAddSucc ∷ PAddSucc (PPred n :+: PPred k) (PPred m) of
+ PAddSucc → case pAddSucc ∷ PAddSucc (PPred m :+: PPred k) (PPred n) of
+ PAddSucc → PAdd3
+
diff --git a/testsuite/tests/simplCore/should_compile/all.T b/testsuite/tests/simplCore/should_compile/all.T
new file mode 100644
index 0000000000..2705d8f3a3
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/all.T
@@ -0,0 +1,125 @@
+test('simpl001', normal, compile, [''])
+test('simpl002', normal, compile, [''])
+test('simpl003', normal, compile, [''])
+test('simpl004', only_compiler_types(['ghc']), compile, [''])
+test('simpl005', normal, compile, [''])
+
+# Missing:
+# test('simpl006', normal, compile, [''])
+
+test('simpl007', normal, compile, [''])
+# Missing: simpl008
+test('simpl009', normal, compile, [''])
+test('simpl010', normal, compile, [''])
+test('simpl011', normal, compile, [''])
+test('simpl012', normal, compile, [''])
+test('simpl013', normal, compile, [''])
+test('simpl014', normal, compile, [''])
+test('simpl015', only_ways(['optasm']), compile, [''])
+test('simpl016', normal, compile, [''])
+test('simpl017', normal, compile_fail, [''])
+test('simpl018', normal, compile, [''])
+test('simpl019', normal, compile, [''])
+test('simpl020',
+ extra_clean(['Simpl020_A.hi', 'Simpl020_A.o']),
+ multimod_compile,
+ ['simpl020', '-v0 -XFlexibleInstances -XUndecidableInstances'])
+
+test('simpl-T1370', normal, compile, [''])
+test('T2520', normal, compile, [''])
+
+
+test('spec001', skip_if_fast, compile, [''])
+test('spec002', normal, compile, [''])
+test('spec003', normal, compile, [''])
+
+test('rule1', normal, compile, [''])
+test('rule2', only_ways(['optasm']), compile, ['-dsuppress-uniques'])
+
+test('dfun-loop', normal, compile, [''])
+test('strict-float', normal, compile, [''])
+test('T3118', normal, compile, [''])
+test('T4203', normal, compile, [''])
+
+# With -prof -fvia-C, this test makes gcc go out to lunch, and the
+# testsuite driver times out.
+test('T3016', skip_if_fast, compile, [''])
+
+test('T1647', normal, compile, ['-fdicts-strict -dcore-lint'])
+
+test('T3234',
+ only_ways(['optasm']),
+ compile,
+ ['-ddump-simpl-stats -dsuppress-uniques'])
+
+test('T3717', only_ways(['optasm']),
+ compile,
+ ['-ddump-simpl -dsuppress-uniques'])
+
+test('spec-inline', only_ways(['optasm']),
+ compile,
+ ['-O2 -ddump-simpl -dsuppress-uniques'])
+test('T4908', only_ways(['optasm']),
+ compile,
+ ['-O2 -ddump-simpl -dsuppress-uniques'])
+
+test('T4930', [if_compiler_lt('ghc', '7.1', expect_fail),
+ only_ways(['optasm'])],
+ compile,
+ ['-O -ddump-simpl -dsuppress-uniques'])
+
+test('T3055',
+ extra_clean(['T3055.hi', 'T3055.o', 'T3055.simpl']),
+ run_command,
+ ['$MAKE -s --no-print-directory T3055'])
+
+test('T4306',
+ normal,
+ run_command,
+ ['$MAKE -s --no-print-directory T4306'])
+
+test('T4201',
+ normal,
+ run_command,
+ ['$MAKE -s --no-print-directory T4201'])
+
+test('T3772',
+# only_ways(['optasm']),
+ extra_clean(['T3772_A.hi', 'T3772_A.o']),
+ run_command, ['$MAKE -s --no-print-directory T3772'])
+
+test('EvalTest',
+ normal,
+ run_command,
+ ['$MAKE -s --no-print-directory EvalTest'])
+
+test('T3831', normal, compile, [''])
+test('T4345', normal, compile, [''])
+test('T4398', normal, compile, [''])
+
+test('T4903',
+ extra_clean(['T4903a.hi']),
+ run_command,
+ ['$MAKE -s --no-print-directory T4903'])
+
+test('T4918',
+ normal,
+ run_command,
+ ['$MAKE -s --no-print-directory T4918'])
+
+test('T4945',
+ if_compiler_lt('ghc', '7.1', expect_fail),
+ run_command,
+ ['$MAKE -s --no-print-directory T4945'])
+
+test('T4957',
+ normal,
+ run_command,
+ ['$MAKE -s --no-print-directory T4957'])
+
+test('T5168',
+ normal,
+ run_command,
+ ['$MAKE -s --no-print-directory T5168'])
+
+test('T5329', normal, compile, [''])
diff --git a/testsuite/tests/simplCore/should_compile/dfun-loop.hs b/testsuite/tests/simplCore/should_compile/dfun-loop.hs
new file mode 100644
index 0000000000..4ad23f3401
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/dfun-loop.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE TypeFamilies, FlexibleContexts #-}
+
+-- This one sent an earlier version of GHC into a
+-- loop in the simplfier, because we allowed a RULE
+-- to fire on a loop-breaker
+--
+-- Discovered by Roman L, Nov 09
+
+module Roman where
+
+data T a = T (T a)
+
+type family F a
+type instance F (T a) = Wrap (T a)
+
+class B (F a) => C a where
+ toF :: a -> F a
+
+go :: C a => a -> Int
+{-# INLINE go #-}
+go x = gow (toF x)
+
+instance C a => C (T a) where
+ {-# INLINE toF #-}
+ toF x = Wrap x
+
+newtype Wrap a = Wrap a
+
+class B a where
+ dummy :: a
+
+ gow :: a -> Int
+
+instance C a => B (Wrap a) where
+ {-# INLINE gow #-}
+ gow (Wrap x) = go x
+ dummy = error "urk"
+
+foo :: C a => T a -> Int
+foo t = let t' = T t in go t'
+
diff --git a/testsuite/tests/simplCore/should_compile/rule1.hs b/testsuite/tests/simplCore/should_compile/rule1.hs
new file mode 100644
index 0000000000..923f4805fb
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/rule1.hs
@@ -0,0 +1,19 @@
+
+-- This one triggers the bug reported in Trac #1092
+-- The problem is that the rule
+-- forall w. f (\v->w) = w
+-- erroneously matches the call
+-- f id
+--
+-- Lint catches the error
+
+module Foo where
+
+f :: (Int -> Int) -> Int
+{-# NOINLINE f #-}
+f g = g 4
+{-# RULES
+ "f" forall w. f (\v->w) = w
+ #-}
+
+h = f id
diff --git a/testsuite/tests/simplCore/should_compile/rule2.hs b/testsuite/tests/simplCore/should_compile/rule2.hs
new file mode 100644
index 0000000000..2b091de5e9
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/rule2.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE RankNTypes #-}
+{-# OPTIONS_GHC -ddump-simpl-stats #-}
+
+-- The rule foo/bar should fire
+
+module Roman where
+
+foo :: (forall m. m a -> m b) -> m a -> m b
+{-# NOINLINE foo #-}
+foo f = f
+
+bar :: (forall m. m a -> m a) -> m a -> m a
+bar f = f
+
+{-# RULES "foo/bar" foo = bar #-}
+
+blip = foo id
+
diff --git a/testsuite/tests/simplCore/should_compile/rule2.stderr b/testsuite/tests/simplCore/should_compile/rule2.stderr
new file mode 100644
index 0000000000..2bdb17fa4a
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/rule2.stderr
@@ -0,0 +1,33 @@
+
+==================== FloatOut stats: ====================
+1 Lets floated to top level; 0 Lets floated elsewhere; from 4 Lambda groups
+
+
+
+==================== FloatOut stats: ====================
+0 Lets floated to top level; 0 Lets floated elsewhere; from 3 Lambda groups
+
+
+
+==================== Grand total simplifier statistics ====================
+Total ticks: 11
+
+2 PreInlineUnconditionally
+ 1 f
+ 1 lvl
+1 UnfoldingDone
+ 1 Roman.bar
+1 RuleFired
+ 1 foo/bar
+7 BetaReduction
+ 1 f
+ 1 m
+ 1 a
+ 1 m
+ 1 a
+ 1 m
+ 1 b
+8 SimplifierDone
+ 8
+
+
diff --git a/testsuite/tests/simplCore/should_compile/simpl-T1370.hs b/testsuite/tests/simplCore/should_compile/simpl-T1370.hs
new file mode 100644
index 0000000000..7524f13bac
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl-T1370.hs
@@ -0,0 +1,7 @@
+
+-- See Trac #1370
+-- THis made GHC 6.6 diverge!
+
+module ShouldCompile where
+
+newtype T = V T deriving(Eq,Ord)
diff --git a/testsuite/tests/simplCore/should_compile/simpl001.hs b/testsuite/tests/simplCore/should_compile/simpl001.hs
new file mode 100644
index 0000000000..4b2bfcc240
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl001.hs
@@ -0,0 +1,13 @@
+-- !!! Desugaring sections with function-type arguments
+-- Although this is really a desugaring test, the problem is
+-- only tickled by the simplifier
+
+-- type Foo a b = a -> (b -> a) -> b
+module ShouldCompile where
+
+(++++) :: (a -> (b -> a) -> b) -> (a -> (b -> a) -> b) -> a -> (b -> a) -> b
+x ++++ y = y
+
+g a xs = map (++++ a) xs
+
+h b xs = map (b ++++) xs
diff --git a/testsuite/tests/simplCore/should_compile/simpl001.stderr b/testsuite/tests/simplCore/should_compile/simpl001.stderr
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl001.stderr
diff --git a/testsuite/tests/simplCore/should_compile/simpl002.hs b/testsuite/tests/simplCore/should_compile/simpl002.hs
new file mode 100644
index 0000000000..b262f47d38
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl002.hs
@@ -0,0 +1,10 @@
+-- !!! class/instance mumble that failed Lint at one time
+--
+module ShouldCompile where
+class Foo a where
+ op :: Int -> a -> Bool
+
+data Wibble a b c = MkWibble a b c
+
+instance (Foo a, Foo b, Foo c) => Foo (Wibble a b c) where
+ op x y = error "xxx"
diff --git a/testsuite/tests/simplCore/should_compile/simpl002.stderr b/testsuite/tests/simplCore/should_compile/simpl002.stderr
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl002.stderr
diff --git a/testsuite/tests/simplCore/should_compile/simpl003.hs b/testsuite/tests/simplCore/should_compile/simpl003.hs
new file mode 100644
index 0000000000..8bf9d6bfd1
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl003.hs
@@ -0,0 +1,42 @@
+-- !! INLINE on recursive functions.
+{-
+Date: Thu, 8 Dec 94 11:38:24 GMT
+From: Julian Seward (DRL PhD) <sewardj@computer-science.manchester.ac.uk>
+Message-Id: <9412081138.AA16652@rdf009.cs.man.ac.uk>
+To: partain@dcs.gla.ac.uk
+-}
+module ShouldCompile where
+
+type IMonad a
+ = IMonadState -> IMonadReturn a
+
+data IMonadReturn a
+ = IMonadOk IMonadState a
+ | IMonadFail IMonadState String
+
+type IMonadState
+ = Int
+
+
+returnI r = \s0 -> IMonadOk s0 r
+
+failI msg = \s0 -> IMonadFail s0 msg
+
+thenI m k
+ = \s0 -> case m s0 of
+ IMonadFail s1 msg -> IMonadFail s1 msg
+ IMonadOk s1 r1 -> k r1 s1
+
+tickI n = \s0 -> IMonadOk (s0+n) ()
+
+mapI f [] = returnI []
+mapI f (x:xs) = f x `thenI` ( \ fx ->
+ mapI f xs `thenI` ( \ fxs ->
+ returnI (fx:fxs)
+ ))
+
+{-# INLINE returnI #-}
+{-# INLINE failI #-}
+{-# INLINE thenI #-}
+{-# INLINE tickI #-}
+-- {-# INLINE mapI #-}
diff --git a/testsuite/tests/simplCore/should_compile/simpl003.stderr b/testsuite/tests/simplCore/should_compile/simpl003.stderr
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl003.stderr
diff --git a/testsuite/tests/simplCore/should_compile/simpl004.hs b/testsuite/tests/simplCore/should_compile/simpl004.hs
new file mode 100644
index 0000000000..08282c69ea
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl004.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE UnboxedTuples, MagicHash, BangPatterns #-}
+
+module ShouldCompile where
+
+import Data.Ix
+import GHC.Exts
+
+
+f ixs@(_, ix_end) frozen# =
+ let
+ !n# =
+ case (
+ if null (range ixs)
+ then 0
+ else 1
+ ) of { I# x -> x }
+ in
+ (# frozen#, False #)
diff --git a/testsuite/tests/simplCore/should_compile/simpl004.stderr b/testsuite/tests/simplCore/should_compile/simpl004.stderr
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl004.stderr
diff --git a/testsuite/tests/simplCore/should_compile/simpl005.hs b/testsuite/tests/simplCore/should_compile/simpl005.hs
new file mode 100644
index 0000000000..abf98a30d2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl005.hs
@@ -0,0 +1,25 @@
+-- !!! CPR on newtype with polymorphic argument
+
+{-# OPTIONS -O #-}
+
+module ShouldCompile where
+
+data StateM m s a = STM (s -> m (a,s))
+
+instance Functor m => Functor (StateM m s) where
+ fmap f (STM xs) = STM (\s -> fmap (\ (x,s') -> (f x, s'))
+ (xs s)
+ )
+{- With GHC 4.04 (first release) this program gave:
+
+ panic! (the `impossible' happened):
+ mk_cpr_let: not a product
+ forall a{-ruq-} b{-rur-}.
+ (a{-ruq-} -> b{-rur-})
+ -> MonadLibrary.StateM{-r2o,x-} m{-a30Y-} s{-a30Z-} a{-ruq-}
+ -> MonadLibrary.StateM{-r2o,x-} m{-a30Y-} s{-a30Z-} b{-rur-}
+
+ The reason: 'Functor' is a newtype, whose element is a for-all type.
+
+ newtype Functor f = Functor (forall a,b. (a->b) -> f a -> f b)
+-}
diff --git a/testsuite/tests/simplCore/should_compile/simpl005.stderr b/testsuite/tests/simplCore/should_compile/simpl005.stderr
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl005.stderr
diff --git a/testsuite/tests/simplCore/should_compile/simpl007.hs b/testsuite/tests/simplCore/should_compile/simpl007.hs
new file mode 100644
index 0000000000..2b42cc29ee
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl007.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE OverlappingInstances, UndecidableInstances,
+ ExistentialQuantification, FlexibleInstances #-}
+
+-- module Formula where
+module Main where
+
+import Prelude hiding (logBase)
+
+import Data.Maybe
+
+-------------------------------------------------------------------------------
+
+-- Formula
+-- The data type for formulas (algegraic expressions).
+--
+-- It should be an extensible type, so that users of
+-- the library can add new kinds of formulas.
+-- For example, in this prototype I explore:
+-- integer constants (FInt)
+-- unknown variables (FVar)
+-- sums (FSum)
+-- products (FPro)
+-- powers (FPow)
+-- logarithms (FLog)
+-- The user of the library may want to extend it with
+-- trigonometric formulas or derivative formulas, for
+-- example.
+--
+-- The idea is to let each kind of formula be a new data
+-- type. Similar operations with them are implemented
+-- using overloading. So there is a class (FORMULA) to collect
+-- them and each kind of formula should be an instance of it.
+
+class (Eq f, Show f) => FORMULA f where
+ ty :: f -> FType
+ intVal :: f -> Integer
+ varName :: f -> String
+ argList :: f -> [Formula]
+ same :: (FORMULA f1) => f -> f1 -> Bool
+ intVal = error ""
+ varName = error ""
+ argList = error ""
+ same _ _ = False
+
+-- By now extensibility is accomplished by existentialy
+-- quantified type variables.
+
+data Formula = forall f . ( FORMULA f
+ , AddT f
+ ) =>
+ Formula f
+
+instance Show Formula where
+ show (Formula f) = show f
+
+instance Eq Formula where
+ (Formula x) == (Formula y) = same x y
+
+instance FORMULA Formula where
+ ty (Formula f) = ty f
+ intVal (Formula f) = intVal f
+ varName (Formula f) = varName f
+ argList (Formula f) = argList f
+ same (Formula f) = same f
+
+-------------------------------------------------------------------------------
+
+-- How to uniquely identify the type of formula?
+-- Each type of formula is associated to a key (FType)
+-- that identifies it.
+--
+-- Here I use an enumated data type. When extending
+-- the library, the user will have to modify this
+-- data type adding a new constant constructor.
+
+data FType = INT
+ | VAR
+ | SUM
+ | PRO
+ | POW
+ | LOG
+ deriving (Eq,Ord,Enum,Show)
+
+-------------------------------------------------------------------------------
+
+-- Integer formula
+
+data FInt = FInt Integer
+ deriving (Eq,Show)
+
+mkInt = Formula . FInt
+
+instance FORMULA FInt where
+ ty _ = INT
+ intVal (FInt x) = x
+ same (FInt x) y = isInt y && x == intVal y
+
+-- Variable formula
+
+data FVar = FVar String
+ deriving (Eq,Show)
+
+mkVar = Formula . FVar
+
+instance FORMULA FVar where
+ ty _ = VAR
+ varName (FVar x) = x
+ same (FVar x) y = isVar y && x == varName y
+
+-- Sum formula
+
+data FSum = FSum [Formula]
+ deriving (Eq,Show)
+
+mkSum = Formula . FSum
+
+instance FORMULA FSum where
+ ty _ = SUM
+ argList (FSum xs) = xs
+ same (FSum xs) y = isSum y && xs == argList y
+
+-- Product formula
+
+data FPro = FPro [Formula]
+ deriving (Eq,Show)
+
+mkPro = Formula . FPro
+
+instance FORMULA FPro where
+ ty _ = PRO
+ argList (FPro xs) = xs
+ same (FPro xs) y = isPro y && xs == argList y
+
+-- Exponentiation formula
+
+data FPow = FPow Formula Formula
+ deriving (Eq,Show)
+
+mkPow x y = Formula (FPow x y)
+
+instance FORMULA FPow where
+ ty _ = POW
+ argList (FPow b e) = [b,e]
+ same (FPow b e) y = isPow y && [b,e] == argList y
+
+-- Logarithm formula
+
+data FLog = FLog Formula Formula
+ deriving (Eq,Show)
+
+mkLog x b = Formula (FLog x b)
+
+instance FORMULA FLog where
+ ty _ = LOG
+ argList (FLog x b) = [x,b]
+ same (FLog x b) y = isLog y && [x,b] == argList y
+
+-------------------------------------------------------------------------------
+
+-- Some predicates
+
+isInt x = ty x == INT
+isVar x = ty x == VAR
+isSum x = ty x == SUM
+isPro x = ty x == PRO
+isPow x = ty x == POW
+
+isZero x = isInt x && intVal x == 0
+
+-------------------------------------------------------------------------------
+
+-- Adding two formulas
+-- This is a really very simple algorithm for adding
+-- two formulas.
+
+add :: Formula -> Formula -> Formula
+add x y
+ | isJust u = fromJust u
+ | isJust v = fromJust v
+ | otherwise = mkSum [x,y]
+ where
+ u = addT x y
+ v = addT y x
+
+class AddT a where
+ addT :: a -> Formula -> Maybe Formula
+ addT _ _ = Nothing
+
+instance (FORMULA a) => AddT a where {}
+
+instance AddT Formula where
+ addT (Formula f) = addT f
+
+instance AddT FInt where
+ addT (FInt 0) y = Just y
+ addT (FInt x) y
+ | isInt y = Just (mkInt (x + intVal y))
+ | otherwise = Nothing
+
+instance AddT FSum where
+ addT (FSum xs) y
+ | isSum y = Just (mkSum (merge xs (argList y)))
+ | otherwise = Just (mkSum (merge xs [y]))
+ where
+ merge = (++)
+
+instance AddT FLog where
+ addT (FLog x b) y
+ | isLog y && b == logBase y = Just (mkLog (mkPro [x,logExp y]) b)
+ | otherwise = Nothing
+ where
+ merge = (++)
+
+isLog x = ty x == LOG
+
+logBase x
+ | isLog x = head (tail (argList x))
+
+logExp x
+ | isLog x = head (argList x)
+
+-------------------------------------------------------------------------------
+
+-- Test addition of formulas
+
+main = print [ add (mkInt 78) (mkInt 110)
+ , add (mkInt 0) (mkVar "x")
+ , add (mkVar "x") (mkInt 0)
+ , add (mkVar "x") (mkVar "y")
+ , add (mkSum [mkInt 13,mkVar "x"]) (mkVar "y")
+ , add (mkLog (mkVar "x") (mkInt 10))
+ (mkLog (mkVar "y") (mkInt 10))
+ , add (mkLog (mkVar "x") (mkInt 10))
+ (mkLog (mkVar "y") (mkVar "e"))
+ ]
diff --git a/testsuite/tests/simplCore/should_compile/simpl009.hs b/testsuite/tests/simplCore/should_compile/simpl009.hs
new file mode 100644
index 0000000000..c66587d3e3
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl009.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE Rank2Types #-}
+{-# OPTIONS_GHC -dcore-lint #-}
+
+-- This one killed GHC 6.0, with a "panic: applyTys"
+-- Only with -O, though
+
+module ShouldCompile where
+
+newtype R = R (forall a. a->a)
+
+foo = case undefined of
+ R f -> f ()
diff --git a/testsuite/tests/simplCore/should_compile/simpl010.hs b/testsuite/tests/simplCore/should_compile/simpl010.hs
new file mode 100644
index 0000000000..da2af345f2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl010.hs
@@ -0,0 +1,19 @@
+
+{-# LANGUAGE ExistentialQuantification #-}
+
+-- This tests an interaction between GADTs and join points
+-- The case-of-case transformation can pretty easily result
+-- in a type mis-match, because the join point does not see
+-- the refinement from the case branch
+
+module ShouldCompile( h ) where
+
+data T a = forall b. T b [a] | T2
+
+f :: a -> T a -> [a]
+f x (T _ a) = a ++ a ++ a ++ [x]
+f x T2 = [x]
+
+h :: a -> Bool -> T a -> T a -> [a]
+h x b p q = f x (case b of { True -> p; False -> q })
+ \ No newline at end of file
diff --git a/testsuite/tests/simplCore/should_compile/simpl011.hs b/testsuite/tests/simplCore/should_compile/simpl011.hs
new file mode 100644
index 0000000000..c660394e92
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl011.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE CPP, Rank2Types, ScopedTypeVariables, KindSignatures,
+ MultiParamTypeClasses, FunctionalDependencies #-}
+
+-- This one triggered a bug in the indirection-shorting
+-- machinery, which gave a core-lint error
+
+module MHashTable (STHashTable, new, update) where
+
+import Data.Int (Int32)
+import Control.Monad.ST (ST)
+import Data.STRef (STRef)
+import Data.Array.ST (STArray)
+import Data.Array.MArray (writeArray)
+
+class Monad m => MutHash arr ref m | arr -> m, ref -> m
+ , arr -> ref, ref -> arr where
+ newMHArray :: (Int32, Int32) -> a -> m (arr Int32 a)
+ readMHArray :: arr Int32 a -> Int32 -> m a
+ writeMHArray:: arr Int32 a -> Int32 -> a -> m ()
+
+ newMHRef :: a -> m (ref a)
+ readMHRef :: ref a -> m a
+ writeMHRef :: ref a -> a -> m ()
+
+instance MutHash (STArray s) (STRef s) (ST s) where
+ newMHArray = undefined
+ readMHArray = undefined
+ writeMHArray= writeArray
+
+ newMHRef = undefined
+ readMHRef = undefined
+ writeMHRef = undefined
+
+type STHashTable s key val = HashTable key val (STArray s) (STRef s) (ST s)
+
+newtype HashTable key val arr ref m = HashTable (ref (HT key val arr ref m))
+
+data HT key val arr (ref :: * -> *) (m :: * -> *) = HT { dir :: (arr Int32 (arr Int32 [(key,val)])) }
+
+new :: forall arr ref m key val. (MutHash arr ref m) => m (HashTable key val arr ref m)
+new = do
+ (dir::arr Int32 (arr Int32 [(key,val)])) <- newMHArray (0,0) undefined
+ (segment::arr Int32 [(key,val)]) <- return undefined
+ return (undefined :: HashTable key val arr ref m)
+
+{-# RULES "update/ST" update = updateST #-}
+updateST:: STHashTable s k v -> k -> v -> ST s Bool
+updateST= update'
+
+update :: (MutHash arr ref m)
+ => HashTable key val arr ref m -> key -> val -> m Bool
+update = update'
+
+update' :: (MutHash arr ref m)
+ => HashTable key val arr ref m -> key -> val -> m Bool
+update' _ _ _ = return False
diff --git a/testsuite/tests/simplCore/should_compile/simpl012.hs b/testsuite/tests/simplCore/should_compile/simpl012.hs
new file mode 100644
index 0000000000..09af3e5618
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl012.hs
@@ -0,0 +1,23 @@
+-- This is a version of tc095.hs, which makes the compiler
+-- loop (with -O) because of the recursive data-type bug,
+-- unless you have the NOINLINE (which Happy does,
+-- as it happens).
+
+-- Keywords: diverge, contravariant, fixpoint
+
+module ShouldSucceed where
+
+happyParse = happyFail 7 7 (error "reading EOF!") (HappyState happyFail) [] [] []
+
+data HappyState b c = HappyState
+ (Int -> -- token number
+ Int -> -- token number (yes, again)
+ b -> -- token semantic value
+ HappyState b c -> -- current state
+ [HappyState b c] -> -- state stack
+ c)
+
+{-# NOINLINE happyFail #-}
+happyFail _ i tk st@(HappyState action) sts stk = action (-1) (-1) tk st sts ( stk)
+
+
diff --git a/testsuite/tests/simplCore/should_compile/simpl013.hs b/testsuite/tests/simplCore/should_compile/simpl013.hs
new file mode 100644
index 0000000000..c91cf50d9c
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl013.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE GADTs #-}
+
+-- This one made GHC 6.4.1 panic because of over-zealous
+-- complaining in mkCase1 when there was an empty list of
+-- alternatives
+
+module Foo2 where
+
+data FooBar = Foo | Bar
+
+data P a = P0 | P1 FooBar
+
+data PS p where
+ C :: P Int -> p b -> PS p
+
+f :: PS P -> Char
+f (C (P1 _) P0) = 'a'
+f (C (P1 Bar) (P1 Bar)) = 'b'
+f (C (P1 _) (P1 Bar)) = 'c'
diff --git a/testsuite/tests/simplCore/should_compile/simpl014.hs b/testsuite/tests/simplCore/should_compile/simpl014.hs
new file mode 100644
index 0000000000..c610df527a
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl014.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE Rank2Types, GADTs, FlexibleContexts #-}
+{-# OPTIONS_GHC -O2 #-}
+
+-- This one make SpecConstr generate bogus code (hence -O2),
+-- with a lint error, in GHC 6.4.1
+-- C.f. http://hackage.haskell.org/trac/ghc/ticket/737
+
+module ShouldCompile where
+
+ data IHandler st where
+ IHandler :: forall st ev res.
+ Serialize (TxContext ev) => String -> IO ev
+ -> (res -> IO ()) -> Ev st ev res -> IHandler st
+
+ data Ev st ev res = Ev
+ data TxContext evt = TxContext
+ data TxConfig = TxConfig
+ data M a = M a
+
+ class Serialize a where
+ instance Serialize a => Serialize (TxContext a)
+ instance Serialize Int
+ instance Serialize ()
+
+ data IHR st = forall res ev. Serialize (TxContext ev) => IHR (TxContext ev)
+
+
+ runHandler :: M (IHR st) -> IHandler st -> IO ()
+ runHandler queue ih@(IHandler tstring inp out run) = runHandler queue ih
+
diff --git a/testsuite/tests/simplCore/should_compile/simpl015.hs b/testsuite/tests/simplCore/should_compile/simpl015.hs
new file mode 100644
index 0000000000..2ce70406be
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl015.hs
@@ -0,0 +1,1683 @@
+-- Test for ticket #830, simplifier taking too long on large do expression
+
+main = do
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
+ return ()
diff --git a/testsuite/tests/simplCore/should_compile/simpl016.hs b/testsuite/tests/simplCore/should_compile/simpl016.hs
new file mode 100644
index 0000000000..6ba088e6fa
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl016.hs
@@ -0,0 +1,12 @@
+-- Test for trac ticket #1287; ghc 6.6 and 6.6.1 panicked on this
+
+module ShouldCompile where
+
+{-# SPECIALIZE delta' :: Num b => Int -> Int -> b -> b -> b #-}
+delta' :: Eq a => a -> a -> b -> b -> b
+delta' x y e f = if (x==y) then f else e
+
+{-# SPECIALIZE delta :: Num b => Int -> Int -> b #-}
+delta :: (Eq a, Num b) => a -> a -> b
+delta x y = delta' x y 0 1
+
diff --git a/testsuite/tests/simplCore/should_compile/simpl016.stderr b/testsuite/tests/simplCore/should_compile/simpl016.stderr
new file mode 100644
index 0000000000..681dd10cab
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl016.stderr
@@ -0,0 +1,4 @@
+
+simpl016.hs:5:1:
+ Warning: Forall'd constraint `Num b' is not bound in RULE lhs
+ delta' @ Int @ b GHC.Classes.$fEqInt
diff --git a/testsuite/tests/simplCore/should_compile/simpl017.hs b/testsuite/tests/simplCore/should_compile/simpl017.hs
new file mode 100644
index 0000000000..8c801a44f3
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl017.hs
@@ -0,0 +1,64 @@
+{-# OPTIONS -XImpredicativeTypes -fno-warn-deprecated-flags -XEmptyDataDecls -XGADTs -XLiberalTypeSynonyms -XFlexibleInstances -XScopedTypeVariables #-}
+
+-- See Trac #1627. The point is that we should get nice
+-- compact code for Foo
+
+-- In GHC 7.0 this fails, and rightly so.
+
+module M(foo) where
+
+import Control.Monad.ST
+import Data.Array.ST
+
+data E' v m a where
+ E :: m a -> E' RValue m a
+ V :: m a -> (a -> m ()) -> E' v m a
+
+data LValue
+data RValue
+
+type E m a = E' RValue m a
+type V m a = E' LValue m a
+
+{-# INLINE runE #-}
+runE :: E' v m a -> m a
+runE (E t) = t
+runE (V t _) = t
+
+instance (Monad m) => Monad (E' RValue m) where
+ {-# INLINE return #-}
+ return x = E $ return x
+ {-# INLINE (>>=) #-}
+ x >>= f = E $ do
+ x' <- runE x
+ runE (f x')
+
+liftArray :: forall arr m a i . (Ix i, MArray arr a m) =>
+ arr i a -> E m (forall v . [E m i] -> E' v m a)
+{-# INLINE liftArray #-}
+liftArray a = E (do
+ let ix :: [E m i] -> m i
+ ix [i] = runE i
+ {-# INLINE f #-}
+ f is = V (ix is >>= readArray a) (\ x -> ix is >>= \ i -> writeArray a i x)
+ return f
+ )
+
+{-# INLINE liftE2 #-}
+liftE2 :: (Monad m) => (a -> b -> c) -> E' va m a -> E' vb m b -> E m c
+liftE2 op x y = E $ do
+ x' <- runE x
+ y' <- runE y
+ return (x' `op` y')
+
+{-# INLINE plus #-}
+plus :: (Monad m) => E m Int -> E m Int -> E m Int
+plus = liftE2 (+)
+
+foo :: forall s . STArray s Int Int -> ST s Int
+foo ma = runE $ do
+ a <- liftArray ma
+ let one :: E (ST t) Int
+ one = return 1
+ a[one] `plus` a[one]
+
diff --git a/testsuite/tests/simplCore/should_compile/simpl017.stderr b/testsuite/tests/simplCore/should_compile/simpl017.stderr
new file mode 100644
index 0000000000..ab82e56c36
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl017.stderr
@@ -0,0 +1,20 @@
+
+simpl017.hs:44:12:
+ Couldn't match expected type `forall v. [E m i] -> E' v m a'
+ with actual type `[E m i] -> E' v0 m a'
+ In the first argument of `return', namely `f'
+ In a stmt of a 'do' block: return f
+ In the first argument of `E', namely
+ `(do { let ix :: [E m i] -> m i
+ ix [i] = runE i
+ {-# INLINE f #-}
+ ....;
+ return f })'
+
+simpl017.hs:63:5:
+ Couldn't match expected type `t0 -> t1'
+ with actual type `forall v. [E m0 Int] -> E' v m0 Int'
+ The function `a' is applied to one argument,
+ but its type `forall v. [E m0 Int] -> E' v m0 Int' has none
+ In the first argument of `plus', namely `a [one]'
+ In a stmt of a 'do' block: a [one] `plus` a [one]
diff --git a/testsuite/tests/simplCore/should_compile/simpl018.hs b/testsuite/tests/simplCore/should_compile/simpl018.hs
new file mode 100644
index 0000000000..1b7ce8ddcd
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl018.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE UnboxedTuples #-}
+
+-- See Note [Float coercions (unlifted)] in Simplify
+-- This one gave a CoreLint error when compiled optimised
+--
+-- See also Trac #1718, of which this is a simplified version
+
+module ShouldCompile where
+
+bar :: Bool -> Int
+bar x = case (case x of { True -> (# 2,3 #); False -> error "urk" }) of
+ (# p,q #) -> p+q
diff --git a/testsuite/tests/simplCore/should_compile/simpl019.hs b/testsuite/tests/simplCore/should_compile/simpl019.hs
new file mode 100644
index 0000000000..66b8fc4764
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl019.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE GADTs, FlexibleInstances #-}
+{-# OPTIONS_GHC -O2 #-}
+
+-- See Trac #1746
+
+module Foo where
+
+data T a where T :: T a -> T [a]
+
+class C a where
+ f :: a -> ()
+
+instance C (T [a]) where
+ f (T x@(T _)) = f x
diff --git a/testsuite/tests/simplCore/should_compile/simpl020.hs b/testsuite/tests/simplCore/should_compile/simpl020.hs
new file mode 100644
index 0000000000..d969ce1fd9
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl020.hs
@@ -0,0 +1,9 @@
+
+-- trac #1709
+
+module FileDialog where
+
+import Simpl020_A
+
+createFolder :: ()
+createFolder = geometry 0
diff --git a/testsuite/tests/simplCore/should_compile/simpl020.stderr b/testsuite/tests/simplCore/should_compile/simpl020.stderr
new file mode 100644
index 0000000000..9d768d2913
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/simpl020.stderr
@@ -0,0 +1,8 @@
+
+Simpl020_A.hs:25:10:
+ Warning: No explicit method nor default method for `toGUIObject'
+ In the instance declaration for `GUIObject ()'
+
+Simpl020_A.hs:25:10:
+ Warning: No explicit method nor default method for `cset'
+ In the instance declaration for `GUIObject ()'
diff --git a/testsuite/tests/simplCore/should_compile/spec-inline.hs b/testsuite/tests/simplCore/should_compile/spec-inline.hs
new file mode 100644
index 0000000000..6c690ea12e
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/spec-inline.hs
@@ -0,0 +1,29 @@
+{- This test checks that specialiations can apply inside
+ wrappers. In particular, the wrapper for 'foo' should
+ look like
+
+ Tmpl= \ (n_aal [Occ=Once!] :: GHC.Types.Int) ->
+ case n_aal of _ { GHC.Types.I# ipv_smZ [Occ=Once] ->
+ case Roman.foo_$s$wgo ipv_smZ 6 of ww_spp { __DEFAULT ->
+ GHC.Types.I# ww_spp
+ }
+ }}]
+ Note the $s$wgo. That in turn allows $wgo to be dead code.
+-}
+
+module Roman where
+
+foo :: Int -> Int
+foo n = n `seq` go (Just n) (Just (6::Int))
+ where
+ go u (Just x)
+ = x `seq`
+ case u of
+ Nothing -> go (Just 10) (Just m)
+ Just n
+ | n <= 0 -> 0
+ | n < 100 -> go (Just (n-2)) (Just x)
+ | n < 500 -> go (Just (n-3)) (Just m)
+ | otherwise -> go (Just (n-1)) (Just (m+m))
+ where
+ m = x+x+x+x+x+x+x
diff --git a/testsuite/tests/simplCore/should_compile/spec-inline.stderr b/testsuite/tests/simplCore/should_compile/spec-inline.stderr
new file mode 100644
index 0000000000..cd5d922ffc
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/spec-inline.stderr
@@ -0,0 +1,152 @@
+
+==================== Tidy Core ====================
+Roman.foo2 :: GHC.Types.Int
+[GblId,
+ Caf=NoCafRefs,
+ Str=DmdType m,
+ Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=IF_ARGS [] 10 110}]
+Roman.foo2 = GHC.Types.I# 6
+
+Roman.foo1 :: Data.Maybe.Maybe GHC.Types.Int
+[GblId,
+ Caf=NoCafRefs,
+ Str=DmdType,
+ Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=IF_ARGS [] 10 110}]
+Roman.foo1 = Data.Maybe.Just @ GHC.Types.Int Roman.foo2
+
+Roman.foo3 :: GHC.Types.Int
+[GblId, Str=DmdType b]
+Roman.foo3 =
+ Control.Exception.Base.patError
+ @ GHC.Types.Int "spec-inline.hs:(19,5)-(29,25)|function go"
+
+Rec {
+Roman.foo_$s$wgo [Occ=LoopBreaker]
+ :: GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.Prim.Int#
+[GblId, Arity=2, Caf=NoCafRefs, Str=DmdType LL]
+Roman.foo_$s$wgo =
+ \ (sc :: GHC.Prim.Int#) (sc1 :: GHC.Prim.Int#) ->
+ let {
+ a [Dmd=Just L] :: GHC.Prim.Int#
+ [LclId, Str=DmdType]
+ a =
+ GHC.Prim.+#
+ (GHC.Prim.+#
+ (GHC.Prim.+#
+ (GHC.Prim.+# (GHC.Prim.+# (GHC.Prim.+# sc sc) sc) sc) sc)
+ sc)
+ sc } in
+ case GHC.Prim.<=# sc1 0 of _ {
+ GHC.Types.False ->
+ case GHC.Prim.<# sc1 100 of _ {
+ GHC.Types.False ->
+ case GHC.Prim.<# sc1 500 of _ {
+ GHC.Types.False ->
+ Roman.foo_$s$wgo (GHC.Prim.+# a a) (GHC.Prim.-# sc1 1);
+ GHC.Types.True -> Roman.foo_$s$wgo a (GHC.Prim.-# sc1 3)
+ };
+ GHC.Types.True -> Roman.foo_$s$wgo sc (GHC.Prim.-# sc1 2)
+ };
+ GHC.Types.True -> 0
+ }
+end Rec }
+
+Roman.$wgo
+ :: Data.Maybe.Maybe GHC.Types.Int
+ -> Data.Maybe.Maybe GHC.Types.Int -> GHC.Prim.Int#
+[GblId,
+ Arity=2,
+ Str=DmdType SS,
+ Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=2, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=IF_ARGS [60 30] 253 0}]
+Roman.$wgo =
+ \ (w :: Data.Maybe.Maybe GHC.Types.Int)
+ (w1 :: Data.Maybe.Maybe GHC.Types.Int) ->
+ case w1 of _ {
+ Data.Maybe.Nothing ->
+ Roman.foo3
+ `cast` (UnsafeCo GHC.Types.Int GHC.Prim.Int#
+ :: GHC.Types.Int ~ GHC.Prim.Int#);
+ Data.Maybe.Just x ->
+ case x of _ { GHC.Types.I# ipv ->
+ let {
+ a [Dmd=Just L] :: GHC.Prim.Int#
+ [LclId, Str=DmdType]
+ a =
+ GHC.Prim.+#
+ (GHC.Prim.+#
+ (GHC.Prim.+#
+ (GHC.Prim.+# (GHC.Prim.+# (GHC.Prim.+# ipv ipv) ipv) ipv) ipv)
+ ipv)
+ ipv } in
+ case w of _ {
+ Data.Maybe.Nothing -> Roman.foo_$s$wgo a 10;
+ Data.Maybe.Just n ->
+ case n of _ { GHC.Types.I# x2 ->
+ case GHC.Prim.<=# x2 0 of _ {
+ GHC.Types.False ->
+ case GHC.Prim.<# x2 100 of _ {
+ GHC.Types.False ->
+ case GHC.Prim.<# x2 500 of _ {
+ GHC.Types.False ->
+ Roman.foo_$s$wgo (GHC.Prim.+# a a) (GHC.Prim.-# x2 1);
+ GHC.Types.True -> Roman.foo_$s$wgo a (GHC.Prim.-# x2 3)
+ };
+ GHC.Types.True -> Roman.foo_$s$wgo ipv (GHC.Prim.-# x2 2)
+ };
+ GHC.Types.True -> 0
+ }
+ }
+ }
+ }
+ }
+
+Roman.foo_go [InlPrag=INLINE[0]]
+ :: Data.Maybe.Maybe GHC.Types.Int
+ -> Data.Maybe.Maybe GHC.Types.Int -> GHC.Types.Int
+[GblId,
+ Arity=2,
+ Str=DmdType SSm,
+ Unf=Unf{Src=Worker=Roman.$wgo, TopLvl=True, Arity=2, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
+ Tmpl= \ (w [Occ=Once] :: Data.Maybe.Maybe GHC.Types.Int)
+ (w1 [Occ=Once] :: Data.Maybe.Maybe GHC.Types.Int) ->
+ case Roman.$wgo w w1 of ww { __DEFAULT -> GHC.Types.I# ww }}]
+Roman.foo_go =
+ \ (w :: Data.Maybe.Maybe GHC.Types.Int)
+ (w1 :: Data.Maybe.Maybe GHC.Types.Int) ->
+ case Roman.$wgo w w1 of ww { __DEFAULT -> GHC.Types.I# ww }
+
+Roman.foo :: GHC.Types.Int -> GHC.Types.Int
+[GblId,
+ Arity=1,
+ Caf=NoCafRefs,
+ Str=DmdType S(A)m,
+ Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
+ Tmpl= \ (n [Occ=Once!] :: GHC.Types.Int) ->
+ case n of n1 { GHC.Types.I# _ ->
+ Roman.foo_go (Data.Maybe.Just @ GHC.Types.Int n1) Roman.foo1
+ }}]
+Roman.foo =
+ \ (n :: GHC.Types.Int) ->
+ case n of _ { GHC.Types.I# ipv ->
+ case Roman.foo_$s$wgo 6 ipv of ww { __DEFAULT -> GHC.Types.I# ww }
+ }
+
+
+------ Local rules for imported ids --------
+"SC:$wgo0" [ALWAYS]
+ forall (sc :: GHC.Prim.Int#) (sc1 :: GHC.Prim.Int#).
+ Roman.$wgo (Data.Maybe.Just @ GHC.Types.Int (GHC.Types.I# sc1))
+ (Data.Maybe.Just @ GHC.Types.Int (GHC.Types.I# sc))
+ = Roman.foo_$s$wgo sc sc1
+
+
diff --git a/testsuite/tests/simplCore/should_compile/spec-inline.stderr-ghc-7.0 b/testsuite/tests/simplCore/should_compile/spec-inline.stderr-ghc-7.0
new file mode 100644
index 0000000000..dd3a7eb44a
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/spec-inline.stderr-ghc-7.0
@@ -0,0 +1,154 @@
+
+==================== Tidy Core ====================
+Roman.foo2 :: GHC.Types.Int
+[GblId,
+ Caf=NoCafRefs,
+ Str=DmdType m,
+ Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=IF_ARGS [] 1 2}]
+Roman.foo2 = GHC.Types.I# 6
+
+Roman.foo1 :: Data.Maybe.Maybe GHC.Types.Int
+[GblId,
+ Caf=NoCafRefs,
+ Str=DmdType,
+ Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=0, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=IF_ARGS [] 1 2}]
+Roman.foo1 = Data.Maybe.Just @ GHC.Types.Int Roman.foo2
+
+Roman.foo3 :: GHC.Types.Int
+[GblId, Str=DmdType b]
+Roman.foo3 =
+ Control.Exception.Base.patError
+ @ GHC.Types.Int "spec-inline.hs:(19,5)-(29,25)|function go"
+
+Rec {
+Roman.foo_$s$wgo [Occ=LoopBreaker]
+ :: GHC.Prim.Int# -> GHC.Prim.Int# -> GHC.Prim.Int#
+[GblId, Arity=2, Caf=NoCafRefs, Str=DmdType LL]
+Roman.foo_$s$wgo =
+ \ (sc :: GHC.Prim.Int#) (sc1 :: GHC.Prim.Int#) ->
+ let {
+ a [Dmd=Just L] :: GHC.Prim.Int#
+ [LclId, Str=DmdType]
+ a =
+ GHC.Prim.+#
+ (GHC.Prim.+#
+ (GHC.Prim.+#
+ (GHC.Prim.+# (GHC.Prim.+# (GHC.Prim.+# sc sc) sc) sc) sc)
+ sc)
+ sc } in
+ case GHC.Prim.<=# sc1 0 of _ {
+ GHC.Bool.False ->
+ case GHC.Prim.<# sc1 100 of _ {
+ GHC.Bool.False ->
+ case GHC.Prim.<# sc1 500 of _ {
+ GHC.Bool.False ->
+ Roman.foo_$s$wgo (GHC.Prim.+# a a) (GHC.Prim.-# sc1 1);
+ GHC.Bool.True -> Roman.foo_$s$wgo a (GHC.Prim.-# sc1 3)
+ };
+ GHC.Bool.True -> Roman.foo_$s$wgo sc (GHC.Prim.-# sc1 2)
+ };
+ GHC.Bool.True -> 0
+ }
+end Rec }
+
+Roman.$wgo
+ :: Data.Maybe.Maybe GHC.Types.Int
+ -> Data.Maybe.Maybe GHC.Types.Int
+ -> GHC.Prim.Int#
+[GblId,
+ Arity=2,
+ Str=DmdType SS,
+ Unf=Unf{Src=<vanilla>, TopLvl=True, Arity=2, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=IF_ARGS [6 3] 37 0}]
+Roman.$wgo =
+ \ (w :: Data.Maybe.Maybe GHC.Types.Int)
+ (w1 :: Data.Maybe.Maybe GHC.Types.Int) ->
+ case w1 of _ {
+ Data.Maybe.Nothing ->
+ Roman.foo3
+ `cast` (CoUnsafe GHC.Types.Int GHC.Prim.Int#
+ :: GHC.Types.Int ~ GHC.Prim.Int#);
+ Data.Maybe.Just x ->
+ case x of _ { GHC.Types.I# ipv ->
+ let {
+ a [Dmd=Just L] :: GHC.Prim.Int#
+ [LclId, Str=DmdType]
+ a =
+ GHC.Prim.+#
+ (GHC.Prim.+#
+ (GHC.Prim.+#
+ (GHC.Prim.+# (GHC.Prim.+# (GHC.Prim.+# ipv ipv) ipv) ipv) ipv)
+ ipv)
+ ipv } in
+ case w of _ {
+ Data.Maybe.Nothing -> Roman.foo_$s$wgo a 10;
+ Data.Maybe.Just n ->
+ case n of _ { GHC.Types.I# x2 ->
+ case GHC.Prim.<=# x2 0 of _ {
+ GHC.Bool.False ->
+ case GHC.Prim.<# x2 100 of _ {
+ GHC.Bool.False ->
+ case GHC.Prim.<# x2 500 of _ {
+ GHC.Bool.False ->
+ Roman.foo_$s$wgo (GHC.Prim.+# a a) (GHC.Prim.-# x2 1);
+ GHC.Bool.True -> Roman.foo_$s$wgo a (GHC.Prim.-# x2 3)
+ };
+ GHC.Bool.True -> Roman.foo_$s$wgo ipv (GHC.Prim.-# x2 2)
+ };
+ GHC.Bool.True -> 0
+ }
+ }
+ }
+ }
+ }
+
+Roman.foo_go [InlPrag=INLINE[0]]
+ :: Data.Maybe.Maybe GHC.Types.Int
+ -> Data.Maybe.Maybe GHC.Types.Int
+ -> GHC.Types.Int
+[GblId,
+ Arity=2,
+ Str=DmdType SSm,
+ Unf=Unf{Src=Worker=Roman.$wgo, TopLvl=True, Arity=2, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
+ Tmpl= \ (w [Occ=Once] :: Data.Maybe.Maybe GHC.Types.Int)
+ (w1 [Occ=Once] :: Data.Maybe.Maybe GHC.Types.Int) ->
+ case Roman.$wgo w w1 of ww { __DEFAULT -> GHC.Types.I# ww }}]
+Roman.foo_go =
+ \ (w :: Data.Maybe.Maybe GHC.Types.Int)
+ (w1 :: Data.Maybe.Maybe GHC.Types.Int) ->
+ case Roman.$wgo w w1 of ww { __DEFAULT -> GHC.Types.I# ww }
+
+Roman.foo :: GHC.Types.Int -> GHC.Types.Int
+[GblId,
+ Arity=1,
+ Caf=NoCafRefs,
+ Str=DmdType S(A)m,
+ Unf=Unf{Src=InlineStable, TopLvl=True, Arity=1, Value=True,
+ ConLike=True, Cheap=True, Expandable=True,
+ Guidance=ALWAYS_IF(unsat_ok=True,boring_ok=False)
+ Tmpl= \ (n [Occ=Once!] :: GHC.Types.Int) ->
+ case n of n1 { GHC.Types.I# _ ->
+ Roman.foo_go (Data.Maybe.Just @ GHC.Types.Int n1) Roman.foo1
+ }}]
+Roman.foo =
+ \ (n :: GHC.Types.Int) ->
+ case n of _ { GHC.Types.I# ipv ->
+ case Roman.foo_$s$wgo 6 ipv of ww { __DEFAULT -> GHC.Types.I# ww }
+ }
+
+
+------ Local rules for imported ids --------
+"SC:$wgo0" [ALWAYS]
+ forall {sc :: GHC.Prim.Int# sc1 :: GHC.Prim.Int#}
+ Roman.$wgo (Data.Maybe.Just @ GHC.Types.Int (GHC.Types.I# sc1))
+ (Data.Maybe.Just @ GHC.Types.Int (GHC.Types.I# sc))
+ = Roman.foo_$s$wgo sc sc1
+
+
diff --git a/testsuite/tests/simplCore/should_compile/spec001.hs b/testsuite/tests/simplCore/should_compile/spec001.hs
new file mode 100644
index 0000000000..0abfd6a5a5
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/spec001.hs
@@ -0,0 +1,425 @@
+{-# LANGUAGE CPP, UnboxedTuples, MagicHash, StandaloneDeriving, DeriveDataTypeable #-}
+{-# OPTIONS_GHC -O #-}
+
+-- In GHC 6.4, compiling this module gave a Core Lint failure following the
+-- specialier, because a function was floated out that had a RULE that
+-- mentioned another fuction (unpack, in fact). but the latter wasn't
+-- floated because we didn't take the RULES into account properly; result,
+-- variable out of scope.
+
+-- It's hard to cut this test down.
+
+
+module Data.PackedString.Latin1 (
+ -- * The @PackedString@ type
+ PackedString, -- abstract, instances: Eq, Ord, Show, Typeable
+
+ -- * Converting to and from @PackedString@s
+ pack,
+ unpack,
+
+ -- * I\/O with @PackedString@s
+ hPut, hGet,
+
+ -- * List-like manipulation functions
+ nil,
+ cons,
+ head,
+ tail,
+ null,
+ append,
+ length,
+ index,
+ map,
+ filter,
+ reverse,
+ concat,
+ elem,
+ substr,
+ take,
+ drop,
+ splitAt,
+ foldl,
+ foldr,
+ takeWhile,
+ dropWhile,
+ span,
+ break,
+ lines,
+ unlines,
+ words,
+ unwords,
+ split,
+ splitWith,
+ join,
+-- unpackList, -- eek, otherwise it gets thrown away by the simplifier
+
+ ) where
+
+import qualified Prelude
+import Prelude hiding (
+ head,
+ tail,
+ null,
+ length,
+ (!!),
+ map,
+ filter,
+ reverse,
+ concat,
+ elem,
+ take,
+ drop,
+ foldl,
+ foldr,
+ splitAt,
+ takeWhile,
+ dropWhile,
+ span,
+ break,
+ lines,
+ unlines,
+ words,
+ unwords
+ )
+
+import GHC.Exts
+import GHC.IO (IO(..))
+import Foreign
+import Data.Typeable
+import Data.Char
+import qualified Data.List
+import System.IO
+
+-- -----------------------------------------------------------------------------
+-- PackedString type declaration
+
+-- | A space-efficient representation of a 'String', which supports
+-- various efficient operations. A 'PackedString' contains Latin1
+-- (8-bit) characters only.
+data PackedString = PS {-#UNPACK#-}!Int {-#UNPACK#-}!Int
+ {-#UNPACK#-}!(ForeignPtr Word8)
+ -- this is a pretty efficient representation, and can be
+ -- converted to/from a StorableArray.
+ -- When the ForeignPtr is unpacked, we get the Addr# stored
+ -- directly in the PS constructor.
+
+-- Perhaps making a slice should be conditional on the ratio of the
+-- slice/string size to limit memory leaks.
+
+instance Eq PackedString where
+ a == b = comparePS a b == EQ
+
+instance Ord PackedString where
+ compare = comparePS
+
+comparePS (PS off1 len1 fp1) (PS off2 len2 fp2)
+ = inlinePerformIO $
+ withForeignPtr fp1 $ \p1 ->
+ withForeignPtr fp2 $ \p2 ->
+ cmp (p1 `plusPtr` off1) (p2 `plusPtr` off2) len1
+ where
+ cmp :: Ptr Word8 -> Ptr Word8 -> Int -> IO Ordering
+ cmp p1 p2 n
+ | n == len1 = if n == len2 then return EQ else return LT
+ | n == len2 = return GT
+ | otherwise = do
+ a <- peekElemOff p1 n
+ b <- peekElemOff p2 n
+ case a `compare` b of
+ EQ -> cmp p1 p2 (n+1)
+ LT -> return LT
+ GT -> return GT
+
+--instance Read PackedString: ToDo
+
+instance Show PackedString where
+ showsPrec p ps r = showsPrec p (unpack ps) r
+
+#include "Typeable.h"
+INSTANCE_TYPEABLE0(PackedString,packedStringTc,"PackedString")
+
+-- -----------------------------------------------------------------------------
+-- Constructor functions
+
+-- | The 'nilPS' value is the empty string.
+nil :: PackedString
+nil = inlinePerformIO $ do
+ fp <- newForeignPtr_ nullPtr
+ return (PS 0 0 fp)
+
+-- | The 'consPS' function prepends the given character to the
+-- given string.
+cons :: Char -> PackedString -> PackedString
+cons c cs = pack (c : (unpack cs)) -- ToDo:better
+
+-- | Convert a 'String' into a 'PackedString'
+packLen :: Int -> String -> PackedString
+packLen len str = inlinePerformIO $ do
+ fp <- mallocForeignPtrBytes len
+ withForeignPtr fp $ \p -> do
+ fill_it_in p 0 str
+ return (PS 0 len fp)
+
+fill_it_in p i [] = return ()
+fill_it_in p i (c:cs) = do pokeElemOff p i (c2w c); fill_it_in p (i+1) cs
+
+pack :: String -> PackedString
+pack str = packLen (Prelude.length str) str
+
+{-# INLINE w2c #-}
+w2c :: Word8 -> Char
+w2c = chr . fromIntegral
+{-# INLINE c2w #-}
+c2w :: Char -> Word8
+c2w = fromIntegral . ord
+
+-- -----------------------------------------------------------------------------
+-- List-mimicking functions for PackedStrings
+
+-- | The 'length' function returns the length of the input list.
+-- Analogous to 'length'.
+length :: PackedString -> Int
+length (PS _ len _) = len
+
+-- | The 'index' function returns the character in the string at the
+-- given position.
+index :: PackedString -> Int -> Char
+index ps i
+ | i >= 0 && i < len = unsafeIndex ps i
+ | otherwise = error "Data.PackedString.Latin1.index: index out of range"
+ where len = length ps
+
+unsafeIndex :: PackedString -> Int -> Char
+unsafeIndex (PS off len fp) i =
+ withPackedString fp $ \p -> do
+ w <- peekElemOff (p `plusPtr` off) i
+ return $! w2c w
+
+-- | The 'head' function returns the first element of a
+-- 'PackedString' or throws an error if the string is empty.
+head :: PackedString -> Char
+head ps
+ | len <= 0 = error "Data.PackedString.Latin1.head: head []"
+ | otherwise = index ps 0
+ where len = length ps
+
+-- | The 'tail' function returns the tail of a 'PackedString' or throws an error
+-- if the string is empty.
+tail :: PackedString -> PackedString
+tail ps
+ | len <= 0 = error "Data.PackedString.Latin1.tail: tail []"
+ | len == 1 = nil
+ | otherwise = substr ps 1 (len - 1)
+ where len = length ps
+
+-- | The 'null' function returns True iff the argument is null.
+null :: PackedString -> Bool
+null (PS _ l _) = l == 0
+
+-- | The 'append' function appends the second string onto the first.
+append :: PackedString -> PackedString -> PackedString
+append xs ys
+ | null xs = ys
+ | null ys = xs
+ | otherwise = concat [xs,ys]
+
+-- | The 'map' function applies a function to each character in the string.
+map :: (Char -> Char) -> PackedString -> PackedString
+map f ps = packLen (length ps) (Prelude.map f (unpack ps))
+
+-- | The 'filter' function filters out the appropriate substring.
+filter :: (Char -> Bool) -> PackedString -> PackedString {-or String?-}
+filter pred ps = pack $ Prelude.filter pred $ unpack ps
+
+-- | The 'foldl' function behaves like 'foldl' on 'PackedString's.
+foldl :: (a -> Char -> a) -> a -> PackedString -> a
+foldl f b ps = Prelude.foldl f b $ unpack ps
+
+-- | The 'foldr' function behaves like 'foldr' on 'PackedString's.
+foldr :: (Char -> a -> a) -> a -> PackedString -> a
+foldr f v ps = Prelude.foldr f v $ unpack ps -- no intermediate list, we hope
+
+-- | The 'take' function takes the first @n@ characters of a 'PackedString'.
+take :: Int -> PackedString -> PackedString
+take n ps = substr ps 0 (n-1)
+
+-- | The 'drop' function drops the first @n@ characters of a 'PackedString'.
+drop :: Int -> PackedString -> PackedString
+drop n ps = substr ps n (length ps - 1)
+
+-- | The 'splitWith' function splits a 'PackedString' at a given index.
+splitAt :: Int -> PackedString -> (PackedString, PackedString)
+splitAt n ps = (take n ps, drop n ps)
+
+-- | The 'takeWhile' function is analogous to the 'takeWhile' function.
+takeWhile :: (Char -> Bool) -> PackedString -> PackedString
+takeWhile pred ps = pack $ Prelude.takeWhile pred $ unpack ps
+
+-- | The 'dropWhile' function is analogous to the 'dropWhile' function.
+dropWhile :: (Char -> Bool) -> PackedString -> PackedString
+dropWhile pred ps = pack $ Prelude.dropWhile pred $ unpack ps
+
+-- | The 'elem' function returns True iff the given element is in the string.
+elem :: Char -> PackedString -> Bool
+elem c ps = c `Prelude.elem` unpack ps
+
+-- | The 'span' function returns a pair containing the result of
+-- running both 'takeWhile' and 'dropWhile'.
+span :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)
+span p ps = (takeWhile p ps, dropWhile p ps)
+
+-- | The 'break' function breaks a string at the first position which
+-- satisfies the predicate.
+break :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)
+break p ps = span (not . p) ps
+
+-- | The 'lines' function splits the input on line-breaks.
+lines :: PackedString -> [PackedString]
+lines ps = split '\n' ps
+
+-- | The 'unlines' function concatenates the input list after
+-- interspersing newlines.
+unlines :: [PackedString] -> PackedString
+unlines pss = join (pack "\n") pss
+
+-- | The 'words' function is analogous to the 'words' function.
+words :: PackedString -> [PackedString]
+words ps = Prelude.filter (not.null) (splitWith isSpace ps)
+
+-- | The 'unwords' function is analogous to the 'unwords' function.
+unwords :: [PackedString] -> PackedString
+unwords pss = join (pack " ") pss
+
+-- | The 'reverse' function reverses the string.
+reverse :: PackedString -> PackedString
+reverse ps = pack $ Prelude.reverse $ unpack ps
+
+-- | The 'concat' function concatenates a list of 'PackedString's.
+concat :: [PackedString] -> PackedString
+concat pss = pack $ Prelude.concat $ Prelude.map unpack pss
+
+------------------------------------------------------------
+
+-- | The 'join' function takes a 'PackedString' and a list of 'PackedString's
+-- and concatenates the list after interspersing the first argument between
+-- each element of the list.
+join :: PackedString -> [PackedString] -> PackedString
+join filler pss = concat (splice pss)
+ where
+ splice [] = []
+ splice [x] = [x]
+ splice (x:y:xs) = x:filler:splice (y:xs)
+
+-- ToDo: the obvious generalisation
+{-
+ Some properties that hold:
+
+ * split x ls = ls'
+ where False = any (map (x `elem`) ls')
+
+ * join (pack [x]) (split x ls) = ls
+-}
+
+-- | The 'split' function splits the input string on each occurrence of the given 'Char'.
+split :: Char -> PackedString -> [PackedString]
+split c = splitWith (== c)
+
+splitWith :: (Char -> Bool) -> PackedString -> [PackedString]
+splitWith pred (PS off 0 fp) = []
+splitWith pred (PS off len fp) = splitWith' pred off len fp
+
+splitWith' pred off len fp =
+ withPackedString fp $ \p -> splitLoop pred p 0 off len fp
+
+splitLoop pred p idx off len fp
+ | p `seq` idx `seq` off `seq` fp `seq` False = undefined
+splitLoop pred p idx off len fp
+ | idx >= len = return [PS off idx fp]
+ | otherwise = do
+ w <- peekElemOff p (off+idx)
+ if pred (w2c w)
+ then return (PS off idx fp :
+ splitWith' pred (off+idx+1) (len-idx-1) fp)
+ else splitLoop pred p (idx+1) off len fp
+
+-- -----------------------------------------------------------------------------
+-- Local utility functions
+
+-- The definition of @_substr@ is essentially:
+-- @take (end - begin + 1) (drop begin str)@.
+
+-- | The 'substr' function takes a 'PackedString' and two indices
+-- and returns the substring of the input string between (and including)
+-- these indices.
+substr :: PackedString -> Int -> Int -> PackedString
+substr (PS off len fp) begin end = PS (off+begin) (end-begin+1) fp
+
+-- -----------------------------------------------------------------------------
+-- hPut
+
+-- | Outputs a 'PackedString' to the specified 'Handle'.
+--
+-- NOTE: the string will be output directly in Latin-1.
+--
+hPut :: Handle -> PackedString -> IO ()
+hPut h (PS off l fp) =
+ withForeignPtr fp $ \p ->
+ hPutBuf h (p `plusPtr` off) l
+
+-- -----------------------------------------------------------------------------
+-- hGet
+
+-- | Read a 'PackedString' directly from the specified 'Handle'.
+-- This is far more efficient than reading the characters into a 'String'
+-- and then using 'pack'.
+--
+-- NOTE: as with 'hPut', the string representation in the file is
+-- assumed to be Latin-1.
+hGet :: Handle -> Int -> IO PackedString
+hGet h i = do
+ fp <- mallocForeignPtrBytes i
+ withForeignPtr fp $ \p -> do
+ l <- hGetBuf h p i
+ return (PS 0 l fp)
+
+-- -----------------------------------------------------------------------------
+-- unpacking
+
+{-# INLINE unpack #-}
+unpack :: PackedString -> String
+unpack ps = build (unpackFoldr ps)
+
+{-# RULES
+"unpack-list" [1] forall p . unpackFoldr p (:) [] = unpackList p
+ #-}
+
+unpackList :: PackedString -> [Char]
+unpackList (PS off len fp) =
+ withPackedString fp $ \p -> do
+ let loop p (-1) acc = return acc
+ loop p n acc = do
+ a <- peekElemOff p n
+ loop p (n-1) (w2c a : acc)
+ loop (p `plusPtr` off) (len-1) []
+
+{-# INLINE [0] unpackFoldr #-}
+unpackFoldr :: PackedString -> (Char -> a -> a) -> a -> a
+unpackFoldr (PS off len fp) f c =
+ withPackedString fp $ \p -> do
+ let loop p (-1) acc = return acc
+ loop p n acc = do
+ a <- peekElemOff p n
+ loop p (n-1) (w2c a `f` acc)
+ loop (p `plusPtr` off) (len-1) c
+
+-- -----------------------------------------------------------------------------
+-- Utils
+
+-- Just like unsafePerformIO, but we inline it.
+{-# INLINE inlinePerformIO #-}
+inlinePerformIO :: IO a -> a
+inlinePerformIO (IO m) = case m realWorld# of (# _, r #) -> r
+
+withPackedString :: ForeignPtr a -> (Ptr a -> IO b) -> b
+withPackedString fp io = inlinePerformIO (withForeignPtr fp io)
diff --git a/testsuite/tests/simplCore/should_compile/spec002.hs b/testsuite/tests/simplCore/should_compile/spec002.hs
new file mode 100644
index 0000000000..1fb88d995c
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/spec002.hs
@@ -0,0 +1,17 @@
+{-# OPTIONS_GHC -O2 #-}
+
+-- Ths one fooled the rule-matching in SpecConstr, and gave a CoreLint error
+
+module Foo where
+
+type Token = (Int, Int, Lex, String)
+
+data Lex = Llbrace
+
+laLayout :: Int -> [Int] -> [Token] -> [Token]
+
+laLayout l (s:ss) (t1@(l1, n1, w1, c1) :
+ t2@(l2, n2, w2, c2) : ts)
+ | n1 < s = laLayout l2 (n2:s:ss) ts
+ | otherwise = laLayout l ss (t1:t2:ts)
+
diff --git a/testsuite/tests/simplCore/should_compile/spec003.hs b/testsuite/tests/simplCore/should_compile/spec003.hs
new file mode 100644
index 0000000000..7ebb901106
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/spec003.hs
@@ -0,0 +1,11 @@
+-- Trac #1402
+-- Broke the specialiser
+
+module ShouldCompile where
+
+newtype Gen a = MkGen{ unGen :: Int -> a }
+
+choose :: Eq a => a -> Gen a
+choose n = MkGen (\r -> n)
+
+oneof = choose (1::Int)
diff --git a/testsuite/tests/simplCore/should_compile/strict-float.hs b/testsuite/tests/simplCore/should_compile/strict-float.hs
new file mode 100644
index 0000000000..77954b76bb
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/strict-float.hs
@@ -0,0 +1,13 @@
+
+-- Test from Kirsten Chevalier
+-- Tests the "strict bindings getting floated to top" bug in the floater
+
+module B (bernoulli) where
+
+powers = [2..] : powers
+
+neg_powers = map (zip (iterate id True)) powers
+
+bernoulli = head powers
+ where powers = head neg_powers
+
diff --git a/testsuite/tests/simplCore/should_run/Makefile b/testsuite/tests/simplCore/should_run/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/simplCore/should_run/SeqRule.hs b/testsuite/tests/simplCore/should_run/SeqRule.hs
new file mode 100644
index 0000000000..b1569efd7b
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/SeqRule.hs
@@ -0,0 +1,16 @@
+
+-- This test checks that the magic treatment of RULES
+-- for 'seq' works right.
+--
+-- See Note [RULES for seq] in MkId for more details
+
+module Main where
+
+{-# NOINLINE f #-}
+f x = not x
+
+{-# RULES
+ "f/seq" forall n e. seq (f n) e = True
+ #-}
+
+main = print (seq (f True) False)
diff --git a/testsuite/tests/simplCore/should_run/SeqRule.stdout b/testsuite/tests/simplCore/should_run/SeqRule.stdout
new file mode 100644
index 0000000000..0ca95142bb
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/SeqRule.stdout
@@ -0,0 +1 @@
+True
diff --git a/testsuite/tests/simplCore/should_run/T2486.hs b/testsuite/tests/simplCore/should_run/T2486.hs
new file mode 100644
index 0000000000..2f5df48532
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T2486.hs
@@ -0,0 +1,37 @@
+{-# OPTIONS_GHC -O -ddump-rules #-}
+
+-- Trac #2486
+--
+-- The thing to look for here is that specialisations for fib and tak
+-- at both Int and Double are indeed generated; hence -ddump-rules
+
+module Main where
+
+import System.Environment
+import Numeric
+
+main = do
+ n <- getArgs >>= readIO . head
+ let m = n-1
+ a = 27 + fromIntegral n
+ putStr $
+ line "Ack" [3,n] (ack 3 n) show ++
+ line "Fib" [a] (fib a :: Double) (\n -> showFFloat (Just 1) n []) ++
+ line "Tak" [3*m,2*m,m] (tak (3*m) (2*m) m :: Int) show ++
+ line "Fib" [3] (fib 3 :: Int) show ++
+ line "Tak" [3,2,1] (tak 3 2 1 :: Double) show
+ where
+ line pre a r f = pre ++ "(" ++ csv f a "" ++ "): " ++ f r ++ "\n"
+ csv f [a] s = s ++ f a
+ csv f (a:b) s = s ++ f a ++ "," ++ csv f b s
+
+ack :: Int -> Int -> Int
+ack 0 n = n+1
+ack m 0 = ack (m-1) 1
+ack m n = ack (m-1) (ack m (n-1))
+
+fib :: (Num a, Ord a) => a -> a
+fib n = if n >= 2 then fib (n-1) + fib (n-2) else 1
+
+tak :: (Num a, Ord a) => a -> a -> a -> a
+tak x y z = if y < x then tak (tak (x-1) y z) (tak (y-1) z x) (tak (z-1) x y) else z
diff --git a/testsuite/tests/simplCore/should_run/T2486.stderr b/testsuite/tests/simplCore/should_run/T2486.stderr
new file mode 100644
index 0000000000..968e8dbdb4
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T2486.stderr
@@ -0,0 +1,24 @@
+
+==================== Tidy Core rules ====================
+"SPEC Main.fib [GHC.Types.Double]" [ALWAYS]
+ forall ($dNum :: GHC.Num.Num GHC.Types.Double)
+ ($dOrd :: GHC.Classes.Ord GHC.Types.Double).
+ Main.fib @ GHC.Types.Double $dNum $dOrd
+ = Main.fib_$sfib1
+"SPEC Main.fib [GHC.Types.Int]" [ALWAYS]
+ forall ($dNum :: GHC.Num.Num GHC.Types.Int)
+ ($dOrd :: GHC.Classes.Ord GHC.Types.Int).
+ Main.fib @ GHC.Types.Int $dNum $dOrd
+ = Main.fib_$sfib
+"SPEC Main.tak [GHC.Types.Double]" [ALWAYS]
+ forall ($dNum :: GHC.Num.Num GHC.Types.Double)
+ ($dOrd :: GHC.Classes.Ord GHC.Types.Double).
+ Main.tak @ GHC.Types.Double $dNum $dOrd
+ = Main.tak_$stak1
+"SPEC Main.tak [GHC.Types.Int]" [ALWAYS]
+ forall ($dNum :: GHC.Num.Num GHC.Types.Int)
+ ($dOrd :: GHC.Classes.Ord GHC.Types.Int).
+ Main.tak @ GHC.Types.Int $dNum $dOrd
+ = Main.tak_$stak
+
+
diff --git a/testsuite/tests/simplCore/should_run/T2756.hs b/testsuite/tests/simplCore/should_run/T2756.hs
new file mode 100644
index 0000000000..cb59d50c9b
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T2756.hs
@@ -0,0 +1,15 @@
+module Main where
+
+data X = X ()
+
+{-# NOINLINE newX #-}
+newX :: () -> IO X
+newX n = do
+ let {-# NOINLINE value #-}
+ value = n
+ return (X value)
+
+main = do
+ x <- newX (error "Why?")
+ case x of
+ X _ -> return ()
diff --git a/testsuite/tests/simplCore/should_run/T2756.stdout b/testsuite/tests/simplCore/should_run/T2756.stdout
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T2756.stdout
diff --git a/testsuite/tests/simplCore/should_run/T3403.hs b/testsuite/tests/simplCore/should_run/T3403.hs
new file mode 100644
index 0000000000..276aae88b2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3403.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE BangPatterns #-}
+
+
+-- See Trac #3403: interaction of pattern match failure and CPR
+-- The point is that this should run in constant space, with no
+-- stack growth. In GHC 6.10 the tail call optimisation didn't work.
+
+module Main (main) where
+
+import qualified Data.Set as Set
+import Data.Set (Set)
+
+data Result = Result !S1 !S2
+
+type S1 = Set ()
+type S2 = Set ()
+
+input :: [[(Int, ())]]
+input = replicate 1000 (replicate 400 (100, ()))
+
+main :: IO ()
+main = do let Result s1 s2 = doAll Set.empty Set.empty () input
+ print $ Set.size s1
+ print $ Set.size s2
+
+doAll :: S1 -> S2 -> () -> [[(Int, ())]] -> Result
+doAll !s1 !s2 !_ [] = Result s1 s2
+doAll !s1 !s2 !unit ([] : xs) = doAll s1 s2 unit xs
+doAll !s1 !s2 !unit (((t, _) : x1) : x2 : xs)
+ | t >= 99999 = doAll s1 s2 unit (x1 : x2 : xs)
+doAll !s1 !s2 !unit (((_, ()) : x) : xs)
+ = doAll s1 s2 unit (x : xs)
diff --git a/testsuite/tests/simplCore/should_run/T3403.stdout b/testsuite/tests/simplCore/should_run/T3403.stdout
new file mode 100644
index 0000000000..aa47d0d46d
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3403.stdout
@@ -0,0 +1,2 @@
+0
+0
diff --git a/testsuite/tests/simplCore/should_run/T3437.hs b/testsuite/tests/simplCore/should_run/T3437.hs
new file mode 100644
index 0000000000..9ef6ee8b82
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3437.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE BangPatterns #-}
+{-# OPTIONS_GHC -O2 #-}
+
+-- Trac #3437
+-- When we do SpecConstr on 'go', we want the specialised
+-- function to *still* be strict in k. Otherwise we get
+-- a bad space leak!
+
+-- The test is run with +RTS -M10m to limit the amount of heap
+-- It should run in constant space, but if the function isn't
+-- strict enough it'll run out of heap
+
+module Main where
+
+go :: [Int] -> [Int] -> [Int]
+go (0:xs) !k = k
+go (n:xs) !k = go (n-1 : xs) (k ++ k)
+
+main = print (go [100000000] [])
diff --git a/testsuite/tests/simplCore/should_run/T3437.stdout b/testsuite/tests/simplCore/should_run/T3437.stdout
new file mode 100644
index 0000000000..fe51488c70
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3437.stdout
@@ -0,0 +1 @@
+[]
diff --git a/testsuite/tests/simplCore/should_run/T3591.hs b/testsuite/tests/simplCore/should_run/T3591.hs
new file mode 100644
index 0000000000..491ba5fa17
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3591.hs
@@ -0,0 +1,206 @@
+{-
+ Copyright 2009 Mario Blazevic
+
+ This file is part of the Streaming Component Combinators (SCC) project.
+
+ The SCC project is free software: you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ SCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with SCC. If not, see <http://www.gnu.org/licenses/>.
+-}
+
+-- | Module "Trampoline" defines the pipe computations and their basic building blocks.
+
+{-# LANGUAGE ScopedTypeVariables, Rank2Types, MultiParamTypeClasses,
+ TypeFamilies, KindSignatures, FlexibleContexts,
+ FlexibleInstances, OverlappingInstances, UndecidableInstances
+ #-}
+
+{- Somewhere we get:
+
+ Wanted: AncestorFunctor (EitherFunctor a (TryYield a)) d
+ This should not reduce because of overlapping instances
+
+ If it (erroneously) does reduce, via dfun2 we get
+ Wanted: Functor (EitherFunctor a (TryYield a)
+ Functor d'
+ Functor d
+ d ~ EitherFunctor d' s
+ AncestorFunctor (EitherFunctor a (TryYield a) d'
+
+
+ And that gives an infinite loop in the type checker!
+-}
+
+
+module Main where
+
+import Control.Monad (liftM, liftM2, when)
+-- import Control.Monad.Identity
+
+import Debug.Trace (trace)
+
+
+-------------
+class (Functor a, Functor d) => AncestorFunctor a d where
+ liftFunctor :: a x -> d x
+
+-- dfun 1
+instance Functor a => AncestorFunctor a a where
+ liftFunctor = trace "liftFunctor id" . id
+
+-- dfun 2
+instance ( Functor a
+ , Functor d'
+ , Functor d
+ , d ~ EitherFunctor d' s
+ , AncestorFunctor a d')
+ => AncestorFunctor a d where
+ liftFunctor = LeftF . (trace "liftFunctor other" . liftFunctor :: a x -> d' x)
+
+
+
+
+-------------
+newtype Identity a = Identity { runIdentity :: a }
+instance Monad Identity where
+ return a = Identity a
+ m >>= k = k (runIdentity m)
+
+newtype Trampoline m s r = Trampoline {bounce :: m (TrampolineState m s r)}
+data TrampolineState m s r = Done r | Suspend! (s (Trampoline m s r))
+
+instance (Monad m, Functor s) => Monad (Trampoline m s) where
+ return x = Trampoline (return (Done x))
+ t >>= f = Trampoline (bounce t >>= apply f)
+ where apply f (Done x) = bounce (f x)
+ apply f (Suspend s) = return (Suspend (fmap (>>= f) s))
+
+data Yield x y = Yield! x y
+instance Functor (Yield x) where
+ fmap f (Yield x y) = trace "fmap yield" $ Yield x (f y)
+
+data Await x y = Await! (x -> y)
+instance Functor (Await x) where
+ fmap f (Await g) = trace "fmap await" $ Await (f . g)
+
+data EitherFunctor l r x = LeftF (l x) | RightF (r x)
+instance (Functor l, Functor r) => Functor (EitherFunctor l r) where
+ fmap f v = trace "fmap Either" $
+ case v of
+ LeftF l -> trace "fmap LeftF" $ LeftF (fmap f l)
+ RightF r -> trace "fmap RightF" $ RightF (fmap f r)
+
+type TryYield x = EitherFunctor (Yield x) (Await Bool)
+
+suspend :: (Monad m, Functor s) => s (Trampoline m s x) -> Trampoline m s x
+suspend s = Trampoline (return (Suspend s))
+
+yield :: forall m x. Monad m => x -> Trampoline m (Yield x) ()
+yield x = suspend (Yield x (return ()))
+
+await :: forall m x. Monad m => Trampoline m (Await x) x
+await = suspend (Await return)
+
+tryYield :: forall m x. Monad m => x -> Trampoline m (TryYield x) Bool
+tryYield x = suspend (LeftF (Yield x (suspend (RightF (Await return)))))
+
+canYield :: forall m x. Monad m => Trampoline m (TryYield x) Bool
+canYield = suspend (RightF (Await return))
+
+liftBounce :: Monad m => m x -> Trampoline m s x
+liftBounce = Trampoline . liftM Done
+
+fromTrampoline :: Monad m => Trampoline m s x -> m x
+fromTrampoline t = bounce t >>= \(Done x)-> return x
+
+runTrampoline :: Monad m => Trampoline m Maybe x -> m x
+runTrampoline = fromTrampoline
+
+coupleNestedFinite :: (Functor s, Monad m) =>
+ Trampoline m (EitherFunctor s (TryYield a)) x
+ -> Trampoline m (EitherFunctor s (Await (Maybe a))) y -> Trampoline m s (x, y)
+coupleNestedFinite t1 t2 =
+ trace "bounce start" $
+ liftBounce (liftM2 (,) (bounce t1) (bounce t2))
+ >>= \(s1, s2)-> trace "bounce end" $
+ case (s1, s2)
+ of (Done x, Done y) -> return (x, y)
+ (Done x, Suspend (RightF (Await c2))) -> coupleNestedFinite (return x) (c2 Nothing)
+ (Suspend (RightF (LeftF (Yield _ c1))), Done y) -> coupleNestedFinite c1 (return y)
+ (Suspend (RightF (LeftF (Yield x c1))), Suspend (RightF (Await c2))) -> coupleNestedFinite c1 (c2 $ Just x)
+ (Suspend (RightF (RightF (Await c1))), Suspend s2@(RightF Await{})) -> coupleNestedFinite (c1 True) (suspend s2)
+ (Suspend (RightF (RightF (Await c1))), Done y) -> coupleNestedFinite (c1 False) (return y)
+ (Suspend (LeftF s), Done y) -> suspend (fmap (flip coupleNestedFinite (return y)) s)
+ (Done x, Suspend (LeftF s)) -> suspend (fmap (coupleNestedFinite (return x)) s)
+ (Suspend (LeftF s1), Suspend (LeftF s2)) -> suspend (fmap (coupleNestedFinite $ suspend $ LeftF s1) s2)
+ (Suspend (LeftF s1), Suspend (RightF s2)) -> suspend (fmap (flip coupleNestedFinite (suspend $ RightF s2)) s1)
+ (Suspend (RightF s1), Suspend (LeftF s2)) -> suspend (fmap (coupleNestedFinite (suspend $ RightF s1)) s2)
+
+local :: forall m l r x. (Monad m, Functor r) => Trampoline m r x -> Trampoline m (EitherFunctor l r) x
+local (Trampoline mr) = Trampoline (liftM inject mr)
+ where inject :: TrampolineState m r x -> TrampolineState m (EitherFunctor l r) x
+ inject (Done x) = Done x
+ inject (Suspend r) = Suspend (RightF $ fmap local r)
+
+out :: forall m l r x. (Monad m, Functor l) => Trampoline m l x -> Trampoline m (EitherFunctor l r) x
+out (Trampoline ml) = Trampoline (liftM inject ml)
+ where inject :: TrampolineState m l x -> TrampolineState m (EitherFunctor l r) x
+ inject (Done x) = Done x
+ inject (Suspend l) = Suspend (LeftF $ fmap out l)
+
+liftOut :: forall m a d x. (Monad m, Functor a, AncestorFunctor a d) => Trampoline m a x -> Trampoline m d x
+liftOut (Trampoline ma) = trace "liftOut" $ Trampoline (liftM inject ma)
+ where inject :: TrampolineState m a x -> TrampolineState m d x
+ inject (Done x) = Done x
+ inject (Suspend a) = trace "inject suspend" $ Suspend (liftFunctor $ trace "calling fmap" $
+ fmap liftOut (trace "poking a" a))
+
+data Sink (m :: * -> *) a x =
+ Sink {put :: forall d. (AncestorFunctor (EitherFunctor a (TryYield x)) d) => x -> Trampoline m d Bool,
+ canPut :: forall d. (AncestorFunctor (EitherFunctor a (TryYield x)) d) => Trampoline m d Bool}
+newtype Source (m :: * -> *) a x =
+ Source {get :: forall d. (AncestorFunctor (EitherFunctor a (Await (Maybe x))) d) => Trampoline m d (Maybe x)}
+
+pipe :: forall m a x r1 r2. (Monad m, Functor a) =>
+ (Sink m a x -> Trampoline m (EitherFunctor a (TryYield x)) r1)
+ -> (Source m a x -> Trampoline m (EitherFunctor a (Await (Maybe x))) r2) -> Trampoline m a (r1, r2)
+pipe producer consumer = coupleNestedFinite (producer sink) (consumer source) where
+ sink = Sink {put= liftOut . (local . tryYield :: x -> Trampoline m (EitherFunctor a (TryYield x)) Bool),
+ canPut= liftOut (local canYield :: Trampoline m (EitherFunctor a (TryYield x)) Bool)} :: Sink m a x
+ source = Source (liftOut (local await :: Trampoline m (EitherFunctor a (Await (Maybe x))) (Maybe x))) :: Source m a x
+
+pipeProducer sink = do put sink 1
+ (c, d) <- pipe
+ (\sink'-> do put sink' 2
+ put sink 3
+ put sink' 4
+ return 5)
+ (\source'-> do Just n <- get source'
+ put sink n
+ put sink 6
+ return n)
+ put sink c
+ put sink d
+ return (c, d)
+
+testPipe = print $
+ runIdentity $
+ runTrampoline $
+ do (a, b) <- pipe
+ pipeProducer
+ (\source-> do Just n1 <- get source
+ Just n2 <- get source
+ Just n3 <- get source
+ return (n1, n2, n3))
+ return (a, b)
+
+main = testPipe
diff --git a/testsuite/tests/simplCore/should_run/T3591.stderr b/testsuite/tests/simplCore/should_run/T3591.stderr
new file mode 100644
index 0000000000..3fcef522a9
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3591.stderr
@@ -0,0 +1,456 @@
+bounce start
+bounce end
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap yield
+fmap yield
+fmap yield
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap await
+fmap await
+fmap await
+bounce start
+bounce end
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap RightF
+fmap RightF
+fmap RightF
+fmap await
+fmap await
+fmap await
+liftOut
+fmap Either
+fmap RightF
+fmap await
+bounce start
+bounce end
+liftOut
+bounce start
+bounce end
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap yield
+fmap yield
+fmap yield
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap await
+fmap await
+fmap await
+bounce start
+bounce end
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap RightF
+fmap RightF
+fmap RightF
+fmap await
+fmap await
+fmap await
+liftOut
+liftOut
+inject suspend
+fmap Either
+fmap LeftF
+fmap Either
+fmap Either
+liftFunctor other
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap RightF
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap yield
+fmap yield
+fmap yield
+fmap yield
+fmap yield
+bounce start
+bounce end
+bounce start
+bounce end
+liftOut
+inject suspend
+fmap Either
+fmap LeftF
+fmap Either
+fmap Either
+liftFunctor other
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap RightF
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap RightF
+fmap RightF
+fmap RightF
+fmap RightF
+fmap RightF
+fmap await
+fmap await
+fmap await
+fmap await
+fmap await
+liftOut
+fmap Either
+fmap RightF
+fmap await
+bounce start
+bounce end
+bounce start
+bounce end
+liftOut
+liftOut
+inject suspend
+fmap Either
+fmap LeftF
+fmap Either
+fmap Either
+liftFunctor other
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap RightF
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap yield
+fmap yield
+fmap yield
+fmap yield
+fmap yield
+bounce start
+bounce end
+bounce start
+bounce end
+liftOut
+inject suspend
+fmap Either
+fmap LeftF
+fmap Either
+fmap Either
+liftFunctor other
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap RightF
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap RightF
+fmap RightF
+fmap RightF
+fmap RightF
+fmap RightF
+fmap await
+fmap await
+fmap await
+fmap await
+fmap await
+liftOut
+bounce start
+bounce end
+bounce start
+bounce end
+liftOut
+bounce start
+bounce end
+liftOut
+liftOut
+inject suspend
+fmap Either
+fmap LeftF
+fmap Either
+fmap Either
+liftFunctor other
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap RightF
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap yield
+fmap yield
+fmap yield
+fmap yield
+fmap yield
+bounce start
+bounce end
+bounce start
+bounce end
+liftOut
+inject suspend
+fmap Either
+fmap LeftF
+fmap Either
+fmap Either
+liftFunctor other
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap RightF
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap Either
+fmap RightF
+fmap RightF
+fmap RightF
+fmap RightF
+fmap RightF
+fmap await
+fmap await
+fmap await
+fmap await
+fmap await
+bounce start
+bounce end
+bounce start
+bounce end
+liftOut
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap yield
+fmap yield
+fmap yield
+bounce start
+bounce end
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap RightF
+fmap RightF
+fmap RightF
+fmap await
+fmap await
+fmap await
+bounce start
+bounce end
+liftOut
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap yield
+fmap yield
+fmap yield
+bounce start
+bounce end
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap RightF
+fmap RightF
+fmap RightF
+fmap await
+fmap await
+fmap await
+bounce start
+bounce end
+liftOut
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap LeftF
+fmap LeftF
+fmap LeftF
+fmap yield
+fmap yield
+fmap yield
+bounce start
+bounce end
+liftOut
+inject suspend
+liftFunctor id
+calling fmap
+fmap Either
+poking a
+fmap RightF
+fmap Either
+fmap RightF
+fmap Either
+fmap Either
+fmap Either
+fmap RightF
+fmap RightF
+fmap RightF
+fmap await
+fmap await
+fmap await
+bounce start
+bounce end
+liftOut
diff --git a/testsuite/tests/simplCore/should_run/T3591.stdout b/testsuite/tests/simplCore/should_run/T3591.stdout
new file mode 100644
index 0000000000..0c69a05357
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3591.stdout
@@ -0,0 +1 @@
+((5,2),(1,2,6))
diff --git a/testsuite/tests/simplCore/should_run/T3959.hs b/testsuite/tests/simplCore/should_run/T3959.hs
new file mode 100644
index 0000000000..725f315da8
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3959.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE ScopedTypeVariables, DeriveDataTypeable #-}
+module Main(main,f) where
+
+import Data.List (isPrefixOf)
+import Data.Dynamic
+import Control.Exception as E
+
+data Failure = Failure
+ deriving (Show, Typeable)
+
+instance Exception Failure
+
+test = (E.throw Failure >> return ())
+ `E.catch`
+ (\(x::Failure) -> return ())
+
+main :: IO ()
+main = print =<< test
+
+f :: Bool -> Bool -> Bool
+f True = error "urk"
+-- f False = \y -> y
+
+{-
+Uderlying cause: we call
+ catch# thing handler
+and expect that (thing state-token) will
+ - either diverge/throw an exception
+ - or return (# x,y #)
+But it does neither: it returns a PAP, because
+ thing = \p q. blah
+
+In particular, 'thing = lvl_sxo' is
+ lvl_sxc :: IO Any
+ lvl_sxc = error "urk"
+
+ lvl_sxo :: IO ()
+ = lvl_sxc >> return ()
+
+ -- inline (>>) --
+
+ = (\(eta::S#). case lvl_sxc |> g1 eta of ...) |> g2
+ where
+ g1 :: IO Any ~ S# -> (# S#, Any #)
+ g2 :: S# -> (# S#, () #) -> IO ()
+
+ -- case-of-bottomming function --
+
+ = (\ (eta::S#). lvl_sxc |> g1 |> ug3) |> g2
+ where
+ ug3(unsafe) :: S# -> (S#, Any) ~ (# S#, () #)
+
+This is all fine. But it's crucial that lvl_sxc actually diverges.
+Do not eta-expand it to
+
+ lvl_sxc :: IO Any
+ lvl_sxc = \eta. error "urk" |> ug4
+ where
+ ug4(unsafe) :: S# -> (# S#, Any #) ~ IO Any
+
+In contrast, if we had
+ case x of
+ True -> \a -> 3
+ False -> error "urk"
+we can, and must, eta-expand the error
+
+-} \ No newline at end of file
diff --git a/testsuite/tests/simplCore/should_run/T3959.stdout b/testsuite/tests/simplCore/should_run/T3959.stdout
new file mode 100644
index 0000000000..6a452c185a
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3959.stdout
@@ -0,0 +1 @@
+()
diff --git a/testsuite/tests/simplCore/should_run/T3972.hs b/testsuite/tests/simplCore/should_run/T3972.hs
new file mode 100644
index 0000000000..324ddd4f9a
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3972.hs
@@ -0,0 +1,25 @@
+
+module Main (main) where
+
+import T3972A (Expr(E10), Token, spanning, getSpan)
+
+import Control.Monad
+import System.Exit
+import System.IO
+
+main :: IO ()
+main = do h <- openFile "T3972.o" ReadMode
+ s <- hFileSize h
+ hClose h
+ -- size is just under 8k on amd64/Linux in 6.13, but was
+ -- around 3.5M in 6.12. Let's try >20k as the test for
+ -- having regressed.
+ when (s > 20000) $ do
+ hPutStrLn stderr ("T3972.o is too big! " ++ show s)
+ exitFailure
+
+makeTupleOrExpr :: [Expr] -> Maybe Token -> Expr
+makeTupleOrExpr [e] Nothing = e
+makeTupleOrExpr es@(_:_) (Just t) = E10 (spanning es t)
+makeTupleOrExpr es@(_:_) Nothing = E10 (getSpan es)
+
diff --git a/testsuite/tests/simplCore/should_run/T3972A.hs b/testsuite/tests/simplCore/should_run/T3972A.hs
new file mode 100644
index 0000000000..b8202f7448
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3972A.hs
@@ -0,0 +1,86 @@
+
+module T3972A (Expr(..), Token(..), spanning, getSpan) where
+
+class Span a where
+ getSpan :: a -> SrcSpan
+
+spanning :: (Span a, Span b) => a -> b -> SrcSpan
+spanning x y = combineSrcSpans (getSpan x) (getSpan y)
+
+instance Span a => Span [a] where
+ getSpan [] = error "[]"
+ getSpan [x] = getSpan x
+ getSpan list@(x:_) = combineSrcSpans (getSpan x) (getSpan (last list))
+
+data SrcSpan
+
+ = SpanMultiLine
+ { span_start_row :: !Int
+ , span_start_column :: !Int
+ , span_end_row :: !Int
+ , span_end_column :: !Int
+ }
+
+combineSrcSpans :: SrcSpan -> SrcSpan -> SrcSpan
+combineSrcSpans start end
+ = case row1 `compare` row2 of
+ LT -> SpanMultiLine row1 col1 row2 col2
+ _ -> SpanMultiLine row2 col2 row1 col1
+ where
+ row1 = startRow start
+ col1 = startCol start
+ row2 = endRow end
+ col2 = endCol end
+
+
+startRow :: SrcSpan -> Int
+startRow (SpanMultiLine { span_start_row = row }) = row
+
+endRow :: SrcSpan -> Int
+endRow (SpanMultiLine { span_end_row = row }) = row
+
+startCol :: SrcSpan -> Int
+startCol (SpanMultiLine { span_start_column = col }) = col
+
+endCol :: SrcSpan -> Int
+endCol (SpanMultiLine { span_end_column = col }) = col
+
+data Token
+ = T10 { token_SrcSpan :: SrcSpan }
+ | T11 { token_SrcSpan :: SrcSpan }
+ | T12 { token_SrcSpan :: SrcSpan }
+ | T13 { token_SrcSpan :: SrcSpan }
+ | T14 { token_SrcSpan :: SrcSpan }
+ | T15 { token_SrcSpan :: SrcSpan }
+ | T16 { token_SrcSpan :: SrcSpan }
+ | T17 { token_SrcSpan :: SrcSpan }
+ | T18 { token_SrcSpan :: SrcSpan }
+ | T19 { token_SrcSpan :: SrcSpan }
+ | T20 { token_SrcSpan :: SrcSpan }
+ | T21 { token_SrcSpan :: SrcSpan }
+ | T22 { token_SrcSpan :: SrcSpan }
+ | T23 { token_SrcSpan :: SrcSpan }
+ | T24 { token_SrcSpan :: SrcSpan }
+
+instance Span Token where
+ getSpan = token_SrcSpan
+
+data Expr
+ = E10 { expr_SrcSpan :: SrcSpan }
+ | E11 { expr_SrcSpan :: SrcSpan }
+ | E12 { expr_SrcSpan :: SrcSpan }
+ | E13 { expr_SrcSpan :: SrcSpan }
+ | E14 { expr_SrcSpan :: SrcSpan }
+ | E15 { expr_SrcSpan :: SrcSpan }
+ | E16 { expr_SrcSpan :: SrcSpan }
+ | E17 { expr_SrcSpan :: SrcSpan }
+ | E18 { expr_SrcSpan :: SrcSpan }
+ | E19 { expr_SrcSpan :: SrcSpan }
+ | E20 { expr_SrcSpan :: SrcSpan }
+ | E21 { expr_SrcSpan :: SrcSpan }
+ | E22 { expr_SrcSpan :: SrcSpan }
+ | E23 { expr_SrcSpan :: SrcSpan }
+ | E24 { expr_SrcSpan :: SrcSpan }
+
+instance Span Expr where
+ getSpan = expr_SrcSpan
diff --git a/testsuite/tests/simplCore/should_run/T3983.hs b/testsuite/tests/simplCore/should_run/T3983.hs
new file mode 100644
index 0000000000..7a665256b1
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3983.hs
@@ -0,0 +1,5 @@
+module Main where
+import T3983_Foo
+import T3983_Bar
+
+main = catchX (foo False True) >>= print \ No newline at end of file
diff --git a/testsuite/tests/simplCore/should_run/T3983.stdout b/testsuite/tests/simplCore/should_run/T3983.stdout
new file mode 100644
index 0000000000..bc59c12aa1
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3983.stdout
@@ -0,0 +1 @@
+False
diff --git a/testsuite/tests/simplCore/should_run/T3983_Bar.hs b/testsuite/tests/simplCore/should_run/T3983_Bar.hs
new file mode 100644
index 0000000000..ee6fe36e86
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3983_Bar.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+module T3983_Bar where
+import Data.Dynamic
+import Control.Exception
+import Control.Monad (unless)
+
+type Assertion = IO ()
+
+data X = X String deriving (Show, Typeable)
+
+instance Exception X
+
+throwX = throw.X
+
+catchX action = do { action; return True; } `catches` [Handler (\(X _) -> return False)] \ No newline at end of file
diff --git a/testsuite/tests/simplCore/should_run/T3983_Foo.hs b/testsuite/tests/simplCore/should_run/T3983_Foo.hs
new file mode 100644
index 0000000000..b2519632a9
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T3983_Foo.hs
@@ -0,0 +1,8 @@
+module T3983_Foo where
+
+import Control.Monad (unless)
+import Control.Exception
+import T3983_Bar
+
+foo :: Bool -> Bool -> IO ()
+foo a b = unless a $ throwX (if b then "" else "")
diff --git a/testsuite/tests/simplCore/should_run/T4814.hs b/testsuite/tests/simplCore/should_run/T4814.hs
new file mode 100644
index 0000000000..45551ffd23
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T4814.hs
@@ -0,0 +1,39 @@
+-- This test exposes the bug in GHC 7.0.1 (and earlier)
+-- which did the following rule rewrite:
+--
+-- f (let v = 2 in g v) (let v = 3 in g v)
+-- ---> let v = 2 in let v = 3 in g v + g v
+--
+-- which is wrong because of the shadowing of v
+
+module Main where
+foo :: Int -> Int
+{-# INLINE foo #-}
+foo x = g (bar (x,x))
+
+bar :: (Int,Int) -> Int
+{-# NOINLINE bar #-}
+bar (x,y) = x
+
+baz :: Int -> Int
+{-# NOINLINE baz #-}
+baz x = x
+
+f :: Int -> Int -> Int
+{-# NOINLINE f #-}
+f x y = x+y
+
+g :: Int -> Int
+{-# NOINLINE g #-}
+g x = x
+
+{-# RULES
+
+ "f/g" [1] forall x y. f (g x) (g y) = x + y
+
+ #-}
+
+main = print $ f (foo (baz 1)) (foo (baz 2))
+-- Should print 3
+-- Bug means that it prints 4
+
diff --git a/testsuite/tests/simplCore/should_run/T4814.stdout b/testsuite/tests/simplCore/should_run/T4814.stdout
new file mode 100644
index 0000000000..00750edc07
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T4814.stdout
@@ -0,0 +1 @@
+3
diff --git a/testsuite/tests/simplCore/should_run/T5315.hs b/testsuite/tests/simplCore/should_run/T5315.hs
new file mode 100644
index 0000000000..5b2ff39346
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T5315.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE UnicodeSyntax #-}
+{-# LANGUAGE EmptyDataDecls #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE UndecidableInstances #-}
+
+infixr 7 :*, .*
+infix 8 :*:, .*.
+
+data HNil
+data α :* β
+type HSingle α = α :* HNil
+type α :*: β = α :* β :* HNil
+
+data HList l where
+ HNil ∷ HList HNil
+ (:*) ∷ α → HList t → HList (α :* t)
+
+(.*) ∷ α → HList t → HList (α :* t)
+(.*) = (:*)
+
+(.*.) ∷ α → β → HList (α :*: β)
+a .*. b = a .* b .* HNil
+
+data First
+data Next p
+
+data HIndex i where
+ First ∷ HIndex First
+ Next ∷ HIndex p → HIndex (Next p)
+
+class (l ~ (HHead l :* HTail l)) ⇒ HNonEmpty l where
+ type HHead l
+ type HTail l
+
+instance HNonEmpty (h :* t) where
+ type HHead (h :* t) = h
+ type HTail (h :* t) = t
+
+hHead ∷ HNonEmpty l ⇒ HList l → HHead l
+hHead (h :* _) = h
+hHead _ = undefined
+
+hTail ∷ HNonEmpty l ⇒ HList l → HList (HTail l)
+hTail (_ :* t) = t
+hTail _ = undefined
+
+data HFromWitness n l where
+ HFromFirst ∷ HFromWitness First l
+ HFromNext ∷ (HNonEmpty l, HFromClass p (HTail l),
+ HTail (HFrom (Next p) l) ~ HFrom (Next p) (HTail l))
+ ⇒ HFromWitness (Next p) l
+
+class HFromClass n l where
+ type HFrom n l
+ hFromWitness ∷ HFromWitness n l
+
+instance HFromClass First l where
+ type HFrom First l = l
+ hFromWitness = HFromFirst
+
+instance (HNonEmpty l, HFromClass p (HTail l)) ⇒ HFromClass (Next p) l where
+ type HFrom (Next p) l = HFrom p (HTail l)
+ hFromWitness = case hFromWitness ∷ HFromWitness p (HTail l) of
+ HFromFirst → HFromNext
+ HFromNext → HFromNext
+
+hFrom ∷ ∀ n l . HFromClass n l ⇒ HIndex n → HList l → HList (HFrom n l)
+hFrom First l = l
+hFrom (Next p) l = case hFromWitness ∷ HFromWitness n l of
+ HFromNext → hFrom p (hTail l)
+ _ → undefined
+
+type HNth n l = HHead (HFrom n l)
+
+hNth ∷ ∀ n l . (HFromClass n l, HNonEmpty (HFrom n l))
+ ⇒ HIndex n → HList l → HNth n l
+hNth First l = hHead l
+hNth (Next p) l = case hFromWitness ∷ HFromWitness n l of
+ HFromNext → hNth p (hTail l)
+ _ → undefined
+
+main = putStrLn $ hNth (Next First) (0 .*. "Test")
+
diff --git a/testsuite/tests/simplCore/should_run/T5315.stdout b/testsuite/tests/simplCore/should_run/T5315.stdout
new file mode 100644
index 0000000000..345e6aef71
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T5315.stdout
@@ -0,0 +1 @@
+Test
diff --git a/testsuite/tests/simplCore/should_run/all.T b/testsuite/tests/simplCore/should_run/all.T
new file mode 100644
index 0000000000..174fa180c8
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/all.T
@@ -0,0 +1,47 @@
+# Args to compile_and_run are:
+# extra compile flags
+# extra run flags
+# expected process return value, if not zero
+
+# Only compile with optimisation
+def f( opts ):
+ opts.only_ways = ['optasm']
+
+setTestOpts(f)
+
+test('simplrun001', normal, compile_and_run, [''])
+test('simplrun002', normal, compile_and_run, [''])
+test('simplrun003', normal, compile_and_run, [''])
+test('simplrun004', normal, compile_and_run, [''])
+test('simplrun005', normal, compile_and_run, [''])
+
+test('simplrun007', normal, compile_and_run, [''])
+test('simplrun008', normal, compile_and_run, [''])
+test('simplrun009', normal, compile_and_run, [''])
+test('simplrun010', composes([extra_run_opts('24 16 8'),
+ exit_code(1)])
+ , compile_and_run, [''])
+
+# Really we'd like to run T2486 too, to check that its
+# runtime has not gone up, but here I just compile it so that
+# the output of -ddump-rules can be compared
+test('T2486', normal, compile, [''])
+test('T2756', normal, compile_and_run, [''])
+test('T3437', extra_run_opts('+RTS -M10m'), compile_and_run, [''])
+
+test('SeqRule', only_ways(['optasm']), compile_and_run, [''])
+
+test('T3403', normal, compile_and_run, ['-package containers'])
+test('T3591', normal, compile_and_run, [''])
+test('T4814', normal, compile_and_run, [''])
+
+# Run this test *without* optimisation too
+test('T3959', only_ways(['normal','optasm']), compile_and_run, [''])
+test('T3983', [only_ways(['normal','optasm']),
+ extra_clean(['T3983_Foo.hi','T3983_Foo.o','T3983_Bar.hi','T3983_Bar.o',])],
+ multimod_compile_and_run,
+ ['T3983',''])
+test('T3972', extra_clean(['T3972A.hi', 'T3972A.o']),
+ compile_and_run,
+ [''])
+test('T5315', normal, compile_and_run, [''])
diff --git a/testsuite/tests/simplCore/should_run/simplrun001.hs b/testsuite/tests/simplCore/should_run/simplrun001.hs
new file mode 100644
index 0000000000..6cbbf76a91
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun001.hs
@@ -0,0 +1,14 @@
+-- !!! Test filter fusion
+
+-- In GHC 4.06, the filterFB rule was back to front, which
+-- made this program hit the "error foo" case instead of
+-- working fine.
+
+
+module Main where
+
+main :: IO ()
+main = print (length (filter (not . foo)
+ (filter (const False) [Nothing])))
+ where foo (Just x) = x
+ foo _ = error "foo"
diff --git a/testsuite/tests/simplCore/should_run/simplrun001.stderr b/testsuite/tests/simplCore/should_run/simplrun001.stderr
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun001.stderr
diff --git a/testsuite/tests/simplCore/should_run/simplrun001.stdout b/testsuite/tests/simplCore/should_run/simplrun001.stdout
new file mode 100644
index 0000000000..573541ac97
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun001.stdout
@@ -0,0 +1 @@
+0
diff --git a/testsuite/tests/simplCore/should_run/simplrun002.hs b/testsuite/tests/simplCore/should_run/simplrun002.hs
new file mode 100644
index 0000000000..c6d9267d40
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun002.hs
@@ -0,0 +1,23 @@
+
+-- !!! A rules test
+-- At one time the rule got too specialised a type:
+--
+-- _R "ffoo" forall {@ a1 v :: (a1, ((), ()))}
+-- fst @ a1 @ () (sndSnd @ a1 @ () @ () v) = fst @ a1 @ ((), ()) v
+
+
+module Main where
+
+import System.IO
+import System.IO.Unsafe ( unsafePerformIO )
+
+{-# NOINLINE [0] sndSnd #-}
+-- Dont inline till last, to give the rule a chance
+sndSnd (a,(b,c)) = (a,c)
+
+trace x y = unsafePerformIO (hPutStr stderr x >> hPutStr stderr "\n" >> return y)
+
+{-# RULES "foo" forall v . fst (sndSnd v) = trace "Yes" (fst v) #-}
+
+main :: IO ()
+main = print (fst (sndSnd (True, (False,True))))
diff --git a/testsuite/tests/simplCore/should_run/simplrun002.stderr b/testsuite/tests/simplCore/should_run/simplrun002.stderr
new file mode 100644
index 0000000000..dcd7a5d6d5
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun002.stderr
@@ -0,0 +1 @@
+Yes
diff --git a/testsuite/tests/simplCore/should_run/simplrun002.stdout b/testsuite/tests/simplCore/should_run/simplrun002.stdout
new file mode 100644
index 0000000000..0ca95142bb
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun002.stdout
@@ -0,0 +1 @@
+True
diff --git a/testsuite/tests/simplCore/should_run/simplrun003.hs b/testsuite/tests/simplCore/should_run/simplrun003.hs
new file mode 100644
index 0000000000..45aa73578e
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun003.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE UnboxedTuples #-}
+
+-- O2 to get CSE
+
+module Main where
+
+f :: Int -> (# Int, Int #)
+f 0 = (# 1,2 #)
+f n = f (n-1)
+
+{-# NOINLINE g #-}
+g x = case f x of
+ (# a,b #) -> if a>0
+ then f x -- CSE opportunity
+ else (# b,a #)
+
+-- GHC 6.2 wrongly optimised g to:
+-- case f x of t
+-- (# a,b #) -> if a>0 then
+-- t -- WRONG
+-- else (# b,a #)
+
+main = case g 2 of (# a,b #) -> print a
diff --git a/testsuite/tests/simplCore/should_run/simplrun003.stdout b/testsuite/tests/simplCore/should_run/simplrun003.stdout
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun003.stdout
@@ -0,0 +1 @@
+1
diff --git a/testsuite/tests/simplCore/should_run/simplrun004.hs b/testsuite/tests/simplCore/should_run/simplrun004.hs
new file mode 100644
index 0000000000..16e7566ee2
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun004.hs
@@ -0,0 +1,34 @@
+module Main where
+
+-- A test for loss of sharing. GHC 6.4.1 did a bogus preInlineUnconditionally
+
+import Control.Monad ( guard )
+
+expensive 0 = True
+expensive 1 = False
+expensive n = expensive (n-2)
+
+f g = if expensive (1000000*(fst g)) then odd else even
+
+---------------------------------------------------------
+-- The key point is that the (c g) call should not get pushed inside the \x,
+-- as happened in 6.4.1. Doing so loses laziness, and this test shows up
+-- the difference in performance
+gen_sucW grow c g
+ = \ x -> grow g x >>= \ y -> do guard $ check y; return y
+ where
+ check = c g
+
+sucW = gen_sucW (\ g x -> map (+x) [fst g..snd g]) f (11,500000)
+
+main = print (sum $ sucW 11,sum $ sucW 12)
+
+-- Becuase this version uses a case expression, the bug
+-- doesn't happen and execution is much faster
+gen_sucC grow c g = case c g of
+ check -> \ x -> grow g x >>= \ y -> do guard $ check y; return y
+
+sucC = gen_sucC (\ g x -> map (+x) [fst g..snd g]) f (11,500000)
+
+mainC = print (sum $ sucC 11,sum $ sucC 12)
+
diff --git a/testsuite/tests/simplCore/should_run/simplrun004.stdout b/testsuite/tests/simplCore/should_run/simplrun004.stdout
new file mode 100644
index 0000000000..7cdf0c5bab
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun004.stdout
@@ -0,0 +1 @@
+(62502999915,62502999915)
diff --git a/testsuite/tests/simplCore/should_run/simplrun005.hs b/testsuite/tests/simplCore/should_run/simplrun005.hs
new file mode 100644
index 0000000000..d177568e4b
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun005.hs
@@ -0,0 +1,47 @@
+module Main where
+
+main = print (fib' 100)
+ -- This will time out unless memoing works properly
+
+data Nat = Z | S Nat
+ deriving (Show, Eq)
+
+memo f = g
+ where
+ fz = f Z
+ fs = memo (f . S)
+ g Z = fz
+ g (S n) = fs n
+ -- It is a BAD BUG to inline 'fs' inside g
+ -- and that happened in 6.4.1, resulting in exponential behaviour
+
+-- memo f = g (f Z) (memo (f . S))
+-- = g (f Z) (g (f (S Z)) (memo (f . S . S)))
+-- = g (f Z) (g (f (S Z)) (g (f (S (S Z))) (memo (f . S . S . S))))
+
+fib' :: Nat -> Integer
+fib' = memo fib
+ where
+ fib Z = 0
+ fib (S Z) = 1
+ fib (S (S n)) = fib' (S n) + fib' n
+
+instance Num Nat where
+ fromInteger 0 = Z
+ fromInteger n = S (fromInteger (n - 1))
+ Z + n = n
+ S m + n = S (m + n)
+ Z * n = Z
+ S m * n = (m * n) + n
+ Z - n = Z
+ S m - Z = S m
+ S m - S n = m - n
+
+instance Enum Nat where
+ succ = S
+ pred Z = Z
+ pred (S n) = n
+ toEnum = fromInteger . toInteger
+ fromEnum Z = 0
+ fromEnum (S n) = fromEnum n + 1
+
diff --git a/testsuite/tests/simplCore/should_run/simplrun005.stdout b/testsuite/tests/simplCore/should_run/simplrun005.stdout
new file mode 100644
index 0000000000..c21fc4a1b9
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun005.stdout
@@ -0,0 +1 @@
+354224848179261915075
diff --git a/testsuite/tests/simplCore/should_run/simplrun007.hs b/testsuite/tests/simplCore/should_run/simplrun007.hs
new file mode 100644
index 0000000000..12bfb2d335
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun007.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE MagicHash #-}
+
+-- Actually, this exercises prelude/PrelRules, but this is the closest
+-- place I could find to put it...
+
+import GHC.Exts
+import Numeric
+import Data.Bits
+
+main = do phex (I# (uncheckedIShiftL# (negateInt# 5#) 2#))
+ phex (I# (uncheckedIShiftRA# (negateInt# 5#) 1#))
+ phex (I# (uncheckedIShiftRL# (negateInt# 5#) 1#))
+ phex (W# (uncheckedShiftL# (int2Word# (negateInt# 5#)) 2#))
+ phex (W# (uncheckedShiftRL# (int2Word# (negateInt# 5#)) 1#))
+
+phex x = putStrLn (showSigned (\x -> ("0x"++) . showHex x) 0 x "")
+
+{- Too wordsize-dependant
+phex x = putStrLn (hex x)
+hex x = "0x" ++ [onedigit (fromIntegral ((x `shiftR` (i*4)) .&. 0xF))
+ | i <- [digits-1,digits-2..0]]
+ where
+ digits = bitSize x `div` 4
+ onedigit n = "0123456789abcdef" !! n
+-}
+
+
diff --git a/testsuite/tests/simplCore/should_run/simplrun007.stdout b/testsuite/tests/simplCore/should_run/simplrun007.stdout
new file mode 100644
index 0000000000..3283b5c891
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun007.stdout
@@ -0,0 +1,5 @@
+-0x14
+-0x3
+0x7ffffffd
+0xffffffec
+0x7ffffffd
diff --git a/testsuite/tests/simplCore/should_run/simplrun007.stdout-ws-64 b/testsuite/tests/simplCore/should_run/simplrun007.stdout-ws-64
new file mode 100644
index 0000000000..47e0adb0d3
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun007.stdout-ws-64
@@ -0,0 +1,5 @@
+-0x14
+-0x3
+0x7ffffffffffffffd
+0xffffffffffffffec
+0x7ffffffffffffffd
diff --git a/testsuite/tests/simplCore/should_run/simplrun008.hs b/testsuite/tests/simplCore/should_run/simplrun008.hs
new file mode 100644
index 0000000000..782f0e40ac
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun008.hs
@@ -0,0 +1,18 @@
+
+module Main where
+import Data.Char
+
+{-# NOINLINE f #-}
+f :: Int -> String
+f x = "NOT FIRED"
+
+{-# NOINLINE neg #-}
+neg :: Int -> Int
+neg = negate
+
+{-# RULES
+ "f" forall (c::Char->Int) (x::Char). f (c x) = "RULE FIRED"
+ #-}
+
+main = do { print (f (ord 'a')) -- Rule should fire
+ ; print (f (neg 1)) } -- Rule should not fire
diff --git a/testsuite/tests/simplCore/should_run/simplrun008.stdout b/testsuite/tests/simplCore/should_run/simplrun008.stdout
new file mode 100644
index 0000000000..e04622af3d
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun008.stdout
@@ -0,0 +1,2 @@
+"RULE FIRED"
+"NOT FIRED"
diff --git a/testsuite/tests/simplCore/should_run/simplrun009.hs b/testsuite/tests/simplCore/should_run/simplrun009.hs
new file mode 100644
index 0000000000..826cdeef77
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun009.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE ExistentialQuantification #-}
+
+-- This test is really meant for human looking; do a -ddump-simpl.
+
+-- The definition that you want to look at is for foo.
+-- It produces a nested unfold that should look something
+-- like the code below. Note the 'lvl1_shW'. It is BAD
+-- if this is a lambda instead; you get a lot more allocation
+-- See Note [Escaping a value lambda] in SetLevels
+
+
+{-
+ $wunfold_shU =
+ \ (ww_she :: [[a_abm]]) (ww1_shf :: Data.Maybe.Maybe (Stream.Stream a_abm)) ->
+ case ww1_shf of wild2_afo {
+ Data.Maybe.Nothing ->
+ case ww_she of wild_ad6 {
+ [] -> GHC.Base.[] @ a_abm;
+ : x_ado xs1_adp ->
+ $wunfold_shU
+ xs1_adp
+ (Data.Maybe.Just
+ @ (Stream.Stream a_abm) (Stream.Stream @ a_abm @ [a_abm]
+ *** lvl1_shW ***
+ x_ado))
+ };
+ Data.Maybe.Just ds3_afJ ->
+ case ds3_afJ of wild3_afL { Stream.Stream @ s1_afN stepb_afO sb_afP ->
+ case stepb_afO sb_afP of wild4_afR {
+ Stream.Done -> $wunfold_shU ww_she (Data.Maybe.Nothing @ (Stream.Stream a_abm));
+ Stream.Yield x_afV sb'_afW ->
+ GHC.Base.:
+ @ a_abm
+ x_afV
+ ($wunfold_shU
+ ww_she
+ (Data.Maybe.Just
+ @ (Stream.Stream a_abm) (Stream.Stream @ a_abm @ s1_afN stepb_afO sb'_afW)));
+ Stream.Skip sb'_afZ ->
+ $wunfold_shU
+ ww_she
+ (Data.Maybe.Just
+ @ (Stream.Stream a_abm) (Stream.Stream @ a_abm @ s1_afN stepb_afO sb'_afZ))
+ }
+ }
+-}
+
+
+
+module Main( main, foo ) where
+-- Must export foo to make the issue show up
+
+import Prelude hiding ( concatMap, map)
+
+main = print (sum (foo [[1,2], [3,4,5]]))
+
+foo :: Num a => [[a]] -> [a]
+foo xss = Main.concatMap (\xs -> Main.map (+1) xs) xss
+
+
+instance StreamableSequence [] where
+ stream = listToStream
+ unstream = streamToList
+ -- These inline pragmas are useless (see #5084)
+{-
+ {-# INLINE stream #-}
+ {-# INLINE unstream #-}
+-}
+
+listToStream :: [a] -> Stream a
+listToStream xs = Stream next xs
+ where next [] = Done
+ next (x:xs) = Yield x xs
+{-# INLINE [0] listToStream #-}
+
+streamToList :: Stream a -> [a]
+streamToList (Stream next s) = unfold s
+ where unfold s =
+ case next s of
+ Done -> []
+ Skip s' -> unfold s'
+ Yield x s' -> x : unfold s'
+{-# INLINE [0] streamToList #-}
+
+{-# RULES
+"stream/unstream"
+ forall s. listToStream (streamToList s) = s
+ #-}
+
+map :: (a -> b) -> [a] -> [b]
+map f = unstream . mapS f . stream
+{-# INLINE map #-}
+
+concatMap :: (a -> [b]) -> [a] -> [b]
+concatMap f = unstream . concatMapS (stream . f) . stream
+{-# INLINE concatMap #-}
+
+
+data Stream a = forall s. Stream (s -> Step a s) s
+
+data Step a s = Done
+ | Yield a s
+ | Skip s
+
+class StreamableSequence seq where
+ stream :: seq a -> Stream a
+ unstream :: Stream a -> seq a
+
+ -- axiom: stream . unstream = id
+ -- These inline pragmas are useless (see #5084)
+{-
+ {-# INLINE stream #-}
+ {-# INLINE unstream #-}
+-}
+
+{-
+--version that does not require the sequence type
+--to be polymorphic in its elements:
+
+class StreamableSequence seq a | seq -> a where
+ stream :: seq -> Stream a
+ unstream :: Stream a -> seq
+-}
+
+
+mapS :: (a -> b) -> Stream a -> Stream b
+mapS f (Stream next s0) = Stream next' s0
+ where next' s = case next s of
+ Done -> Done
+ Skip s' -> Skip s'
+ Yield x s' -> Yield (f x) s'
+{-# INLINE [0] mapS #-}
+
+
+concatMapS :: (a -> Stream b) -> Stream a -> Stream b
+concatMapS f (Stream step s) = Stream step' (s, Nothing)
+ where step' (s, Nothing) =
+ case step s of
+ Yield x s' -> Skip (s', Just (f x))
+ Skip s' -> Skip (s', Nothing)
+ Done -> Done
+
+ step' (s, Just (Stream stepb sb)) =
+ case stepb sb of
+ Yield x sb' -> Yield x (s, Just (Stream stepb sb'))
+ Skip sb' -> Skip (s, Just (Stream stepb sb'))
+ Done -> Skip (s, Nothing)
+{-# INLINE [0] concatMapS #-}
+
diff --git a/testsuite/tests/simplCore/should_run/simplrun009.stdout b/testsuite/tests/simplCore/should_run/simplrun009.stdout
new file mode 100644
index 0000000000..209e3ef4b6
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun009.stdout
@@ -0,0 +1 @@
+20
diff --git a/testsuite/tests/simplCore/should_run/simplrun010.hs b/testsuite/tests/simplCore/should_run/simplrun010.hs
new file mode 100644
index 0000000000..0fbc33ac81
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun010.hs
@@ -0,0 +1,313 @@
+{-# LANGUAGE ForeignFunctionInterface, MagicHash, UnboxedTuples #-}
+
+-- From trac #1947
+
+module Main(main) where
+
+import System.IO.Unsafe
+import System.IO
+import System.Environment
+import System.Exit
+import Foreign.C.Types
+import Data.Char(ord,chr)
+
+
+-- low level imports
+import GHC.Base (realWorld#)
+import GHC.IOBase (IO(IO), unIO, unsafePerformIO)
+import GHC.Prim (State#,RealWorld)
+
+
+-- FFI replacements for Haskell stuff
+foreign import ccall unsafe "stdio.h getchar" getchar :: IO CInt
+foreign import ccall unsafe "ctype.h iswspace" isspace :: CInt -> CInt
+
+
+skipCAF :: State# RealWorld -> a -> a
+skipCAF _ x = x
+
+
+-- IO Subsystem
+-- Unboxed IO is more efficient, but requires a certain level of
+-- optimisation, so provide a BOXED_IO fallback
+
+data RW_Box = RW_Box (State# RealWorld)
+type RW_Pair a = (RW_Box, a)
+
+fromIO :: IO a -> (RW_Box -> RW_Pair a)
+fromIO a (RW_Box r) = case unIO a r of (# r, x #) -> (RW_Box r, x)
+
+toIO :: (RW_Box -> RW_Pair a) -> IO a
+toIO f = IO $ \r -> case f (RW_Box r) of (RW_Box r, x) -> (# r, x #)
+
+-- IO functions not dependent on the IO primitives
+main :: IO ()
+main = toIO main_generated
+
+typeRealWorld :: RW_Box -> RW_Box
+typeRealWorld x = x
+
+overlay_get_char :: RW_Box -> RW_Pair Int
+overlay_get_char = fromIO $ do
+ c <- getchar
+ return $ fromIntegral c
+
+system_IO_hPutChar :: Handle -> Int -> RW_Box -> RW_Pair ()
+system_IO_hPutChar h c = fromIO $ hPutChar h (chr c)
+
+overlay_errorIO :: [Int] -> RW_Box -> RW_Pair a
+overlay_errorIO x r = case fromIO (putStrLn ("ERROR: " ++ map chr x)) r of
+ (r, _) -> fromIO exitFailure r
+
+system_Environment_getArgs :: RW_Box -> RW_Pair [[Int]]
+system_Environment_getArgs r = case (fromIO getArgs) r of
+ (r, s) -> (r, map str_ s)
+
+overlay_supero_wrap x = x
+
+
+-- Primitives
+prelude_seq = seq
+
+prelude_error x = error (map chr x)
+
+aDD_W = (+) :: Int -> Int -> Int
+mUL_W = (*) :: Int -> Int -> Int
+sUB_W = (-) :: Int -> Int -> Int
+eQ_W = (==) :: Int -> Int -> Bool
+nE_W = (/=) :: Int -> Int -> Bool
+gT_W = (>) :: Int -> Int -> Bool
+gE_W = (>=) :: Int -> Int -> Bool
+lT_W = (<) :: Int -> Int -> Bool
+lE_W = (<=) :: Int -> Int -> Bool
+qUOT = quot :: Int -> Int -> Int
+rEM = rem :: Int -> Int -> Int
+nEG_W = negate :: Int -> Int
+yHC_Primitive_primIntAbs = abs :: Int -> Int
+yHC_Primitive_primIntSignum = signum :: Int -> Int
+yHC_Primitive_primIntegerAdd = (+) :: Integer -> Integer -> Integer
+yHC_Primitive_primIntegerEq = (==) :: Integer -> Integer -> Bool
+yHC_Primitive_primIntegerFromInt = toInteger :: Int -> Integer
+yHC_Primitive_primIntegerGe = (>=) :: Integer -> Integer -> Bool
+yHC_Primitive_primIntegerGt = (>) :: Integer -> Integer -> Bool
+yHC_Primitive_primIntegerLe = (<=) :: Integer -> Integer -> Bool
+yHC_Primitive_primIntegerMul = (*) :: Integer -> Integer -> Integer
+yHC_Primitive_primIntegerNe = (/=) :: Integer -> Integer -> Bool
+yHC_Primitive_primIntegerNeg = negate :: Integer -> Integer
+yHC_Primitive_primIntegerQuot = quot :: Integer -> Integer -> Integer
+yHC_Primitive_primIntegerQuotRem = quotRem :: Integer -> Integer -> (Integer, Integer)
+yHC_Primitive_primIntegerRem = rem :: Integer -> Integer -> Integer
+yHC_Primitive_primIntFromInteger = fromInteger :: Integer -> Int
+yHC_Primitive_primIntegerLt = (<) :: Integer -> Integer -> Bool
+yHC_Primitive_primIntegerSub = (-) :: Integer -> Integer -> Integer
+
+aDD_D = (+) :: Double -> Double -> Double
+sUB_D = (-) :: Double -> Double -> Double
+lT_D = (<) :: Double -> Double -> Bool
+lE_D = (<=) :: Double -> Double -> Bool
+gT_D = (>) :: Double -> Double -> Bool
+gE_D = (>=) :: Double -> Double -> Bool
+eQ_D = (==) :: Double -> Double -> Bool
+mUL_D = (*) :: Double -> Double -> Double
+nEG_D = (negate) :: Double -> Double
+nE_D = (/=) :: Double -> Double -> Bool
+sLASH_D = (/) :: Double -> Double -> Double
+yHC_Primitive_primDecodeDouble = decodeFloat :: Double -> (Integer,Int)
+yHC_Primitive_primDoubleACos = acos :: Double -> Double
+yHC_Primitive_primDoubleASin = asin :: Double -> Double
+yHC_Primitive_primDoubleATan = atan :: Double -> Double
+yHC_Primitive_primDoubleAbs = abs :: Double -> Double
+yHC_Primitive_primDoubleCos = cos :: Double -> Double
+yHC_Primitive_primDoubleExp = exp :: Double -> Double
+yHC_Primitive_primDoubleFromInteger = fromInteger :: Integer -> Double
+yHC_Primitive_primDoubleLog = log :: Double -> Double
+yHC_Primitive_primDoublePow = (**) :: Double -> Double -> Double
+yHC_Primitive_primDoubleSignum = signum :: Double -> Double
+yHC_Primitive_primDoubleSin = sin :: Double -> Double
+yHC_Primitive_primDoubleSqrt = sqrt :: Double -> Double
+yHC_Primitive_primDoubleTan = tan :: Double -> Double
+yHC_Primitive_primEncodeDouble = encodeFloat :: Integer -> Int -> Double
+
+
+
+
+-- things which Yhc decides should be hopelessly slow
+prelude_Int_Integral_mod = mod :: Int -> Int -> Int
+prelude_Integer_Integral_div = div :: Integer -> Integer -> Integer
+prelude_Integer_Integral_mod = mod :: Integer -> Integer -> Integer
+prelude_Integer_Num_signum = signum :: Integer -> Integer
+prelude_Integer_Num_abs = abs :: Integer -> Integer
+
+
+int_ x = x :: Int
+chr_ x = ord x
+str_ x = map chr_ x
+
+
+system_IO_stdin = stdin
+system_IO_stdout = stdout
+
+data_Char_isSpace :: Int -> Bool
+data_Char_isSpace c = isspace (toEnum c) /= 0
+
+
+
+type ReadsPrec a = Int -> [Int] -> [(a,[Int])]
+
+
+prelude_Int_Read_readsPrec :: ReadsPrec Int
+prelude_Int_Read_readsPrec p s = [(a, str_ b) | (a,b) <- readsPrec p (map chr s)]
+prelude_Int_Read_readList = undefined
+
+prelude_Integer_Read_readsPrec :: ReadsPrec Integer
+prelude_Integer_Read_readsPrec p s = [(a, str_ b) | (a,b) <- readsPrec p (map chr s)]
+prelude_Integer_Read_readList = undefined
+
+prelude_Double_Read_readsPrec :: ReadsPrec Double
+prelude_Double_Read_readsPrec p s = [(a, str_ b) | (a,b) <- readsPrec p (map chr s)]
+prelude_Double_Read_readList = undefined
+
+prelude_Char_Read_readsPrec :: ReadsPrec Int
+prelude_Char_Read_readsPrec p s = [(chr_ (a :: Char), str_ b) | (a,b) <- readsPrec p (map chr s)]
+
+prelude_Char_Show_showList :: [Int] -> [Int] -> [Int]
+prelude_Char_Show_showList value rest = str_ (show (map chr value)) ++ rest
+
+prelude_Char_Show_showsPrec :: Int -> Int -> [Int] -> [Int]
+prelude_Char_Show_showsPrec prec i rest = str_ (showsPrec prec (chr i) []) ++ rest
+
+prelude_Int_Show_showsPrec :: Int -> Int -> [Int] -> [Int]
+prelude_Int_Show_showsPrec prec i rest = str_ (showsPrec prec i []) ++ rest
+
+prelude_Integer_Show_showsPrec :: Int -> Integer -> [Int] -> [Int]
+prelude_Integer_Show_showsPrec prec i rest = str_ (showsPrec prec i []) ++ rest
+
+prelude_Double_Show_showsPrec :: Int -> Double -> [Int] -> [Int]
+prelude_Double_Show_showsPrec prec i rest = str_ (showsPrec prec i []) ++ rest
+
+
+prelude_'amp'amp27 v1 v2 =
+ case (data_Char_isSpace v1) of
+ True ->
+ case v2 of
+ [] -> True
+ (:) v4 v5 -> prelude_'amp'amp27 v4 v5
+ False -> False
+
+prelude_LAMBDA22 v1 v2 =
+ case v1 of
+ (,) v267 v268 ->
+ case v268 of
+ [] -> prelude_LAMBDA24 v267 v2
+ (:) v7 v8 ->
+ let v11 = prelude_'amp'amp27 v7 v8
+ in case v11 of
+ True -> prelude_LAMBDA24 v267 v2
+ False -> prelude__foldr25 v2
+
+prelude_LAMBDA24 v1 v2 = (:) v1 (prelude__foldr25 v2)
+
+prelude_IO_Monad_fail41 v1 =
+ overlay_errorIO
+ (skipCAF realWorld# (str_ "pattern-match failure in do expression"))
+ v1
+
+prelude__foldr25 v1 =
+ case v1 of
+ [] -> []
+ (:) v296 v297 -> prelude_LAMBDA22 v296 v297
+
+f17 uncaf = skipCAF uncaf (str_ "Prelude.read: no parse")
+
+f18 v1 v2 =
+ case v1 of
+ (,) v176 v177 ->
+ case v177 of
+ [] -> f20 v176 v2
+ (:) v7 v8 ->
+ let v11 = prelude_'amp'amp27 v7 v8
+ in case v11 of
+ True -> f20 v176 v2
+ False ->
+ case v2 of
+ [] -> prelude_error (f17 realWorld#)
+ (:) v4 v5 -> f18 v4 v5
+
+f20 v1 v2 =
+ case v2 of
+ [] -> v1
+ (:) v257 v258 ->
+ let v9 = prelude_LAMBDA22 v257 v258
+ in case v9 of
+ [] -> v1
+ (:) v10 v11 ->
+ prelude_error
+ (skipCAF realWorld# (str_ "Prelude.read: ambiguous parse"))
+
+f34 v1 v2 v3 =
+ let v336 = f34 v1 v2 v3
+ in v336
+
+f38 v1 v2 =
+ case v1 of
+ [] -> system_IO_hPutChar system_IO_stdout (chr_ '\n') v2
+ (:) v350 v351 ->
+ case (system_IO_hPutChar
+ system_IO_stdout
+ v350
+ (typeRealWorld v2)) of
+ ( v7 , v8 ) -> f38 v351 v7
+
+main_generated v1 =
+ case (system_Environment_getArgs (typeRealWorld v1)) of
+ ( v3 , v4 ) ->
+ case v4 of
+ (:) v7 v8 ->
+ case v8 of
+ (:) v9 v12 ->
+ case v12 of
+ (:) v13 v14 ->
+ case v14 of
+ [] ->
+ case (prelude_Int_Show_showsPrec
+ (int_ 0)
+ (let v8 =
+ case (prelude_Int_Read_readsPrec
+ (int_ 0)
+ v7) of
+ [] -> prelude_error (f17 realWorld#)
+ (:) v12 v14 -> f18 v12 v14
+ v10 =
+ case (prelude_Int_Read_readsPrec
+ (int_ 0)
+ v9) of
+ [] -> prelude_error (f17 realWorld#)
+ (:) v15 v16 -> f18 v15 v16
+ v11 =
+ case (prelude_Int_Read_readsPrec
+ (int_ 0)
+ v13) of
+ [] -> prelude_error (f17 realWorld#)
+ (:) v17 v18 -> f18 v17 v18
+ in case (lT_W v10 v8) of
+ True ->
+ let v7 = f34 v8 v10 v11
+ in v7
+ False -> v11)
+ (skipCAF realWorld# (str_ ""))) of
+ [] ->
+ system_IO_hPutChar
+ system_IO_stdout
+ (chr_ '\n')
+ (typeRealWorld v3)
+ (:) v11 v12 ->
+ case (system_IO_hPutChar
+ system_IO_stdout
+ v11
+ (typeRealWorld (typeRealWorld v3))) of
+ ( v7 , v8 ) -> f38 v12 v7
+ (:) v15 v16 -> prelude_IO_Monad_fail41 v3
+ [] -> prelude_IO_Monad_fail41 v3
+ [] -> prelude_IO_Monad_fail41 v3
+ [] -> prelude_IO_Monad_fail41 v3
+
diff --git a/testsuite/tests/simplCore/should_run/simplrun010.stderr b/testsuite/tests/simplCore/should_run/simplrun010.stderr
new file mode 100644
index 0000000000..57647f1f92
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/simplrun010.stderr
@@ -0,0 +1 @@
+simplrun010: <<loop>>