diff --git a/pact.cabal b/pact.cabal index 03b1de723..30ffad536 100644 --- a/pact.cabal +++ b/pact.cabal @@ -203,6 +203,7 @@ library Pact.Types.Verifier Pact.Types.Version Pact.Utils.Servant + Pact.Utils.StableHashMap other-modules: Pact.Crypto.WebAuthn.Cose.PublicKey @@ -448,6 +449,7 @@ test-suite hspec , directory , errors , filepath + , hashable , hspec , lens , mod @@ -474,6 +476,7 @@ test-suite hspec Test.Pact.Native.Pairing Test.Pact.Parse Test.Pact.Utils.LegacyValue + Test.Pact.Utils.StableHashMap if flag(build-tool) cpp-options: -DBUILD_TOOL diff --git a/src-tool/Pact/Analyze/Check.hs b/src-tool/Pact/Analyze/Check.hs index 3a436d0d2..e10610ef6 100644 --- a/src-tool/Pact/Analyze/Check.hs +++ b/src-tool/Pact/Analyze/Check.hs @@ -106,6 +106,7 @@ import Pact.Analyze.Translate import Pact.Analyze.Types import Pact.Analyze.Util import Pact.Types.Exp +import qualified Pact.Utils.StableHashMap as SHM smtConfig :: SBV.SMTConfig smtConfig = SBV.z3 @@ -766,7 +767,7 @@ parseModuleModelDecl exps = traverse parseDecl exps where -- | Organize the module's refs by type moduleRefs :: ModuleData Ref -> ModuleRefs -moduleRefs (ModuleData _ refMap _) = foldl' f noRefs (HM.toList refMap) +moduleRefs (ModuleData _ refMap _) = foldl' f noRefs (SHM.toList refMap) where f accum (name, ref) = case ref of Ref (TDef (Def{_dDefType, _dDefBody}) _) -> @@ -1137,7 +1138,7 @@ getFunChecks env@(CheckEnv tables consts propDefs moduleData _cs _g de _) refs = scopeCheckInterface :: Set Text -- ^ A set of table, definition and property names in scope - -> HM.HashMap Text Ref + -> SHM.StableHashMap Text Ref -- ^ The set of refs to check -> [ScopeError] scopeCheckInterface globalNames refs = refs <&&> \case @@ -1229,7 +1230,7 @@ verifyModule mDebug de modules moduleData@(ModuleData modDef allRefs _) = runExc globalNames = Set.unions $ fmap Set.fromList [ fmap _tableName tables , HM.keys propDefs - , HM.keys allRefs + , SHM.keys allRefs ] scopeErrors = scopeCheckInterface globalNames allRefs @@ -1322,7 +1323,7 @@ verifyCheck de moduleData funName check checkType = do moduleName = moduleDefName $ moduleData ^. mdModule modules = HM.fromList [(moduleName, moduleData)] moduleFun :: ModuleData Ref -> Text -> Maybe Ref - moduleFun ModuleData{..} name = name `HM.lookup` _mdRefMap + moduleFun ModuleData{..} name = name `SHM.lookup` _mdRefMap modRefs = moduleRefs moduleData caps <- moduleCapabilities de [moduleData] diff --git a/src/Pact/Bench.hs b/src/Pact/Bench.hs index 79c908b3a..979988262 100644 --- a/src/Pact/Bench.hs +++ b/src/Pact/Bench.hs @@ -21,7 +21,6 @@ import Data.Aeson import Data.ByteString (ByteString) import qualified Data.ByteString as BS import Data.Default -import qualified Data.HashMap.Strict as HM import qualified Data.Map.Strict as M import qualified Data.Set as S import Data.Text (unpack, pack, intercalate) @@ -60,6 +59,7 @@ import Pact.Types.Capability import Pact.Runtime.Utils import Pact.JSON.Legacy.Value import qualified Pact.JSON.Encode as J +import qualified Pact.Utils.StableHashMap as SHM -- | Flags for enabling file-based perf bracketing, -- see 'mkFilePerf' below. @@ -191,7 +191,7 @@ runPactExec pt msg ss cdata benchMod dbEnv pc = do e <- set eeAdvice pt <$> setupEvalEnv dbEnv entity Transactional md (versionedNativesRefStore ec) prodGasEnv permissiveNamespacePolicy noSPVSupport def ec let s = perfInterpreter pt $ defaultInterpreterState $ - maybe id (const . initStateModules . HM.singleton (ModuleName "bench" Nothing)) benchMod + maybe id (const . initStateModules . SHM.singleton (ModuleName "bench" Nothing)) benchMod (r :: Either SomeException EvalResult) <- try $! evalExec s e pc r' <- eitherDie ("runPactExec': " ++ msg) $ fmapL show r return $!! _erOutput r' diff --git a/src/Pact/Coverage.hs b/src/Pact/Coverage.hs index cb51d4359..132fdf4d4 100644 --- a/src/Pact/Coverage.hs +++ b/src/Pact/Coverage.hs @@ -38,6 +38,7 @@ import Pact.Types.Pretty import Pact.Types.Term hiding (App(..),Object(..),Step(..)) import Pact.Types.Typecheck import Pact.Types.Runtime (ModuleData(..)) +import qualified Pact.Utils.StableHashMap as SHM mkCoverageAdvice :: IO (IORef LcovReport,Advice) mkCoverageAdvice = newIORef mempty >>= \r -> return (r,Advice $ cover r) @@ -78,7 +79,7 @@ cover ref i ctx = case _iInfo i of postModule :: MonadIO m => ModuleData Ref -> m () postModule (ModuleData (MDModule _m) modDefs _) = do ((modFuns,modLines),_) <- liftIO $ runTC 0 False $ - foldM walkDefs (mempty,mempty) (HM.elems modDefs) + foldM walkDefs (mempty,mempty) (SHM.elems modDefs) let (fn,_l) = parseInf i newRep = mkFileLcov fn modFuns mempty modLines liftIO $ modifyIORef ref (<> newRep) diff --git a/src/Pact/Eval.hs b/src/Pact/Eval.hs index 4cb65fd75..136f3830c 100644 --- a/src/Pact/Eval.hs +++ b/src/Pact/Eval.hs @@ -63,7 +63,6 @@ import Data.Default import Data.Foldable import Data.Functor.Classes import Data.Graph -import qualified Data.HashMap.Strict as HM import Data.IORef import Data.List.Unsafe import qualified Data.Map.Strict as M @@ -87,6 +86,7 @@ import Pact.Types.Purity import Pact.Types.Runtime import Pact.Types.SizeOf import Pact.Types.Namespace +import qualified Pact.Utils.StableHashMap as SHM import qualified Pact.JSON.Encode as J import qualified Pact.JSON.Legacy.HashMap as LHM @@ -323,8 +323,8 @@ eval' (TModule _tm@(MDModule m) bod i) = void $ acquireModuleAdminCapability capMName $ return () unlessExecutionFlagSet FlagDisablePact48 $ do - evalRefs.rsLoadedModules %= HM.delete (_mName mangledM) - evalRefs.rsQualifiedDeps %= HM.filterWithKey (\k _ -> _fqModule k /= _mName mangledM) + evalRefs.rsLoadedModules %= SHM.delete (_mName mangledM) + evalRefs.rsQualifiedDeps %= SHM.filterWithKey (\k _ -> _fqModule k /= _mName mangledM) -- build/install module from defs govM <- loadModule mangledM bod i @@ -419,7 +419,7 @@ evalUse (Use mn mh mis i) = do validateImports :: Info - -> HM.HashMap Text Ref + -> SHM.StableHashMap Text Ref -> Maybe ModuleHash -> Maybe (V.Vector Text) -> Eval e () @@ -429,7 +429,7 @@ validateImports i rs mh (Just is) "empty imports are only allowed if a module hash is referenced" | otherwise = traverse_ go is where - go imp = case HM.lookup imp rs of + go imp = case SHM.lookup imp rs of Nothing -> evalError i $ "imported name not found: " <> pretty imp Just (Ref r) -> case r of TDef d _ -> case _dDefType d of @@ -507,7 +507,7 @@ collectNames -- ^ module body -> (Term Name -> Eval e (Maybe Text)) -- ^ function extracting definition names - -> Eval e (HM.HashMap Text (Term Name)) + -> Eval e (SHM.StableHashMap Text (Term Name)) collectNames args body k = case instantiate' body of TList bd _ _ -> do ns <- view $ eeRefStore . rsNatives @@ -518,22 +518,22 @@ collectNames args body k = case instantiate' body of Nothing -> return ds Just dn -> do -- disallow native overlap - when (isJust $ HM.lookup dn ns) $ + when (isJust $ SHM.lookup dn ns) $ evalError' t $ "definitions cannot overlap with native names: " <> pretty dn -- disallow conflicting members - when (isJust $ HM.lookup dn ds) $ + when (isJust $ SHM.lookup dn ds) $ evalError' t $ "definition name conflict: " <> pretty dn computeGas (Left (_tInfo t,dn)) args - return (HM.insert dn t ds) + return (SHM.insert dn t ds) resolveGovernance - :: HM.HashMap Text Ref + :: SHM.StableHashMap Text Ref -> Module (Term Name) -> Eval e (ModuleDef (Def Ref)) resolveGovernance solvedDefs m' = fmap MDModule $ forM m' $ \g -> case g of - TVar (Name (BareName n _)) _ -> case HM.lookup n solvedDefs of + TVar (Name (BareName n _)) _ -> case SHM.lookup n solvedDefs of Just r -> case r of Ref (TDef govDef _) -> case _dDefType govDef of Defcap -> return govDef @@ -551,7 +551,7 @@ data HeapMemState data HeapFold = HeapFold - { _hfAllDefs :: !(HM.HashMap Text Ref) + { _hfAllDefs :: !(SHM.StableHashMap Text Ref) , _hfMemoEnv :: !(M.Map Name Bytes) , _hfTotalMem :: !Bytes } @@ -572,7 +572,7 @@ dresolveMem info (HeapFold allDefs costMemoEnv currMem) (defTerm, defName, _) = unified' <- case unified of t@TConst{} -> runSysOnly $ evalConstsNonRec (Ref t) _ -> pure (Ref unified) - pure (HeapFold (HM.insert defName unified' allDefs) costMemoEnv' totalMem) + pure (HeapFold (SHM.insert defName unified' allDefs) costMemoEnv' totalMem) where -- Inline a foreign defun: memoize the cost, since it may be expensive to calculate -- We also calculate the cost per callsite, to fail faster. @@ -597,7 +597,7 @@ dresolveMem info (HeapFold allDefs costMemoEnv currMem) (defTerm, defName, _) = -- - Check for gas overflow post replacing `Left defn` by the full definition. replaceMemo szVer m (Left defn) = do memoEnv <- gets _hmMemoEnv - let inlined = m HM.! defn + let inlined = m SHM.! defn case M.lookup (Name (BareName defn def)) memoEnv of Just heapCost -> do modify' (\(HeapMemState env total) -> HeapMemState env (total + heapCost)) @@ -610,7 +610,7 @@ dresolveMem info (HeapFold allDefs costMemoEnv currMem) (defTerm, defName, _) = removeFromLoaded :: Set.Set Text -> Eval e () removeFromLoaded toRemove = - evalRefs . rsLoaded %= HM.filterWithKey (\k _ -> Set.notMember k toRemove) + evalRefs . rsLoaded %= SHM.filterWithKey (\k _ -> Set.notMember k toRemove) -- | Definitions are transformed such that all free variables are resolved either to -- an existing ref in the refstore/namespace ('Right Ref'), or a symbol that must @@ -619,31 +619,31 @@ removeFromLoaded toRemove = -- to be non-recursive. The graph is walked to unify the Either to -- the 'Ref's it already found or a fresh 'Ref' that will have already been added to -- the table itself: the topological sort of the graph ensures the reference will be there. -evaluateDefs :: Info -> ModuleDef (Term Name) -> HM.HashMap Text (Term Name) -> Eval e (HM.HashMap Text Ref) +evaluateDefs :: Info -> ModuleDef (Term Name) -> SHM.StableHashMap Text (Term Name) -> Eval e (SHM.StableHashMap Text Ref) evaluateDefs info mdef defs = do cs <- liftIO (newIORef Nothing) >>= traverseGraph defs sortedDefs <- enforceAcyclic info cs -- the order of evaluation matters for 'dresolve' - this *must* be a left fold isExecutionFlagSet FlagDisableInlineMemCheck >>= \case True -> do - let dresolve ds (d,dn,_) = HM.insert dn (Ref $ unify ds <$> d) ds - unifiedDefs = (foldl' dresolve HM.empty sortedDefs) + let dresolve ds (d,dn,_) = SHM.insert dn (Ref $ unify ds <$> d) ds + unifiedDefs = (foldl' dresolve SHM.empty sortedDefs) traverse (runSysOnly . evalConsts) unifiedDefs False -> do - hf <- foldlM (dresolveMem info) (HeapFold HM.empty M.empty 0) sortedDefs + hf <- foldlM (dresolveMem info) (HeapFold mempty M.empty 0) sortedDefs -- Compute, commit and log the final gas after getting the final memory cost. _ <- computeGas (Left (info, "Module Memory cost")) (GModuleMemory (_hfTotalMem hf)) pure (_hfAllDefs hf) where -- | traverse to find deps and form graph - traverseGraph allDefs memo = fmap stronglyConnCompR $ forM (LHM.sortByKey $ HM.toList allDefs) $ \(defName,defTerm) -> do + traverseGraph allDefs memo = fmap stronglyConnCompR $ forM (LHM.sortByKey $ SHM.toList allDefs) $ \(defName,defTerm) -> do defTerm' <- forM defTerm $ \(f :: Name) -> do dm <- resolveRef' True f f -- lookup ref, don't try modules for barenames case (dm, f) of (Just t, _) -> return (Right t) -- ref found -- for barenames, check decls and finally modules (Nothing, Name (BareName fn _)) -> - case HM.lookup fn allDefs of + case SHM.lookup fn allDefs of Just _ -> return (Left fn) -- decl found Nothing -> resolveBareModRef info f fn memo mdef >>= \r -> case r of Just mr -> return (Right mr) -- mod ref found @@ -710,21 +710,21 @@ resolveBareModRef info f fn memo mdef fullyQualifyDefs :: Info -> Module (Term Name) - -> HM.HashMap Text (Term Name) - -> Eval e (HM.HashMap Text Ref, HM.HashMap FullyQualifiedName Ref) + -> SHM.StableHashMap Text (Term Name) + -> Eval e (SHM.StableHashMap Text Ref, SHM.StableHashMap FullyQualifiedName Ref) fullyQualifyDefs info mdef defs = do - removeFromLoaded (Set.fromList (HM.keys defs)) + removeFromLoaded (Set.fromList (SHM.keys defs)) (cs, depNames) <- flip runStateT Set.empty $ liftIO (newIORef Nothing) >>= traverseGraph defs sortedDefs <- enforceAcyclic info cs fDefs <- foldlM mkAndEvalConsts mempty sortedDefs - deps <- uses (evalRefs . rsLoadedModules) (foldMap (allModuleExports . fst) . HM.filterWithKey (\k _ -> Set.member k depNames)) + deps <- uses (evalRefs . rsLoadedModules) (foldMap (allModuleExports . fst) . SHM.filterWithKey (\k _ -> Set.member k depNames)) szVer <- getSizeOfVersion let (Sum totalMemory) = foldMap (Sum . sizeOf szVer) fDefs + foldMap (Sum . sizeOf szVer) deps _ <- computeGas (Left (info, "Module Memory cost")) (GModuleMemory totalMemory) pure (fDefs, deps) where -- Inline all but TDefs. - replaceL m n = case HM.lookup (_fqName n) m of + replaceL m n = case SHM.lookup (_fqName n) m of Just p -> case p of Ref TDef{} -> pure (Direct (TVar (FQName n) def)) Ref (TConst _ _ (CVEval _ v) _ _) -> pure (Ref v) @@ -733,14 +733,14 @@ fullyQualifyDefs info mdef defs = do mkAndEvalConsts m (term', dn, _) = do t <- Ref <$> (traverse (either (replaceL m) pure) term') t' <- runSysOnly $ evalConstsNonRec t - evalRefs . rsQualifiedDeps %= HM.insert dn t' - pure $ HM.insert(_fqName dn) t' m + evalRefs . rsQualifiedDeps %= SHM.insert dn t' + pure $ SHM.insert(_fqName dn) t' m checkAddDep = \case Direct (TVar (FQName fq) _) -> modify' (Set.insert (_fqModule fq)) _ -> pure () - resolveBareName memo f@(BareName fn _) = case HM.lookup fn defs of + resolveBareName memo f@(BareName fn _) = case SHM.lookup fn defs of Just _ -> do let name' = FullyQualifiedName fn (_mName mdef) (moduleHash mdef) return (Left name') -- decl found @@ -768,7 +768,7 @@ fullyQualifyDefs info mdef defs = do (Nothing, _) -> resolveError f -- | traverse to find deps and form graph - traverseGraph allDefs memo = fmap stronglyConnCompR $ forM (LHM.sortByKey $ HM.toList allDefs) $ \(defName,defTerm) -> do + traverseGraph allDefs memo = fmap stronglyConnCompR $ forM (LHM.sortByKey $ SHM.toList allDefs) $ \(defName,defTerm) -> do let defName' = FullyQualifiedName defName (_mName mdef) (moduleHash mdef) disablePact48 <- lift (isExecutionFlagSet FlagDisablePact48) defTerm' <- forM defTerm $ \(f :: Name) -> resolveName disablePact48 memo f @@ -782,8 +782,8 @@ fullyQualifyDefs info mdef defs = do evaluateConstraints :: Info -> (Module n) - -> HM.HashMap Text Ref - -> Eval e (Module n, HM.HashMap Text Ref) + -> SHM.StableHashMap Text Ref + -> Eval e (Module n, SHM.StableHashMap Text Ref) evaluateConstraints info m evalMap = do (m',evalMap',newIfs) <- foldM evaluateConstraint (m, evalMap, []) $ _mInterfaces m return (set mInterfaces (reverse newIfs) m',evalMap') @@ -794,7 +794,7 @@ evaluateConstraints info m evalMap = do Nothing -> evalError info $ "Interface not defined: " <> pretty ifn Just (ModuleData (MDInterface Interface{..}) irefs _) -> do - em' <- LHM.foldrWithKey (solveConstraint ifn info) (pure refMap) $ LHM.fromList $ HM.toList irefs + em' <- LHM.foldrWithKey (solveConstraint ifn info) (pure refMap) $ LHM.fromList $ SHM.toList irefs let um = over mMeta (<> _interfaceMeta) m' newIf <- ifExecutionFlagSet' FlagPreserveModuleIfacesBug ifn _interfaceName pure (um, em', newIf:newIfs) @@ -807,14 +807,14 @@ solveConstraint -> Info -> Text -> Ref - -> Eval e (HM.HashMap Text Ref) - -> Eval e (HM.HashMap Text Ref) + -> Eval e (SHM.StableHashMap Text Ref) + -> Eval e (SHM.StableHashMap Text Ref) solveConstraint _ifn info refName (Direct t) _ = evalError info $ "found native reference " <> pretty t <> " while resolving module contraints: " <> pretty refName solveConstraint ifn info refName (Ref t) evalMap = do em <- evalMap - case HM.lookup refName em of + case SHM.lookup refName em of Nothing -> case t of TConst{} -> evalMap @@ -837,7 +837,7 @@ solveConstraint ifn info refName (Ref t) evalMap = do match a "Argument name mismatch" n n' matchWith termRefEq' a ("Argument type mismatch for " <> n) ty ty' -- the model concatenation step: we reinsert the ref back into the map with new models - pure $ HM.insert refName (Ref $ over (tDef . dMeta) (<> m) s) em + pure $ SHM.insert refName (Ref $ over (tDef . dMeta) (<> m) s) em _ -> evalError' s $ "found overlapping refs - please resolve: " <> pretty t where @@ -897,7 +897,7 @@ resolveRef' _ i (QName (QualifiedName q@(ModuleName refNs ns) n _)) = moduleReso lookupQn n' i' q' = do m <- lookupModule i' q' case (m, ns) of - (Just m', _) -> return $ HM.lookup n' $ _mdRefMap m' + (Just m', _) -> return $ SHM.lookup n' $ _mdRefMap m' (Nothing, Just{}) -> return Nothing (Nothing, Nothing) -> -- note that while 'resolveModRef' uses 'moduleResolver' again, @@ -933,7 +933,7 @@ resolveRefFQN i (QName (QualifiedName q@(ModuleName refNs ns) n _)) = moduleReso m <- lookupModule i' q' case (m, ns) of (Just m', _) -> - case HM.lookup n (_mdRefMap m') of + case SHM.lookup n (_mdRefMap m') of Just (Ref (TDef def' _) ) -> do h <- getModuleHash (_mdModule m') let name' = FQName (FullyQualifiedName n (_dModule def') h) @@ -1011,9 +1011,9 @@ resolveDynamic i mem acc n = case acc of -- | This should be impure. See 'evaluateDefs'. Refs are -- expected to exist, and if they don't, it is a serious bug -unify :: HM.HashMap Text Ref -> Either Text Ref -> Ref +unify :: SHM.StableHashMap Text Ref -> Either Text Ref -> Ref unify _ (Right r) = r -unify m (Left t) = m HM.! t +unify m (Left t) = m SHM.! t -- | Evaluate consts in a module. Deprecated in favor of `evalConstsNonRec` evalConsts :: PureSysOnly e => Ref -> Eval e Ref @@ -1219,7 +1219,7 @@ reduceDynamic tref tmem i = do let (DefName mem) = _dDefName d md <- resolveModule i ref case md of - Just (ModuleData _ refs _) -> case HM.lookup mem refs of + Just (ModuleData _ refs _) -> case SHM.lookup mem refs of Just (Ref (TDef mdef _)) -> return (Right mdef) _ -> evalError' i $ "reduceDynamic: unknown module ref: " <> pretty tref Nothing -> evalError' i @@ -1645,26 +1645,26 @@ installModule updated md = go . maybe allDefs filteredDefs updateInternal f = case _mdModule md of MDModule m -> do let toFQ k = FullyQualifiedName k (_mName m) (_mhHash (_mHash m)) - let hm = HM.map (\v -> (v, Just (_mHash m))) (_mdRefMap md) - evalRefs . rsLoaded %= HM.union (HM.foldlWithKey' f mempty hm) - evalRefs . rsQualifiedDeps %= HM.union (HM.mapKeys toFQ (_mdRefMap md)) . HM.union (_mdDependencies md) + let hm = SHM.map (\v -> (v, Just (_mHash m))) (_mdRefMap md) + evalRefs . rsLoaded %= SHM.union (SHM.foldlWithKey' f mempty hm) + evalRefs . rsQualifiedDeps %= SHM.union (SHM.mapKeys toFQ (_mdRefMap md)) . SHM.union (_mdDependencies md) MDInterface _ -> do let f' m k v = case v of Ref TDef{} -> m _ -> f m k (v, Nothing) - evalRefs . rsLoaded %= HM.union (HM.foldlWithKey' f' mempty $ _mdRefMap md) + evalRefs . rsLoaded %= SHM.union (SHM.foldlWithKey' f' mempty $ _mdRefMap md) go f = do updateInternal f when updated $ - evalRefs . rsLoadedModules %= HM.insert (moduleDefName $ _mdModule md) (md,updated) + evalRefs . rsLoadedModules %= SHM.insert (moduleDefName $ _mdModule md) (md,updated) filteredDefs is m k v = if V.elem k is - then HM.insert k v m + then SHM.insert k v m else m - allDefs m k v = HM.insert k v m + allDefs m k v = SHM.insert k v m msg :: Doc -> Term n msg = toTerm . renderCompactText' diff --git a/src/Pact/GasModel/GasTests.hs b/src/Pact/GasModel/GasTests.hs index 2d34a48cc..8447753c2 100644 --- a/src/Pact/GasModel/GasTests.hs +++ b/src/Pact/GasModel/GasTests.hs @@ -36,6 +36,8 @@ import Pact.Types.Lang import Pact.Types.PactValue (PactValue(..)) import Pact.Types.Runtime import Pact.Types.Verifier (VerifierName(..)) +import qualified Pact.Utils.StableHashMap as SHM + import Pact.JSON.Legacy.Value @@ -1197,7 +1199,7 @@ yieldTests = tests yieldExpr obj = [text| (yield $obj) |] yieldExprWithTargetChain obj = [text| (yield $obj "some-chain-id") |] - mockModules = HM.fromList [(someModuleName, someModuleData)] + mockModules = SHM.fromList [(someModuleName, someModuleData)] mockStackframe = [someStackFrame] updateStateWithStackFrame = setState (set evalCallStack mockStackframe) updateStateWithPactExec = setState (set evalPactExec mockPactExec) @@ -1295,7 +1297,7 @@ resumeTests nativeName = tests setInitialState = setState $ const (initStateModules mockModules) mockModules - = HM.fromList [(someModuleName, someModuleData)] + = SHM.fromList [(someModuleName, someModuleData)] pactStep = Just $ PactStep 2 False (PactId "") (Just yieldVal) yieldVal diff --git a/src/Pact/GasModel/Types.hs b/src/Pact/GasModel/Types.hs index 1e3e19709..6532a231d 100644 --- a/src/Pact/GasModel/Types.hs +++ b/src/Pact/GasModel/Types.hs @@ -45,7 +45,6 @@ import System.Directory (removeFile) import qualified Data.ByteString.Char8 as B8 import qualified Data.ByteString.Base16 as B16 -import qualified Data.HashMap.Strict as HM import qualified Pact.Persist.SQLite as PSL import qualified Data.Text as T import qualified Data.Text.Encoding as T @@ -62,6 +61,7 @@ import Pact.Types.Logger (neverLog, Loggers(..)) import Pact.Types.Runtime import Pact.Types.SQLite (SQLiteConfig(..),fastNoJournalPragmas) import Pact.Types.SPV +import qualified Pact.Utils.StableHashMap as SHM type SQLiteDb = DbEnv PSL.SQLite @@ -212,7 +212,7 @@ setEnv f setup = setEnv' defEvalState :: IO EvalState defEvalState = do stateWithModule <- getLoadedState (accountsModule acctModuleName) - let loaded = HM.singleton sampleLoadedKeysetName + let loaded = SHM.singleton sampleLoadedKeysetName (Direct $ TGuard (GKeySet sampleKeyset) def, Nothing) return $ set (evalRefs . rsLoaded) loaded stateWithModule diff --git a/src/Pact/GasModel/Utils.hs b/src/Pact/GasModel/Utils.hs index 6d2937ea7..4fe706077 100644 --- a/src/Pact/GasModel/Utils.hs +++ b/src/Pact/GasModel/Utils.hs @@ -66,7 +66,6 @@ import NeatInterpolation (text) import qualified Data.Aeson as A import qualified Data.HashMap.Strict as HM -import qualified Data.HashSet as HS import qualified Data.Set as S import qualified Data.Map as M import qualified Data.Text as T @@ -420,7 +419,7 @@ someStackFrame = someModuleData :: ModuleData Ref someModuleData = ModuleData modDef refMap mempty - where refMap = HM.empty + where refMap = mempty ref = Direct $ TVar (Name $ BareName "" def) def fst' :: Ref -> Maybe Int fst' = const Nothing @@ -433,4 +432,4 @@ someModuleData = ModuleData modDef refMap mempty defOfRef = Def (DefName "") someModuleName Defun (FunType [] TyAny) scopeOfRef def def def modDef = MDModule mod' gov = Governance $ Right defOfRef - mod' = Module someModuleName gov def (Code "") someModuleHash HS.empty [] [] + mod' = Module someModuleName gov def (Code "") someModuleHash mempty [] [] diff --git a/src/Pact/Interpreter.hs b/src/Pact/Interpreter.hs index 259f964d0..009028607 100644 --- a/src/Pact/Interpreter.hs +++ b/src/Pact/Interpreter.hs @@ -53,9 +53,7 @@ import Control.Lens import Data.Aeson import Data.Default -import Data.HashMap.Strict (HashMap) import Data.Monoid(Endo(..)) -import qualified Data.HashMap.Strict as HM import qualified Data.Map.Strict as M #if !MIN_VERSION_base(4,20,0) import Data.Foldable(foldl') @@ -81,6 +79,7 @@ import Pact.Types.RPC import Pact.Types.Runtime import Pact.Types.SPV import Pact.Types.Verifier +import qualified Pact.Utils.StableHashMap as SHM import Pact.JSON.Legacy.Value @@ -138,7 +137,7 @@ data EvalResult = EvalResult -- ^ Result of defpact execution if any , _erGas :: Gas -- ^ Gas consumed/charged - , _erLoadedModules :: HashMap ModuleName (ModuleData Ref,Bool) + , _erLoadedModules :: SHM.StableHashMap ModuleName (ModuleData Ref,Bool) -- ^ Modules loaded, with flag indicating "newly loaded" , _erTxId :: !(Maybe TxId) -- ^ Transaction id, if executed transactionally @@ -159,9 +158,10 @@ evalExec runner evalEnv ParsedCode {..} = do isNarrowTry = not $ S.member FlagDisablePact44 $ _ecFlags $ _eeExecutionConfig evalEnv -- | For pre-installing modules into state. -initStateModules :: HashMap ModuleName (ModuleData Ref) -> EvalState -initStateModules modules = - set (evalRefs . rsQualifiedDeps) (foldMap allModuleExports modules) $ set (evalRefs . rsLoadedModules) (fmap (,False) modules) def +initStateModules :: SHM.StableHashMap ModuleName (ModuleData Ref) -> EvalState +initStateModules modules + = set (evalRefs . rsQualifiedDeps) (foldMap allModuleExports modules) + $ set (evalRefs . rsLoadedModules) (fmap (,False) modules) def -- | Resume a defpact execution, with optional PactExec. evalContinuation :: Interpreter e -> EvalEnv e -> ContMsg -> IO EvalResult @@ -230,7 +230,7 @@ setupEvalEnv dbEnv ent mode msgData refStore gasEnv np spv pd ec = do disablePactNatives :: [Text] -> ExecutionFlag -> ExecutionConfig -> Endo RefStore disablePactNatives bannedNatives flag (ExecutionConfig ec) = Endo $ - if S.member flag ec then over rsNatives (\k -> foldl' (flip HM.delete) k bannedNatives) + if S.member flag ec then over rsNatives (\k -> foldl' (flip SHM.delete) k bannedNatives) else id disablePact40Natives :: ExecutionConfig -> Endo RefStore diff --git a/src/Pact/Main.hs b/src/Pact/Main.hs index b222f7f78..aa7c45473 100644 --- a/src/Pact/Main.hs +++ b/src/Pact/Main.hs @@ -37,7 +37,6 @@ import Control.Monad.State.Strict import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BS8 import Data.List -import qualified Data.HashMap.Strict as HM import qualified Data.Text as T import qualified Data.Text.IO as T import Data.Text (unpack) @@ -56,6 +55,7 @@ import Pact.Types.Version import Pact.Types.Crypto import Pact.Types.SPV import Pact.ApiReq +import qualified Pact.Utils.StableHashMap as SHM data Option = @@ -240,7 +240,7 @@ die msg = hPutStrLn stderr msg >> hFlush stderr >> exitFailure echoBuiltins :: IO () echoBuiltins = do defs <- view (eeRefStore.rsNatives) <$> (initPureEvalEnv Nothing) - forM_ (sort $ HM.keys defs) print + forM_ (sort $ SHM.keys defs) print genKeys :: IO () diff --git a/src/Pact/Native.hs b/src/Pact/Native.hs index f5482045a..999f52bf5 100644 --- a/src/Pact/Native.hs +++ b/src/Pact/Native.hs @@ -76,7 +76,6 @@ import Data.Functor(($>)) #if !MIN_VERSION_base(4,20,0) import Data.Foldable #endif -import qualified Data.HashMap.Strict as HM import qualified Data.Map.Strict as M import qualified Data.List as L (nubBy) import qualified Data.Set as S @@ -111,6 +110,7 @@ import Pact.Types.Purity import Pact.Types.Runtime import Pact.Types.Version import Pact.Types.Namespace +import qualified Pact.Utils.StableHashMap as SHM import Crypto.Hash.Keccak256Native (Keccak256Error(..), keccak256) import Crypto.Hash.PoseidonNative (poseidon) import qualified Crypto.Hash.HyperlaneNatives as HyperlaneAfter413 @@ -136,11 +136,11 @@ natives = ] -- | Production native modules as a dispatch map. -nativeDefs :: HM.HashMap Text Ref +nativeDefs :: SHM.StableHashMap Text Ref nativeDefs = mconcat $ map moduleToMap natives -moduleToMap :: NativeModule -> HM.HashMap Text Ref -moduleToMap = HM.fromList . map (asString *** Direct) . snd +moduleToMap :: NativeModule -> SHM.StableHashMap Text Ref +moduleToMap = SHM.fromList . map (asString *** Direct) . snd lengthDef :: NativeDef lengthDef = defRNative "length" length' (funType tTyInteger [("x",listA)]) diff --git a/src/Pact/PersistPactDb/Regression.hs b/src/Pact/PersistPactDb/Regression.hs index d9ad2ac06..a2316eac7 100644 --- a/src/Pact/PersistPactDb/Regression.hs +++ b/src/Pact/PersistPactDb/Regression.hs @@ -16,7 +16,6 @@ import Data.Foldable(for_) import Data.List.Unsafe import qualified Data.Map.Strict as M -import qualified Data.HashMap.Strict as HM import Pact.PersistPactDb import Pact.Persist @@ -29,6 +28,7 @@ import Pact.Repl import Pact.Repl.Types import Pact.Native (nativeDefs) import Pact.Types.RowData +import qualified Pact.Utils.StableHashMap as SHM import qualified Pact.JSON.Encode as J import Pact.JSON.Legacy.Value @@ -48,7 +48,7 @@ loadModule = do show (view (rEvalState . evalRefs . rsLoadedModules) s) nativeLookup :: NativeDefName -> Maybe (Term Name) -nativeLookup (NativeDefName n) = case HM.lookup n nativeDefs of +nativeLookup (NativeDefName n) = case SHM.lookup n nativeDefs of Just (Direct t) -> Just t _ -> Nothing diff --git a/src/Pact/Repl.hs b/src/Pact/Repl.hs index 977de1c3e..5929c40fc 100644 --- a/src/Pact/Repl.hs +++ b/src/Pact/Repl.hs @@ -91,6 +91,7 @@ import Pact.Types.SPV import Pact.Repl.Types import Pact.Gas import Pact.JSON.Legacy.Value +import qualified Pact.Utils.StableHashMap as SHM -- | for use in GHCI repl :: IO (Either () (Term Name)) @@ -341,7 +342,7 @@ loadFile i f = do pr <- TF.parseFromFileEx exprsOnly computedPath srcBS <- liftIO $ BS.readFile computedPath let src = unpack $ decodeUtf8 srcBS - when (isPactFile f) $ rEvalState.evalRefs.rsLoaded .= HM.empty + when (isPactFile f) $ rEvalState.evalRefs.rsLoaded .= mempty r <- parsedCompileEval src pr when (isPactFile f) $ void useReplLib restoreFile @@ -444,11 +445,11 @@ useReplLib = id %= setReplLib -- | mutate repl state to install lib functions setReplLib :: ReplState -> ReplState -setReplLib = over (rEvalState.evalRefs.rsLoaded) $ HM.union replDefsMap +setReplLib = over (rEvalState.evalRefs.rsLoaded) $ SHM.union replDefsMap -- | mutate repl state to remove lib functions unsetReplLib :: ReplState -> ReplState -unsetReplLib = over (rEvalState.evalRefs.rsLoaded) (`HM.difference` replDefsMap) +unsetReplLib = over (rEvalState.evalRefs.rsLoaded) (`SHM.difference` replDefsMap) -- | evaluate string in repl monad evalPact :: String -> Repl (Either String (Term Name)) diff --git a/src/Pact/Repl/Lib.hs b/src/Pact/Repl/Lib.hs index c34406553..86ba58be6 100644 --- a/src/Pact/Repl/Lib.hs +++ b/src/Pact/Repl/Lib.hs @@ -37,7 +37,6 @@ import Data.Foldable #endif import Data.IORef import qualified Data.Map.Strict as M -import qualified Data.HashMap.Strict as HM import Data.Semigroup (Endo(..)) import qualified Data.Set as S import Data.Text (Text, unpack) @@ -76,6 +75,8 @@ import Pact.Types.PactValue import Pact.Types.Verifier import Pact.Interpreter import Pact.Runtime.Utils +import qualified Pact.Utils.StableHashMap as SHM + import Pact.JSON.Legacy.Value @@ -276,7 +277,7 @@ replDefs = ("Repl", TyList (mkTyVar "l" []),TySchema TyObject (mkSchemaVar "o") def,tTyKeySet] a = mkTyVar "a" [] -replDefsMap :: HM.HashMap Text (Ref, Maybe ModuleHash) +replDefsMap :: SHM.StableHashMap Text (Ref, Maybe ModuleHash) replDefsMap = (,Nothing) <$> moduleToMap replDefs diff --git a/src/Pact/ReplTools.hs b/src/Pact/ReplTools.hs index 35b116a77..c2b4c873b 100644 --- a/src/Pact/ReplTools.hs +++ b/src/Pact/ReplTools.hs @@ -14,7 +14,6 @@ import Control.Lens import Control.Monad.State.Strict import Data.List -import qualified Data.HashMap.Strict as HM import Data.Text (unpack) import qualified Data.Set as Set @@ -29,6 +28,7 @@ import Pact.Types.Pretty hiding (line) import Pact.Native import Pact.Repl import Pact.Repl.Types +import qualified Pact.Utils.StableHashMap as SHM ------------------------------------------------------------------------------ -- Moved from Pact.Repl @@ -47,15 +47,15 @@ completeFn = completeQuotedWord (Just '\\') "\"" listFiles $ -- toListOf (traverse . _1 . mdRefMap . to HM.keys . each . to prefixModule) modules allNames = Set.fromList $ fmap unpack $ concat [ namesInModules - , _mnName <$> HM.keys modules - , HM.keys nativeDefs - , HM.keys allLoaded + , _mnName <$> SHM.keys modules + , SHM.keys nativeDefs + , SHM.keys allLoaded ] matchingNames = Set.filter (str `isPrefixOf`) allNames pure $ simpleCompletion <$> Set.toList matchingNames where prefixedNames (ModuleData (MDModule m) refMap _, _) = - (\k -> renderCompactText (_mName m) <> "." <> k) <$> HM.keys refMap + (\k -> renderCompactText (_mName m) <> "." <> k) <$> SHM.keys refMap prefixedNames _ = mempty replSettings :: (MonadIO m, MonadState ReplState m) => Settings m diff --git a/src/Pact/Runtime/Utils.hs b/src/Pact/Runtime/Utils.hs index 66ac83579..a15e75b9c 100644 --- a/src/Pact/Runtime/Utils.hs +++ b/src/Pact/Runtime/Utils.hs @@ -32,13 +32,13 @@ import Bound import Control.Lens import Control.Monad import Data.Default -import qualified Data.HashMap.Strict as HM import Data.Text (Text) import Pact.Gas import Pact.Types.Runtime import Pact.Types.PactValue import Pact.Types.Pretty +import qualified Pact.Utils.StableHashMap as SHM -- Strip all term info and native examples. stripTermInfo :: Term Name -> Term Name @@ -194,13 +194,13 @@ lookupModule i mn = do MDModule m -> GPostRead (ReadModule (_mName m) (_mCode m)) MDInterface int -> GPostRead (ReadInterface (_interfaceName int) (_interfaceCode int)) natives <- view $ eeRefStore . rsNatives - let natLookup (NativeDefName n) = case HM.lookup n natives of + let natLookup (NativeDefName n) = case SHM.lookup n natives of Just (Direct t) -> Just t _ -> Nothing case traverse (traverse (fromPersistDirect natLookup)) mdStored of Right md -> do - evalRefs . rsLoadedModules %= HM.insert mn (md,False) - evalRefs . rsQualifiedDeps %= HM.union (allModuleExports md) + evalRefs . rsLoadedModules %= SHM.insert mn (md,False) + evalRefs . rsQualifiedDeps %= SHM.union (allModuleExports md) return $ Just md Left e -> evalError' i $ "Internal error: module restore failed: " <> pretty e @@ -294,10 +294,10 @@ inlineModuleData md@(ModuleData m export deps) = case m of inline' m' = let toFQ n = FullyQualifiedName n (_mName m') (_mhHash $ _mHash m') - deps' = HM.mapKeys toFQ export - allTL = HM.union deps' deps + deps' = SHM.mapKeys toFQ export + allTL = SHM.union deps' deps in ModuleData (MDModule (fmap (resolve allTL) <$> m')) (resolve allTL <$> export) deps resolve m' = \case Ref t -> Ref (resolve m' <$> t) - Direct (TVar (FQName fq) _) -> resolve m' (m' HM.! fq) + Direct (TVar (FQName fq) _) -> resolve m' (m' SHM.! fq) e -> e diff --git a/src/Pact/Typechecker.hs b/src/Pact/Typechecker.hs index ca60705e0..92010e32e 100644 --- a/src/Pact/Typechecker.hs +++ b/src/Pact/Typechecker.hs @@ -42,7 +42,6 @@ import Control.Monad.State import Data.Bitraversable (bimapM) import Data.Default import Data.Foldable -import qualified Data.HashMap.Strict as HM import Data.List import Data.List.Unsafe (unsafeHead) import Data.List.NonEmpty (NonEmpty (..)) @@ -62,6 +61,7 @@ import Pact.Types.Pretty import qualified Pact.Types.Runtime as Term import Pact.Types.Runtime hiding (App,ModRef,appInfo,Object,Step) import Pact.Types.Typecheck +import qualified Pact.Utils.StableHashMap as SHM die :: MonadThrow m => Info -> String -> m a die i s = throwM $ CheckerException i s @@ -809,7 +809,7 @@ toFun (TDef td i) = resolveDyn td resolveDyn Def{..} = use tcDynEnv >>= \de -> case M.lookup _dModule de of Nothing -> withScopeBodyToFun (asString _dDefName) _dModule _dFunType _dDefBody _dDefType i - Just ModuleData{..} -> case HM.lookup (asString _dDefName) _mdRefMap of + Just ModuleData{..} -> case SHM.lookup (asString _dDefName) _mdRefMap of Just r -> toFun (fmap Left $ TVar r i) Nothing -> die i $ "Dynamic substitution failed, module does not have member: " ++ show (moduleDefName _mdModule) ++ "::" ++ show _dDefName @@ -1264,5 +1264,5 @@ typecheckModule dbg dynEnv (ModuleData (MDModule m) rm _) = do let tc ((tls,fails),sup) r = do (tl,TcState {..}) <- runTCState (mkTcState sup dbg dynEnv) (typecheckTopLevel r) return ((tl:tls,fails ++ toList _tcFailures),succ _tcSupply) - fst <$> foldM tc (([],[]),0) (HM.elems rm) + fst <$> foldM tc (([],[]),0) (SHM.elems rm) typecheckModule _ _ (ModuleData MDInterface{} _ _) = return mempty diff --git a/src/Pact/Types/Hash.hs b/src/Pact/Types/Hash.hs index ad443e15b..8ffb257a2 100644 --- a/src/Pact/Types/Hash.hs +++ b/src/Pact/Types/Hash.hs @@ -44,6 +44,7 @@ import Test.QuickCheck.Instances() import qualified Pact.JSON.Encode as J import Pact.JSON.Legacy.Hashable (LegacyHashable) +import Pact.Utils.StableHashMap import qualified Data.ByteArray as ByteArray import qualified Crypto.Hash as Crypto @@ -52,7 +53,7 @@ import qualified Crypto.Hash as Crypto -- Within Pact these are blake2b_256 but unvalidated as such, -- so other hash values are kosher (such as an ETH sha256, etc). newtype Hash = Hash { unHash :: ShortByteString } - deriving (Eq, Ord, Generic, Hashable, Serialize, SizeOf, LegacyHashable) + deriving (Eq, Ord, Generic, Hashable, Serialize, SizeOf, LegacyHashable, StableHashable) instance Arbitrary Hash where -- TODO: add generators for other hash types diff --git a/src/Pact/Types/Names.hs b/src/Pact/Types/Names.hs index 0bc26a441..80216e222 100644 --- a/src/Pact/Types/Names.hs +++ b/src/Pact/Types/Names.hs @@ -65,13 +65,14 @@ import Pact.Types.SizeOf import Pact.Types.Util import Pact.Types.Hash import Pact.JSON.Legacy.Hashable +import Pact.Utils.StableHashMap import qualified Pact.JSON.Encode as J newtype NamespaceName = NamespaceName { _namespaceName :: Text } deriving (Eq, Ord, Show, Generic) deriving newtype (FromJSON, IsString, AsString, Hashable, Pretty, NFData, SizeOf, J.Encode) - deriving newtype (LegacyHashable) + deriving newtype (LegacyHashable, StableHashable) instance Arbitrary NamespaceName where arbitrary = NamespaceName <$> genBareText @@ -99,6 +100,12 @@ instance LegacyHashable ModuleName where legacyHashWithSalt s (ModuleName n (Just ns)) = s `legacyHashWithSalt` (1::Int) `legacyHashWithSalt` n `legacyHashWithSalt` ns +instance StableHashable ModuleName where + stableHashWithSalt s (ModuleName n Nothing) = + s `stableHashWithSalt` (0::Int) `stableHashWithSalt` n + stableHashWithSalt s (ModuleName n (Just ns)) = + s `stableHashWithSalt` (1::Int) `stableHashWithSalt` n `stableHashWithSalt` ns + instance SizeOf ModuleName where sizeOf ver (ModuleName mn namespace) = (constructorCost 2) + (sizeOf ver mn) + (sizeOf ver namespace) @@ -286,6 +293,10 @@ instance LegacyHashable FullyQualifiedName where legacyHashWithSalt s FullyQualifiedName{..} = s `legacyHashWithSalt` _fqName `legacyHashWithSalt` _fqModule `legacyHashWithSalt` _fqModuleHash +instance StableHashable FullyQualifiedName where + stableHashWithSalt s FullyQualifiedName{..} = + s `stableHashWithSalt` _fqName `stableHashWithSalt` _fqModule `stableHashWithSalt` _fqModuleHash + instance Ord FullyQualifiedName where (FullyQualifiedName fq fm fh) `compare` (FullyQualifiedName fq' fm' fh') = (fq, fm, fh) `compare` (fq', fm', fh') diff --git a/src/Pact/Types/Persistence.hs b/src/Pact/Types/Persistence.hs index 3ef231ceb..e872c2c65 100644 --- a/src/Pact/Types/Persistence.hs +++ b/src/Pact/Types/Persistence.hs @@ -54,7 +54,6 @@ import Data.Default import qualified Data.ByteString as B import Data.Hashable (Hashable) import Data.Maybe(fromMaybe) -import qualified Data.HashMap.Strict as HM import Data.String (IsString(..)) import Data.Text (Text, pack) import Data.Typeable (Typeable) @@ -75,6 +74,7 @@ import Pact.Types.Namespace import Pact.JSON.Legacy.Utils import qualified Pact.JSON.Legacy.HashMap as LHM import qualified Pact.JSON.Encode as J +import qualified Pact.Utils.StableHashMap as SHM -- -------------------------------------------------------------------------- -- -- PersistDirect @@ -123,12 +123,12 @@ fromPersistDirect natLookup (PDNative nn) = case natLookup nn of Just t -> return t Nothing -> Left $ "Native lookup failed: " <> tShow nn -allModuleExports :: ModuleData Ref -> HM.HashMap FullyQualifiedName Ref +allModuleExports :: ModuleData Ref -> SHM.StableHashMap FullyQualifiedName Ref allModuleExports md = case _mdModule md of MDModule m -> let toFQ k = FullyQualifiedName k (_mName m) (_mhHash (_mHash m)) - in HM.mapKeys toFQ (_mdRefMap md) `HM.union` (_mdDependencies md) - _ -> HM.empty + in SHM.mapKeys toFQ (_mdRefMap md) `SHM.union` (_mdDependencies md) + _ -> SHM.empty -- -------------------------------------------------------------------------- -- -- ModuleData @@ -136,8 +136,8 @@ allModuleExports md = case _mdModule md of -- | Module ref store data ModuleData r = ModuleData { _mdModule :: !(ModuleDef (Def r)) - , _mdRefMap :: !(HM.HashMap Text r) - , _mdDependencies :: !(HM.HashMap FullyQualifiedName r) + , _mdRefMap :: !(SHM.StableHashMap Text r) + , _mdDependencies :: !(SHM.StableHashMap FullyQualifiedName r) } deriving (Eq, Show, Generic, Functor, Foldable, Traversable) makeLenses ''ModuleData @@ -149,9 +149,9 @@ instance NFData r => NFData (ModuleData r) instance (J.Encode r, Eq r) => J.Encode (ModuleData r) where build o = J.object - [ "dependencies" J..??= J.Array (J.Array <$> LHM.toList (legacyHashMap_ (_mdDependencies o))) + [ "dependencies" J..??= J.Array (J.Array <$> LHM.toList (legacyHashMap_ $ SHM.unstable $ _mdDependencies o)) , "module" J..= _mdModule o - , "refMap" J..= legacyHashMap id (_mdRefMap o) + , "refMap" J..= legacyHashMap id (SHM.unstable $ _mdRefMap o) ] {-# INLINE build #-} @@ -161,7 +161,7 @@ instance (FromJSON r) => FromJSON (ModuleData r) where ModuleData <$> o .: "module" <*> o .: "refMap" - <*> (HM.fromList <$> (fromMaybe mempty <$> o .:? "dependencies")) + <*> (SHM.fromList <$> (fromMaybe mempty <$> o .:? "dependencies")) instance Arbitrary r => Arbitrary (ModuleData r) where arbitrary = ModuleData diff --git a/src/Pact/Types/Runtime.hs b/src/Pact/Types/Runtime.hs index dd024768e..879098194 100644 --- a/src/Pact/Types/Runtime.hs +++ b/src/Pact/Types/Runtime.hs @@ -74,7 +74,6 @@ import Control.DeepSeq import Data.Aeson hiding (Object) import Data.Default import Data.IORef(IORef, modifyIORef') -import qualified Data.HashMap.Strict as HM import qualified Data.Map.Strict as M import qualified Data.Set as S import Data.String @@ -100,6 +99,7 @@ import Pact.Types.SPV import Pact.Types.Util import Pact.Types.Verifier import Pact.Types.Namespace +import qualified Pact.Utils.StableHashMap as SHM import Pact.JSON.Legacy.Value (LegacyValue(..)) @@ -112,14 +112,14 @@ instance AsString KeyPredBuiltins where asString Keys2 = "keys-2" keyPredBuiltins :: M.Map Name KeyPredBuiltins -keyPredBuiltins = M.fromList $ map (Name . (`BareName` def) . asString &&& id) [minBound .. maxBound] +keyPredBuiltins = M.fromList $ fmap (Name . (`BareName` def) . asString &&& id) [minBound .. maxBound] -- | Storage for natives. newtype RefStore = RefStore { - _rsNatives :: HM.HashMap Text Ref + _rsNatives :: SHM.StableHashMap Text Ref } deriving (Eq, Show) makeLenses ''RefStore -instance Default RefStore where def = RefStore HM.empty +instance Default RefStore where def = RefStore mempty -- | Indicates level of db access offered in current Eval monad. data Purity = @@ -315,13 +315,13 @@ toPactId = PactId . hashToText -- | Dynamic storage for loaded names and modules, and current namespace. data RefState = RefState { -- | Imported Module-local defs and natives. - _rsLoaded :: !(HM.HashMap Text (Ref, Maybe ModuleHash)) + _rsLoaded :: !(SHM.StableHashMap Text (Ref, Maybe ModuleHash)) -- | Modules that were loaded, and flag if updated. - , _rsLoadedModules :: !(HM.HashMap ModuleName (ModuleData Ref, Bool)) + , _rsLoadedModules :: !(SHM.StableHashMap ModuleName (ModuleData Ref, Bool)) -- | Current Namespace , _rsNamespace :: !(Maybe (Namespace (Term Name))) -- | Map of all fully qualified names in scope, including transitive dependencies. - , _rsQualifiedDeps :: !(HM.HashMap FullyQualifiedName Ref) + , _rsQualifiedDeps :: !(SHM.StableHashMap FullyQualifiedName Ref) } deriving (Eq,Show,Generic) makeLenses ''RefState diff --git a/src/Pact/Utils/StableHashMap.hs b/src/Pact/Utils/StableHashMap.hs new file mode 100644 index 000000000..66222b700 --- /dev/null +++ b/src/Pact/Utils/StableHashMap.hs @@ -0,0 +1,387 @@ +{-# LANGUAGE BangPatterns #-} +{-# LANGUAGE CPP #-} +{-# LANGUAGE DeriveFunctor #-} +{-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE ImportQualifiedPost #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE RoleAnnotations #-} +{-# LANGUAGE TypeApplications #-} +{-# LANGUAGE TypeFamilies #-} + +-- | +-- Module: Pact.Utils.StableHashMap +-- Copyright: Copyright © 2024 Kadena LLC. +-- License: MIT +-- Maintainer: Lars Kuhtz +-- Stability: experimental +-- +module Pact.Utils.StableHashMap +( StableHashable(..) +, StableHashMap +, unstable +, empty +, singleton +, null +, size +, member +, lookup +, (!?) +, (!) +, insert +, insertWith +, delete +, union +, unionWith +, unions +, difference +, map +, mapWithKey +, traverseWithKey +, mapKeys +, intersection +, filter +, filterWithKey +, foldMapWithKey +, foldrWithKey' +, foldlWithKey' +, foldrWithKey +, foldlWithKey +, keys +, elems +, toList +, fromList + +-- * Internal +, hashInt +) where + +import Control.DeepSeq +import Control.Monad +import Control.Lens + +import Data.Aeson +import Data.Bifoldable +import Data.Bifunctor +import Data.Bits +import Data.ByteString qualified as B +import Data.ByteString.Lazy qualified as BL +import Data.ByteString.Short qualified as BS +import Data.HashMap.Strict qualified as HM +import Data.Hashable qualified as H +import Data.Int +import Data.Text qualified as T +import Data.Text.Encoding qualified as T +import Data.Word + +import Data.Hash.FNV1 (fnv1_64_) +import Data.Hash.FNV1.Salted + +import GHC.Stack + +import Prelude hiding (lookup, null, filter, map) + +import Test.QuickCheck qualified as Q + +-- -------------------------------------------------------------------------- -- +-- Non-standard Hashable 1.4.4.0 Variant of Fnv1 64 bit + +newtype HFnv164Context = HFnv164Context Word64 + +newtype HFnv164Hash = HFnv164Hash Word64 + deriving (Show, Eq, Ord) + +instance IncrementalHash HFnv164Hash where + type Context HFnv164Hash = HFnv164Context + update (HFnv164Context !ctx) !ptr !n = HFnv164Context <$!> fnv1_64_ ptr n ctx + finalize (HFnv164Context !ctx) = HFnv164Hash ctx + {-# INLINE update #-} + {-# INLINE finalize #-} + +instance Hash HFnv164Hash where + type Salt HFnv164Hash = Word64 + -- this initialization of a salted FNV1 hash is no-standard. The standard + -- version seed the context first the value of fnvOffsetBasis64 and mixes + -- the salted into that. The version in hashable-1.4.4.0 uses the salt as + -- the seed for the initial context. + initialize = HFnv164Context + {-# INLINE initialize #-} + +-- -------------------------------------------------------------------------- -- +-- StableHashable + +-- | Noncryptographic hashvalues for use with hash tables and similar data +-- structures. +-- +-- This class shares its types signatures with `Hashable` from the +-- `hashable` package. However, it provides different guarantees: +-- +-- * Instances of this class promise the the computed hash value is stable +-- accross all implementations including future versions, platforms, +-- compilers, etc. +-- +class StableHashable k where + stableHash :: k -> Int64 + stableHashWithSalt :: Int64 -> k -> Int64 + + stableHash = stableHashWithSalt defaultSalt + stableHashWithSalt s = hashInt s . stableHash + {-# MINIMAL stableHash | stableHashWithSalt #-} + +-- | This instance is compatible with the hashable-1.4.4.0 on 64-bit platforms. +-- +-- (Generally, this instance should be avoided for software that may be used +-- on platforms with word-sizes other tha n 64 bits.) +-- +instance StableHashable Int where + stableHash = id . fromIntegral + stableHashWithSalt s = hashInt s . fromIntegral + +-- | This instance is compatible with the hashable-1.4.4.0 +-- +instance StableHashable Int64 where + stableHash = id + stableHashWithSalt s = hashInt s + +-- | This instance is compatible with the hashable-1.4.4.0 +-- +instance StableHashable Word8 where + stableHash = fromIntegral + stableHashWithSalt s = hashInt s . stableHash + +-- | This instance is compatible with the hashable-1.4.4.0 +-- +instance StableHashable () where + stableHash () = 0 + stableHashWithSalt s = hashInt s . stableHash + +-- | This instance is compatible with the hashable-1.4.4.0 +-- +instance StableHashable Bool where + stableHash False = 0 + stableHash True = 1 + stableHashWithSalt s = hashInt s . stableHash + +-- | This instance is compatible with the hashable-1.4.4.0 +-- +instance StableHashable B.ByteString where + stableHashWithSalt s b = fromIntegral h + where + s' = fromIntegral $ stableHashWithSalt @Int64 s (fromIntegral $ B.length b) + HFnv164Hash h = hashByteString (s') b + +-- | This instance is compatible with the hashable-1.4.4.0. +-- +-- The implementation is NOT lazy, because of the use of 'BL.length'. If lazy +-- performance is required this implemenatation can be adjusted without changing +-- the semantics. +-- +instance StableHashable BL.ByteString where + stableHashWithSalt s b = stableHashWithSalt (fromIntegral h) (BL.length b) + where + s' = fromIntegral $ stableHash s + HFnv164Hash h = hashByteStringLazy (s') b + +-- | This instance is compatible with the hashable-1.4.4.0 +-- +instance StableHashable BS.ShortByteString where + stableHashWithSalt s b = fromIntegral h + where + s' = fromIntegral $ stableHashWithSalt s (BS.length b) + HFnv164Hash h = hashShortByteString (s') b + +-- | This instance is compatible with the hashable-1.4.4.0 +-- +instance StableHashable T.Text where + stableHashWithSalt s t = stableHashWithSalt s $ T.encodeUtf8 t + +-- -------------------------------------------------------------------------- -- + +defaultSalt :: Int64 +defaultSalt = fromIntegral @Word64 @Int64 14695981039346656037 +{-# INLINE defaultSalt #-} + +-- Variant of fnv1 that is used in the `hashable` package version 1.4.4.0 +-- Copied from https://hackage.haskell.org/package/hashable-1.4.4.0/docs/src/Data.Hashable.LowLevel.html#hashInt +-- Copyright Milan Straka 2010 (BSD-3-Clause) +-- +hashInt :: Int64 -> Int64 -> Int64 +hashInt s x = s `rnd` x1 `rnd` x2 `rnd` x3 `rnd` x4 + where + {-# INLINE rnd #-} + {-# INLINE x1 #-} + {-# INLINE x2 #-} + {-# INLINE x3 #-} + {-# INLINE x4 #-} + rnd a b = (a * 1099511628211) `xor` b + x1 = shiftR x 48 .&. 0xffff + x2 = shiftR x 32 .&. 0xffff + x3 = shiftR x 16 .&. 0xffff + x4 = x .&. 0xffff + +-- -------------------------------------------------------------------------- -- + +-- | Internal type for implenting StableHashMap +-- +newtype StableHash k = StableHash k + deriving (Show, Read) + deriving newtype (Eq, Ord, NFData, FromJSONKey, Q.Arbitrary) + deriving (Functor) + +instance (Eq k, StableHashable k) => H.Hashable (StableHash k) where + hashWithSalt s (StableHash k) = fromIntegral $ stableHashWithSalt (fromIntegral s) k + {-# INLINEABLE hashWithSalt #-} + +-- -------------------------------------------------------------------------- -- +-- StableHashMap + +newtype StableHashMap k v = StableHashMap (HM.HashMap (StableHash k) v) + deriving (Show, Read) + deriving newtype (Eq, Ord, Semigroup, Monoid, Foldable, Functor, NFData) + +type role StableHashMap nominal representational + +unstable :: H.Hashable k => StableHashMap k v -> HM.HashMap k v +unstable (StableHashMap m) = HM.mapKeys (\(StableHash k) -> k) m + +instance Bifoldable StableHashMap where + bifoldMap f g (StableHashMap m) = bifoldMap (\(StableHash k) -> f k) g m + +instance Traversable (StableHashMap k) where + traverse f (StableHashMap m) = StableHashMap <$> traverse f m + +instance (Eq k, StableHashable k, FromJSONKey k, FromJSON v) => FromJSON (StableHashMap k v) where + parseJSON = fmap StableHashMap . parseJSON + +instance (Eq k, StableHashable k, Q.Arbitrary k, Q.Arbitrary v) => Q.Arbitrary (StableHashMap k v) where + arbitrary = fromList <$> Q.arbitrary + +type instance Index (StableHashMap k v) = k +type instance IxValue (StableHashMap k v) = v + +instance (Eq k, StableHashable k) => At (StableHashMap k v) where + at k f (StableHashMap m) = StableHashMap <$> at (StableHash k) f m + +instance (Eq k, StableHashable k) => Ixed (StableHashMap k v) where + +instance FunctorWithIndex k (StableHashMap k) where + imap = mapWithKey + +instance FoldableWithIndex k (StableHashMap k) where + ifoldMap = foldMapWithKey + ifoldr = foldrWithKey + ifoldl' = foldlWithKey' . flip + +instance TraversableWithIndex k (StableHashMap k) where + itraverse = traverseWithKey + +empty :: StableHashMap k v +empty = StableHashMap HM.empty + +singleton :: Eq k => StableHashable k => k -> v -> StableHashMap k v +singleton k = StableHashMap . HM.singleton (StableHash k) + +null :: StableHashMap k v -> Bool +null (StableHashMap m) = HM.null m + +size :: StableHashMap k v -> Int +size (StableHashMap m) = HM.size m + +member :: StableHashable k => Eq k => k -> StableHashMap k v -> Bool +member k (StableHashMap m) = HM.member (StableHash k) m + +lookup :: Eq k => StableHashable k => k -> StableHashMap k v -> Maybe v +lookup k (StableHashMap m) = HM.lookup (StableHash k) m + +(!?) :: Eq k => StableHashable k => StableHashMap k v -> k -> Maybe v +(!?) = flip lookup + +(!) :: HasCallStack => Eq k => StableHashable k => StableHashMap k v -> k -> v +(!) (StableHashMap m) k = (HM.!) m (StableHash k) + +insert :: Eq k => StableHashable k => k -> v -> StableHashMap k v -> StableHashMap k v +insert k v (StableHashMap m) = StableHashMap $ HM.insert (StableHash k) v m + +insertWith :: Eq k => StableHashable k => (v -> v -> v) -> k -> v -> StableHashMap k v -> StableHashMap k v +insertWith f k v (StableHashMap m) = StableHashMap $ HM.insertWith f (StableHash k) v m + +delete :: Eq k => StableHashable k => k -> StableHashMap k v -> StableHashMap k v +delete k (StableHashMap m) = StableHashMap $ HM.delete (StableHash k) m + +union :: Eq k => StableHashMap k v -> StableHashMap k v -> StableHashMap k v +union (StableHashMap m0) (StableHashMap m1) = StableHashMap $ HM.union m0 m1 + +unionWith :: Eq k => (v -> v -> v) -> StableHashMap k v -> StableHashMap k v -> StableHashMap k v +unionWith f (StableHashMap m0) (StableHashMap m1) = StableHashMap $ HM.unionWith f m0 m1 + +unions :: Eq k => [StableHashMap k v] -> StableHashMap k v +unions l = StableHashMap $ HM.unions ((\(StableHashMap m) -> m) <$> l) + +difference :: Eq k => StableHashable k => StableHashMap k v -> StableHashMap k w -> StableHashMap k v +difference (StableHashMap m0) (StableHashMap m1) = StableHashMap $ HM.difference m0 m1 + +map :: (v1 -> v2) -> StableHashMap k v1 -> StableHashMap k v2 +map f (StableHashMap m) = StableHashMap $ HM.map f m + +mapWithKey :: (k -> v1 -> v2) -> StableHashMap k v1 -> StableHashMap k v2 +mapWithKey f (StableHashMap m) = StableHashMap $ HM.mapWithKey f' m + where + f' (StableHash k) v = f k v + +traverseWithKey :: Applicative f => (k -> v1 -> f v2) -> StableHashMap k v1 -> f (StableHashMap k v2) +traverseWithKey f (StableHashMap m) = StableHashMap <$> HM.traverseWithKey f' m + where + f' (StableHash k) v = f k v + +mapKeys :: Eq k2 => StableHashable k2 => (k1 -> k2) -> StableHashMap k1 v -> StableHashMap k2 v +mapKeys f (StableHashMap m) = StableHashMap $ HM.mapKeys (fmap f) m + +intersection :: Eq k => StableHashMap k v -> StableHashMap k w -> StableHashMap k v +intersection (StableHashMap m0) (StableHashMap m1) = StableHashMap $ HM.intersection m0 m1 + +filter :: (v -> Bool) -> StableHashMap k v -> StableHashMap k v +filter f (StableHashMap m) = StableHashMap $ HM.filter f m + +filterWithKey :: (k -> v -> Bool) -> StableHashMap k v -> StableHashMap k v +filterWithKey f (StableHashMap m) = StableHashMap $ HM.filterWithKey f' m + where + f' (StableHash k) v = f k v + +foldMapWithKey :: Monoid m => (k -> v -> m) -> StableHashMap k v -> m +foldMapWithKey f (StableHashMap m) = HM.foldMapWithKey f' m + where + f' (StableHash k) = f k + +foldlWithKey' :: (a -> k -> v -> a) -> a -> StableHashMap k v -> a +foldlWithKey' f a (StableHashMap m) = HM.foldlWithKey' f' a m + where + f' b (StableHash k) = f b k + +foldrWithKey' :: (k -> v -> a -> a) -> a -> StableHashMap k v -> a +foldrWithKey' f a (StableHashMap m) = HM.foldrWithKey' f' a m + where + f' (StableHash k) = f k + +foldlWithKey :: (a -> k -> v -> a) -> a -> StableHashMap k v -> a +foldlWithKey f a (StableHashMap m) = HM.foldlWithKey' f' a m + where + f' b (StableHash k) = f b k + +foldrWithKey :: (k -> v -> a -> a) -> a -> StableHashMap k v -> a +foldrWithKey f a (StableHashMap m) = HM.foldrWithKey f' a m + where + f' (StableHash k) = f k + +keys :: StableHashMap k v -> [k] +keys (StableHashMap m) = (\(StableHash k) -> k) <$> HM.keys m + +elems :: StableHashMap k v -> [v] +elems (StableHashMap m) = HM.elems m + +toList :: StableHashMap k v -> [(k, v)] +toList (StableHashMap m) = first (\(StableHash k) -> k) <$!> HM.toList m + +fromList :: Eq k => StableHashable k => [(k, v)] -> StableHashMap k v +fromList l = StableHashMap $! HM.fromList $ first StableHash <$!> l + diff --git a/tests/PactTests.hs b/tests/PactTests.hs index 56b26e8e1..3e827741a 100644 --- a/tests/PactTests.hs +++ b/tests/PactTests.hs @@ -7,6 +7,7 @@ import qualified KeysetSpec import qualified RoundTripSpec import qualified PrincipalSpec import qualified Test.Pact.Utils.LegacyValue +import qualified Test.Pact.Utils.StableHashMap import qualified SizeOfSpec import qualified Test.Pact.Native.Pairing @@ -45,6 +46,7 @@ main = hspec $ parallel $ do describe "RoundTripSpec" RoundTripSpec.spec describe "PrincipalSpec" PrincipalSpec.spec describe "Test.Pact.Utils.LegacyValue" Test.Pact.Utils.LegacyValue.spec + describe "Test.Pact.Utils.StableHashMap" Test.Pact.Utils.StableHashMap.spec describe "SizeOfSpec" SizeOfSpec.spec describe "Test.Pact.Native.Pairing" Test.Pact.Native.Pairing.spec describe "PactTestsSpec" PactTestsSpec.spec diff --git a/tests/PactTestsSpec.hs b/tests/PactTestsSpec.hs index 7c47444b0..b263c44bb 100644 --- a/tests/PactTestsSpec.hs +++ b/tests/PactTestsSpec.hs @@ -11,7 +11,6 @@ import Control.Lens import Data.Text(Text) import Data.Either (isLeft, isRight) import Data.List -import qualified Data.HashMap.Strict as HM import qualified Data.Map.Strict as M import Data.Maybe import Data.Text (unpack) @@ -26,6 +25,7 @@ import Pact.Types.Runtime import Pact.Persist.SQLite as SQLite import Pact.Interpreter import Pact.Parse (parsePact, legacyParsePact) +import qualified Pact.Utils.StableHashMap as SHM import System.Directory import System.FilePath @@ -150,7 +150,7 @@ badErrors = M.fromList -- ghci utility to load a string and get the refmap _evalRefMap - :: String -> IO (HM.HashMap ModuleName (ModuleData Ref, Bool)) + :: String -> IO (SHM.StableHashMap ModuleName (ModuleData Ref, Bool)) _evalRefMap cmd = fmap (_rsLoadedModules . _evalRefs . _rEvalState . snd) (initReplState Quiet Nothing >>= runStateT (evalRepl' cmd)) @@ -204,8 +204,8 @@ versionedNativesTest flag natives = do let rs = versionedNativesRefStore (mkExecutionConfig [flag]) rs' = versionedNativesRefStore (mkExecutionConfig []) nativesDisabled = S.fromList natives - rs `shouldSatisfy` views rsNatives (S.disjoint nativesDisabled . S.fromList . HM.keys) - rs' `shouldSatisfy` views rsNatives (S.isSubsetOf nativesDisabled . S.fromList . HM.keys) + rs `shouldSatisfy` views rsNatives (S.disjoint nativesDisabled . S.fromList . SHM.keys) + rs' `shouldSatisfy` views rsNatives (S.isSubsetOf nativesDisabled . S.fromList . SHM.keys) versionedNativesTests :: SpecWith () versionedNativesTests = describe "versionedNativesTests" $ do diff --git a/tests/SignatureSpec.hs b/tests/SignatureSpec.hs index 67122dafa..f68edeaf5 100644 --- a/tests/SignatureSpec.hs +++ b/tests/SignatureSpec.hs @@ -17,6 +17,7 @@ import Pact.Repl import Pact.Repl.Types import Pact.Types.Exp import Pact.Types.Runtime +import qualified Pact.Utils.StableHashMap as SHM spec :: Spec spec = compareModelSpec @@ -49,7 +50,7 @@ compareModelSpec = describe "Module models" $ do aggregateFunctionModels :: ModuleData Ref -> [Exp Info] aggregateFunctionModels ModuleData{..} = - foldMap (extractExp . snd) $ HM.toList _mdRefMap + foldMap (extractExp . snd) $ SHM.toList _mdRefMap where extractExp (Ref (TDef (Def _ _ _ _ _ Meta{_mModel=m} _ _) _)) = m extractExp _ = [] diff --git a/tests/Test/Pact/Utils/StableHashMap.hs b/tests/Test/Pact/Utils/StableHashMap.hs new file mode 100644 index 000000000..22a4a23c0 --- /dev/null +++ b/tests/Test/Pact/Utils/StableHashMap.hs @@ -0,0 +1,2596 @@ +{-# LANGUAGE ImportQualifiedPost #-} +{-# LANGUAGE RankNTypes #-} +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE TypeApplications #-} +{-# LANGUAGE OverloadedStrings #-} + +-- | +-- Module: Test.Pact.Utils.StableHashMap +-- Copyright: Copyright © 2024 Kadena LLC. +-- License: MIT +-- Maintainer: Lars Kuhtz +-- Stability: experimental +-- +module Test.Pact.Utils.StableHashMap +( spec +, stableHashableTests +-- * test tools +, checkVectors +, checkVector +-- * test data +, unitVectors +, boolVectors +, word8Vectors +, int64Vectors +, stringVectors +, textVectors +, byteStringVectors +, lazyByteStringVectors +, shortByteStringVectors +) where + +import Data.Bifunctor +import Data.ByteString qualified as B +import Data.ByteString.Lazy qualified as BL +import Data.ByteString.Short qualified as BS +import Data.HashMap.Lazy qualified as HM +import Data.Int +import Data.Proxy +import Data.Text qualified as T +import Data.Typeable +import Data.Word +import Data.Hashable qualified as H + +import Test.Hspec + +import Pact.Utils.StableHashMap + +import Prelude hiding (lookup, map, filter) +import Control.Exception + +-- -------------------------------------------------------------------------- -- +-- Tests + +spec :: Spec +spec = do + stableHashableTests + stableHashMapSpec + +stableHashableTests :: Spec +stableHashableTests = describe "StableHashable" $ do + checkVectors unitVectors + checkVectors boolVectors + checkVectors word8Vectors + checkVectors int64Vectors + checkVectors textVectors + checkVectors byteStringVectors + checkVectors lazyByteStringVectors + checkVectors shortByteStringVectors + + checkVectorsDifferentSalt unitVectors + checkVectorsDifferentSalt boolVectors + checkVectorsDifferentSalt word8Vectors + checkVectorsDifferentSalt int64Vectors + checkVectorsDifferentSalt textVectors + checkVectorsDifferentSalt byteStringVectors + checkVectorsDifferentSalt lazyByteStringVectors + checkVectorsDifferentSalt shortByteStringVectors + + checkVectorsDoNotMatchHashable (drop 1 int64Vectors) + checkVectorsDoNotMatchHashable textVectors + checkVectorsDoNotMatchHashable byteStringVectors + checkVectorsDoNotMatchHashable lazyByteStringVectors + checkVectorsDoNotMatchHashable shortByteStringVectors + +-- -------------------------------------------------------------------------- -- +-- Tests tools + +checkVectors + :: forall a + . StableHashable a + => Show a + => Typeable a + => [(Int64, a, Int64)] + -> Spec +checkVectors ls = do + describe (show $ typeRep (Proxy @a)) $ + mapM_ checkVector ls + +checkVector + :: StableHashable a + => Show a + => (Int64, a, Int64) + -> Spec +checkVector v@(s, a, r) = describe (show v) $ do + it "stableHashWithSalt returns the respected result" $ + stableHashWithSalt s a `shouldBe` r + +-- double check that tests can fail + +checkVectorsDifferentSalt + :: forall a + . StableHashable a + => Show a + => Typeable a + => [(Int64, a, Int64)] + -> Spec +checkVectorsDifferentSalt ls = do + describe (show $ typeRep (Proxy @a)) $ + mapM_ checkVectorDifferentSalt ls + +checkVectorDifferentSalt + :: StableHashable a + => Show a + => (Int64, a, Int64) + -> Spec +checkVectorDifferentSalt v@(s, a, r) = describe (show v) $ do + it "stableHashWithSalt returns a different result when the salt is changed" $ + stableHashWithSalt (s + 1) a `shouldNotBe` r + +-- double check that tests aren't trivially true + +checkVectorsDoNotMatchHashable + :: forall a + . StableHashable a + => H.Hashable a + => Show a + => Typeable a + => [(Int64, a, Int64)] + -> Spec +checkVectorsDoNotMatchHashable ls = do + describe (show $ typeRep (Proxy @a)) $ + mapM_ checkVectorDoesNotMatchHashable ls + +checkVectorDoesNotMatchHashable + :: StableHashable a + => H.Hashable a + => Show a + => (Int64, a, Int64) + -> Spec +checkVectorDoesNotMatchHashable v@(s, a, _) = describe (show v) $ do + it "stableHashWithSalt and hashWithSalt return different results" $ + shouldNotBe + (stableHashWithSalt s a) + (fromIntegral (H.hashWithSalt (fromIntegral s) a)) + +-- -------------------------------------------------------------------------- -- +-- StableHashMap Tests + +-- | A list that provides some basic coverage for most functions. +-- +-- It does not test runtime behavior, like strictness, exception behavior, or +-- performance. +-- +-- It also does not cover many corner cases or instances of non-trivial size. +-- Many of the following tests cold be improved by using quickcheck to generate +-- more instances. +-- +stableHashMapSpec :: Spec +stableHashMapSpec = describe "StableHashMap" $ do + basicStableHashMapTests + stableHashHashMapSpec + stableHashMapKeysOrder + +-- | Check that hash function is different from hashable for bytestring and Int. +-- +stableHashHashMapSpec :: Spec +stableHashHashMapSpec = describe "StableHash" $ do + it "StableHashMap Int uses different hash function than HashMap Int" $ + toList @Int @Int (fromList a) `shouldNotBe` HM.toList (HM.fromList a) + it "StableHashMap Text uses different hash function than HashMap Text" $ + toList @T.Text @Int (fromList b) `shouldNotBe` HM.toList (HM.fromList b) + where + a = [(i,j) | i <- [0..10], j <- [0,10 .. 100]] + b = first (T.pack . show) <$> a + +stableHashMapKeysOrder :: Spec +stableHashMapKeysOrder = describe "stable ey order" $ do + it "the order of Int keys is stable" $ do + keys (fromList @Int [(k,()) | k <- [0..20]]) `shouldBe` intKeys + it "the order of Text keys is stable" $ do + keys (fromList [(k,()) | k <- [0..20]]) `shouldBe` intKeys + keys (fromList [((T.pack (show @Int k)),()) | k <- [0..20]]) `shouldBe` textKeys + where + intKeys = [20,17,16,19,18,5,4,7,6,1,0,3,2,13,12,15,14,9,8,11,10] + textKeys = ["8","9","4","5","6","7","0","1","2","3","18","19","20","14","15","16","17","10","11","12","13"] + +basicStableHashMapTests :: Spec +basicStableHashMapTests = describe "basics" $ do + it "equality is extensional" $ + singleton @Int @Int 1 1 `shouldBe` insert 1 1 (empty) + + it "empty has size 0" $ + size empty `shouldBe` 0 + it "lookup on empty is Nothing" $ + lookup @Int @Int 0 empty `shouldBe` Nothing + it "safe index on empty returns Nothing" $ + (!?) @Int @Int empty 0 `shouldBe` Nothing + it "index on empty is an error" $ + evaluate ((!) @Int @Int empty 0) `shouldThrow` anyErrorCall + it "empty has no member" $ + member @Int @Int 0 empty `shouldBe` False + + it "singleton has size 1" $ + size (singleton @Int @Int 0 0) `shouldBe` 1 + it "singleton has a member" $ + member @Int @Int 0 (singleton 0 1) `shouldBe` True + it "singleton has not any member" $ + member @Int @Int 1 (singleton 0 1) `shouldBe` False + it "lookup on singelton returns Just the value" $ + lookup @Int @Int 0 (singleton 0 0) `shouldBe` Just 0 + it "safe index on singelton returns Just the value" $ + (!?) @Int @Int (singleton 0 0) 0 `shouldBe` Just 0 + it "index on singelton returns result" $ + (!) @Int @Int (singleton 0 0) 0 `shouldBe` 0 + it "looking up non existing key is Nothing" $ do + lookup @Int @Int 1 (singleton 0 0) `shouldBe` Nothing + (!?) @Int @Int (singleton 0 0) 1 `shouldBe` Nothing + it "indexing non existing key is an error" $ + evaluate ((!) @Int @Int (singleton 0 0) 1) `shouldThrow` anyErrorCall + + it "inserting in empty map" $ do + let m = insert 0 0 $ empty @Int @Int + size m `shouldBe` 1 + member 0 m `shouldBe` True + member 1 m `shouldBe` False + lookup 0 m `shouldBe` (Just 0) + (!?) m 0 `shouldBe` (Just 0) + (!) m 0 `shouldBe` 0 + lookup 1 m `shouldBe` Nothing + (!?) m 1 `shouldBe` Nothing + evaluate ((!) m 1) `shouldThrow` anyErrorCall + m `shouldBe` singleton 0 0 + it "insert is idempotent" $ do + let m = insert 0 0 $ empty @Int @Int + m `shouldBe` insert 0 0 m + it "insert at existing key does not change size" $ do + let m = insert 0 0 $ empty @Int @Int + size m `shouldBe` 1 + size (insert 0 1 m) `shouldBe` 1 + it "insert at existing key changes old value" $ do + let m = insert 0 0 $ empty @Int @Int + size m `shouldBe` 1 + lookup 0 m `shouldBe` Just 0 + let m1 = insert 0 1 m + size m1 `shouldBe` 1 + lookup 0 m1 `shouldBe` Just 1 + it "insertWith" $ do + let m = insert 0 1 $ empty @Int @Int + size m `shouldBe` 1 + lookup 0 m `shouldBe` Just 1 + let m1 = insertWith (+) 0 1 m + size m1 `shouldBe` 1 + lookup 0 m1 `shouldBe` Just 2 + it "delete on empty is identity" $ do + delete @Int @Int 0 empty `shouldBe` empty + it "delete on singleton is empty" $ do + delete @Int @Int 0 (singleton 0 0) `shouldBe` empty + it "delete of non-existent key is identity" $ do + delete @Int @Int 1 (singleton 0 0) `shouldBe` singleton 0 0 + + it "union with empty is identity" $ do + union @Int @Int empty empty `shouldBe` empty + union @Int @Int (singleton 0 0) empty `shouldBe` (singleton 0 0) + union @Int @Int empty (singleton 0 0) `shouldBe` (singleton 0 0) + it "union on disjoint keys is additive" $ do + size (union @Int @Int (singleton 0 0) (singleton 1 0)) `shouldBe` 2 + it "union on same key is left biased" $ + union @Int @Int (singleton 0 0) (singleton 0 1) `shouldBe` singleton 0 0 + + it "unionWith" $ + unionWith @Int @Int (+) (singleton 0 1) (singleton 0 1) `shouldBe` singleton 0 2 + + it "disjoint unions" $ + size (unions @Int @Int [singleton 0 0, singleton 1 0, singleton 2 0]) `shouldBe` 3 + it "overlapping unions" $ + size (unions @Int @Int [singleton 0 0, singleton 1 0, singleton 0 0]) `shouldBe` 2 + + -- note this is *not* symmetric difference + it "difference with empty is identity" $ + difference @Int @Int (singleton 0 0) empty `shouldBe` singleton 0 0 + it "difference of empty is empty" $ + difference @Int @Int empty (singleton @Int @Int 0 0) `shouldBe` empty + it "difference with itself is empty" $ do + let m = singleton @Int @Int 0 0 + difference m m `shouldBe` empty + it "difference on disjoint keys is identity" $ do + let m0 = singleton @Int @Int 0 0 + let m1 = singleton @Int @Int 1 0 + difference m0 m1 `shouldBe` m0 + it "difference on same keys is empty" $ do + let m0 = singleton @Int @Int 1 0 + let m1 = singleton @Int @Int 1 1 + difference m0 m1 `shouldBe` empty + + it "map on empty is empty" $ do + map (+ 1) (empty @Int @Int) `shouldBe` empty + (+ 1) <$> (empty @Int @Int) `shouldBe` empty + it "map" $ do + map (+ 1) (singleton @Int @Int 0 0) `shouldBe` singleton 0 1 + (+ 1) <$> (singleton @Int @Int 0 0) `shouldBe` singleton 0 1 + (== 1) <$> (singleton @Int @Int 0 0) `shouldBe` singleton 0 False + (== 0) <$> (singleton @Int @Int 0 0) `shouldBe` singleton 0 True + + it "mapWithKey on empty is empty" $ + mapWithKey (+) (empty @Int @Int) `shouldBe` empty + it "mapWithKey" $ + mapWithKey (+) (singleton @Int @Int 1 1) `shouldBe` singleton 1 2 + + it "traverse on empty is empty" $ + traverse (pure . (+ 1)) (empty @Int @Int) `shouldBe` [empty] + it "traverseWithKey" $ + traverseWithKey (\k v -> pure (k + v)) (singleton @Int @Int 1 1) `shouldBe` [singleton 1 2] + + it "mapKeys on empty is empty" $ + mapKeys (== 1) (empty @Int @Int) `shouldBe` empty + it "mapKeys" $ do + mapKeys (+ 1) (singleton @Int @Int 0 1) `shouldBe` singleton 1 1 + mapKeys (== 1) (singleton @Int @Int 0 1) `shouldBe` singleton False 1 + mapKeys (== 0) (singleton @Int @Int 0 1) `shouldBe` singleton True 1 + + it "intersection with empty is empty" $ do + intersection @Int @Int empty empty `shouldBe` empty + intersection @Int @Int (singleton 0 0) empty `shouldBe` empty + it "intersection of disjoint keys is empty" $ do + intersection @Int @Int (singleton 0 0) (singleton 1 ()) `shouldBe` empty + it "intersection on same keys is left biased" $ do + intersection @Int @Int (singleton 0 0) (singleton 0 ()) `shouldBe` singleton 0 0 + intersection @Int @Int (singleton 0 0) (singleton @Int @Int 0 1) `shouldBe` singleton 0 0 + + it "filter on empty is empty" $ + filter @Int @Int (== 0) empty `shouldBe` empty + it "filter" $ do + filter @Int @Int (== 0) (singleton 1 0) `shouldBe` singleton 1 0 + filter @Int @Int (== 1) (singleton 1 0) `shouldBe` empty + + it "filterWithKey on empty is empty" $ + filterWithKey @Int @Int (==) empty `shouldBe` empty + it "filterWithKey" $ do + filterWithKey @Int @Int (==) (singleton 0 0) `shouldBe` singleton 0 0 + filterWithKey @Int @Int (==) (singleton 1 0) `shouldBe` empty + + it "foldMap on empty is mempty" $ do + foldMap pure (empty @Int @()) `shouldBe` [] + foldMap pure (empty @Int @()) `shouldBe` Nothing + it "foldMap" $ do + foldMap pure (singleton @Int @Int 0 1) `shouldBe` [1] + + it "foldMapWithKey on empty is mempty" $ do + foldMapWithKey replicate (empty @Int @()) `shouldBe` [] + it "foldMapWithKey" $ do + foldMapWithKey replicate (singleton @Int @Int 0 1) `shouldBe` [] + foldMapWithKey replicate (singleton @Int @Int 2 1) `shouldBe` [1,1] + + it "foldlWithKey'" $ do + foldlWithKey' (\a b c -> a + b + c) 1 (singleton @Int @Int 1 1) `shouldBe` 3 + foldlWithKey' (\a b c -> a + T.length b + c) 1 (singleton @T.Text @Int "12" 1) `shouldBe` 4 + foldlWithKey' (\a b c -> a + T.length b + c) 1 (singleton @T.Text @Int "" 1) `shouldBe` 2 + it "foldlWithKey" $ do + foldlWithKey (\a b c -> a + b + c) 1 (singleton @Int @Int 1 1) `shouldBe` 3 + foldlWithKey (\a b c -> a + T.length b + c) 1 (singleton @T.Text @Int "12" 1) `shouldBe` 4 + foldlWithKey (\a b c -> a + T.length b + c) 1 (singleton @T.Text @Int "" 1) `shouldBe` 2 + it "foldrWithKey'" $ do + foldrWithKey' (\a b c -> a + b + c) 1 (singleton @Int @Int 1 1) `shouldBe` 3 + foldrWithKey' (\a b c -> T.length a + b + c) 1 (singleton @T.Text @Int "12" 1) `shouldBe` 4 + foldrWithKey' (\a b c -> T.length a + b + c) 1 (singleton @T.Text @Int "" 1) `shouldBe` 2 + it "foldrWithKey" $ do + foldrWithKey (\a b c -> a + b + c) 1 (singleton @Int @Int 1 1) `shouldBe` 3 + foldrWithKey (\a b c -> T.length a + b + c) 1 (singleton @T.Text @Int "12" 1) `shouldBe` 4 + foldrWithKey (\a b c -> T.length a + b + c) 1 (singleton @T.Text @Int "" 1) `shouldBe` 2 + + it "keys of empty is []" $ + keys @Int @Int empty `shouldBe` [] + it "keys of singleton is of size one" $ + keys @Int @Int (singleton 0 1) `shouldBe` [0] + + it "elems of empty is []" $ + elems @Int @Int empty `shouldBe` [] + it "elems of singleton is of size one" $ + elems @Int @Int (singleton 1 0) `shouldBe` [0] + + it "toList of empty is []" $ + toList @Int @Int empty `shouldBe` [] + it "toList of singleton is of size one" $ + toList @Int @Int (singleton 1 0) `shouldBe` [(1,0)] + + it "fromList of [] is empty" $ + fromList @Int @Int [] `shouldBe` empty + it "fromList" $ do + fromList @Int @() [(1, ())] `shouldBe` singleton 1 () + size (fromList @Int @() [(1, ()), (0,())]) `shouldBe` 2 + size (fromList @Int @() [(0, ()), (0,())]) `shouldBe` 1 + +-- -------------------------------------------------------------------------- -- +-- Test Vectors + +-- | Test vectors that were generated with hashable-1.4.4.0. +-- +-- format: @(s, a, hashWithSalt s a)@ +-- +unitVectors :: [(Int64, (), Int64)] +unitVectors = + [ (0,(),0) + , (1,(),-6919028725695267695) + , (-1,(),6919028725695267695) + , (9223372036854775807,(),-2304343311159508113) + , (9223372036854775806,(),4614685414535759582) + , (-9223372036854775808,(),-9223372036854775808) + , (-9223372036854775807,(),2304343311159508113) + , (2567445505541745260,(),-8973281124039502036) + , (4083231397459745842,(),6998037268804005970) + , (-6865757387616483504,(),5749763000999208016) + , (-861683380996470009,(),3379180533572133623) + , (-8470469552102498776,(),-7931260693702413144) + , (923704023541552544,(),7964894395160379296) + , (-2001408171881714643,(),2872025573219635581) + , (-4167309968479344909,(),-434861780140325981) + , (-7743274236101392186,(),8934024225322328102) + , (-1158760675613715514,(),5956088333391944486) + , (1857094031690398882,(),9015668768058019778) + , (5223155310865179679,(),-3269838748917270129) + , (5001190823599135195,(),8778826164785395979) + ] + +-- | Test vectors that were generated with hashable-1.4.4.0. +-- +-- format: @(s, a, hashWithSalt s a)@ +-- +boolVectors :: [(Int64, Bool, Int64)] +boolVectors = + [ (0,False,0) + , (0,True,1) + , (1,False,-6919028725695267695) + , (1,True,-6919028725695267696) + , (-1,False,6919028725695267695) + , (-1,True,6919028725695267694) + , (9223372036854775807,False,-2304343311159508113) + , (9223372036854775807,True,-2304343311159508114) + , (9223372036854775806,False,4614685414535759582) + , (9223372036854775806,True,4614685414535759583) + , (-9223372036854775808,False,-9223372036854775808) + , (-9223372036854775808,True,-9223372036854775807) + , (-9223372036854775807,False,2304343311159508113) + , (-9223372036854775807,True,2304343311159508112) + , (2567445505541745260,False,-8973281124039502036) + , (2567445505541745260,True,-8973281124039502035) + , (4083231397459745842,False,6998037268804005970) + , (4083231397459745842,True,6998037268804005971) + , (-6865757387616483504,False,5749763000999208016) + , (-6865757387616483504,True,5749763000999208017) + , (-861683380996470009,False,3379180533572133623) + , (-861683380996470009,True,3379180533572133622) + , (-8470469552102498776,False,-7931260693702413144) + , (-8470469552102498776,True,-7931260693702413143) + , (923704023541552544,False,7964894395160379296) + , (923704023541552544,True,7964894395160379297) + , (-2001408171881714643,False,2872025573219635581) + , (-2001408171881714643,True,2872025573219635580) + , (-4167309968479344909,False,-434861780140325981) + , (-4167309968479344909,True,-434861780140325982) + , (-7743274236101392186,False,8934024225322328102) + , (-7743274236101392186,True,8934024225322328103) + , (-1158760675613715514,False,5956088333391944486) + , (-1158760675613715514,True,5956088333391944487) + , (1857094031690398882,False,9015668768058019778) + , (1857094031690398882,True,9015668768058019779) + , (5223155310865179679,False,-3269838748917270129) + , (5223155310865179679,True,-3269838748917270130) + , (5001190823599135195,False,8778826164785395979) + , (5001190823599135195,True,8778826164785395978) + ] + +-- | Test vectors that were generated with hashable-1.4.4.0. +-- +-- format: @(s, a, hashWithSalt s a)@ +-- +word8Vectors :: [(Int64, Word8, Int64)] +word8Vectors = + [ (0,0,0) + , (0,1,1) + , (0,255,255) + , (0,255,255) + , (0,254,254) + , (0,0,0) + , (0,1,1) + , (0,108,108) + , (0,50,50) + , (0,80,80) + , (0,7,7) + , (0,40,40) + , (0,160,160) + , (0,45,45) + , (0,243,243) + , (0,198,198) + , (0,198,198) + , (0,162,162) + , (0,31,31) + , (0,219,219) + , (1,0,-6919028725695267695) + , (1,1,-6919028725695267696) + , (1,255,-6919028725695267730) + , (1,255,-6919028725695267730) + , (1,254,-6919028725695267729) + , (1,0,-6919028725695267695) + , (1,1,-6919028725695267696) + , (1,108,-6919028725695267587) + , (1,50,-6919028725695267677) + , (1,80,-6919028725695267647) + , (1,7,-6919028725695267690) + , (1,40,-6919028725695267655) + , (1,160,-6919028725695267791) + , (1,45,-6919028725695267652) + , (1,243,-6919028725695267742) + , (1,198,-6919028725695267753) + , (1,198,-6919028725695267753) + , (1,162,-6919028725695267789) + , (1,31,-6919028725695267698) + , (1,219,-6919028725695267766) + , (-1,0,6919028725695267695) + , (-1,1,6919028725695267694) + , (-1,255,6919028725695267728) + , (-1,255,6919028725695267728) + , (-1,254,6919028725695267729) + , (-1,0,6919028725695267695) + , (-1,1,6919028725695267694) + , (-1,108,6919028725695267587) + , (-1,50,6919028725695267677) + , (-1,80,6919028725695267647) + , (-1,7,6919028725695267688) + , (-1,40,6919028725695267655) + , (-1,160,6919028725695267791) + , (-1,45,6919028725695267650) + , (-1,243,6919028725695267740) + , (-1,198,6919028725695267753) + , (-1,198,6919028725695267753) + , (-1,162,6919028725695267789) + , (-1,31,6919028725695267696) + , (-1,219,6919028725695267764) + , (9223372036854775807,0,-2304343311159508113) + , (9223372036854775807,1,-2304343311159508114) + , (9223372036854775807,255,-2304343311159508080) + , (9223372036854775807,255,-2304343311159508080) + , (9223372036854775807,254,-2304343311159508079) + , (9223372036854775807,0,-2304343311159508113) + , (9223372036854775807,1,-2304343311159508114) + , (9223372036854775807,108,-2304343311159508221) + , (9223372036854775807,50,-2304343311159508131) + , (9223372036854775807,80,-2304343311159508161) + , (9223372036854775807,7,-2304343311159508120) + , (9223372036854775807,40,-2304343311159508153) + , (9223372036854775807,160,-2304343311159508017) + , (9223372036854775807,45,-2304343311159508158) + , (9223372036854775807,243,-2304343311159508068) + , (9223372036854775807,198,-2304343311159508055) + , (9223372036854775807,198,-2304343311159508055) + , (9223372036854775807,162,-2304343311159508019) + , (9223372036854775807,31,-2304343311159508112) + , (9223372036854775807,219,-2304343311159508044) + , (9223372036854775806,0,4614685414535759582) + , (9223372036854775806,1,4614685414535759583) + , (9223372036854775806,255,4614685414535759393) + , (9223372036854775806,255,4614685414535759393) + , (9223372036854775806,254,4614685414535759392) + , (9223372036854775806,0,4614685414535759582) + , (9223372036854775806,1,4614685414535759583) + , (9223372036854775806,108,4614685414535759538) + , (9223372036854775806,50,4614685414535759596) + , (9223372036854775806,80,4614685414535759502) + , (9223372036854775806,7,4614685414535759577) + , (9223372036854775806,40,4614685414535759606) + , (9223372036854775806,160,4614685414535759486) + , (9223372036854775806,45,4614685414535759603) + , (9223372036854775806,243,4614685414535759405) + , (9223372036854775806,198,4614685414535759384) + , (9223372036854775806,198,4614685414535759384) + , (9223372036854775806,162,4614685414535759484) + , (9223372036854775806,31,4614685414535759553) + , (9223372036854775806,219,4614685414535759365) + , (-9223372036854775808,0,-9223372036854775808) + , (-9223372036854775808,1,-9223372036854775807) + , (-9223372036854775808,255,-9223372036854775553) + , (-9223372036854775808,255,-9223372036854775553) + , (-9223372036854775808,254,-9223372036854775554) + , (-9223372036854775808,0,-9223372036854775808) + , (-9223372036854775808,1,-9223372036854775807) + , (-9223372036854775808,108,-9223372036854775700) + , (-9223372036854775808,50,-9223372036854775758) + , (-9223372036854775808,80,-9223372036854775728) + , (-9223372036854775808,7,-9223372036854775801) + , (-9223372036854775808,40,-9223372036854775768) + , (-9223372036854775808,160,-9223372036854775648) + , (-9223372036854775808,45,-9223372036854775763) + , (-9223372036854775808,243,-9223372036854775565) + , (-9223372036854775808,198,-9223372036854775610) + , (-9223372036854775808,198,-9223372036854775610) + , (-9223372036854775808,162,-9223372036854775646) + , (-9223372036854775808,31,-9223372036854775777) + , (-9223372036854775808,219,-9223372036854775589) + , (-9223372036854775807,0,2304343311159508113) + , (-9223372036854775807,1,2304343311159508112) + , (-9223372036854775807,255,2304343311159508078) + , (-9223372036854775807,255,2304343311159508078) + , (-9223372036854775807,254,2304343311159508079) + , (-9223372036854775807,0,2304343311159508113) + , (-9223372036854775807,1,2304343311159508112) + , (-9223372036854775807,108,2304343311159508221) + , (-9223372036854775807,50,2304343311159508131) + , (-9223372036854775807,80,2304343311159508161) + , (-9223372036854775807,7,2304343311159508118) + , (-9223372036854775807,40,2304343311159508153) + , (-9223372036854775807,160,2304343311159508017) + , (-9223372036854775807,45,2304343311159508156) + , (-9223372036854775807,243,2304343311159508066) + , (-9223372036854775807,198,2304343311159508055) + , (-9223372036854775807,198,2304343311159508055) + , (-9223372036854775807,162,2304343311159508019) + , (-9223372036854775807,31,2304343311159508110) + , (-9223372036854775807,219,2304343311159508042) + , (2567445505541745260,0,-8973281124039502036) + , (2567445505541745260,1,-8973281124039502035) + , (2567445505541745260,255,-8973281124039501869) + , (2567445505541745260,255,-8973281124039501869) + , (2567445505541745260,254,-8973281124039501870) + , (2567445505541745260,0,-8973281124039502036) + , (2567445505541745260,1,-8973281124039502035) + , (2567445505541745260,108,-8973281124039502016) + , (2567445505541745260,50,-8973281124039502050) + , (2567445505541745260,80,-8973281124039501956) + , (2567445505541745260,7,-8973281124039502037) + , (2567445505541745260,40,-8973281124039502076) + , (2567445505541745260,160,-8973281124039501940) + , (2567445505541745260,45,-8973281124039502079) + , (2567445505541745260,243,-8973281124039501857) + , (2567445505541745260,198,-8973281124039501846) + , (2567445505541745260,198,-8973281124039501846) + , (2567445505541745260,162,-8973281124039501938) + , (2567445505541745260,31,-8973281124039502029) + , (2567445505541745260,219,-8973281124039501833) + , (4083231397459745842,0,6998037268804005970) + , (4083231397459745842,1,6998037268804005971) + , (4083231397459745842,255,6998037268804006061) + , (4083231397459745842,255,6998037268804006061) + , (4083231397459745842,254,6998037268804006060) + , (4083231397459745842,0,6998037268804005970) + , (4083231397459745842,1,6998037268804005971) + , (4083231397459745842,108,6998037268804005950) + , (4083231397459745842,50,6998037268804005984) + , (4083231397459745842,80,6998037268804005890) + , (4083231397459745842,7,6998037268804005973) + , (4083231397459745842,40,6998037268804006010) + , (4083231397459745842,160,6998037268804006130) + , (4083231397459745842,45,6998037268804006015) + , (4083231397459745842,243,6998037268804006049) + , (4083231397459745842,198,6998037268804006036) + , (4083231397459745842,198,6998037268804006036) + , (4083231397459745842,162,6998037268804006128) + , (4083231397459745842,31,6998037268804005965) + , (4083231397459745842,219,6998037268804006025) + , (-6865757387616483504,0,5749763000999208016) + , (-6865757387616483504,1,5749763000999208017) + , (-6865757387616483504,255,5749763000999208111) + , (-6865757387616483504,255,5749763000999208111) + , (-6865757387616483504,254,5749763000999208110) + , (-6865757387616483504,0,5749763000999208016) + , (-6865757387616483504,1,5749763000999208017) + , (-6865757387616483504,108,5749763000999207996) + , (-6865757387616483504,50,5749763000999208034) + , (-6865757387616483504,80,5749763000999207936) + , (-6865757387616483504,7,5749763000999208023) + , (-6865757387616483504,40,5749763000999208056) + , (-6865757387616483504,160,5749763000999208176) + , (-6865757387616483504,45,5749763000999208061) + , (-6865757387616483504,243,5749763000999208099) + , (-6865757387616483504,198,5749763000999208086) + , (-6865757387616483504,198,5749763000999208086) + , (-6865757387616483504,162,5749763000999208178) + , (-6865757387616483504,31,5749763000999208015) + , (-6865757387616483504,219,5749763000999208075) + , (-861683380996470009,0,3379180533572133623) + , (-861683380996470009,1,3379180533572133622) + , (-861683380996470009,255,3379180533572133384) + , (-861683380996470009,255,3379180533572133384) + , (-861683380996470009,254,3379180533572133385) + , (-861683380996470009,0,3379180533572133623) + , (-861683380996470009,1,3379180533572133622) + , (-861683380996470009,108,3379180533572133531) + , (-861683380996470009,50,3379180533572133573) + , (-861683380996470009,80,3379180533572133543) + , (-861683380996470009,7,3379180533572133616) + , (-861683380996470009,40,3379180533572133599) + , (-861683380996470009,160,3379180533572133463) + , (-861683380996470009,45,3379180533572133594) + , (-861683380996470009,243,3379180533572133380) + , (-861683380996470009,198,3379180533572133425) + , (-861683380996470009,198,3379180533572133425) + , (-861683380996470009,162,3379180533572133461) + , (-861683380996470009,31,3379180533572133608) + , (-861683380996470009,219,3379180533572133420) + , (-8470469552102498776,0,-7931260693702413144) + , (-8470469552102498776,1,-7931260693702413143) + , (-8470469552102498776,255,-7931260693702413225) + , (-8470469552102498776,255,-7931260693702413225) + , (-8470469552102498776,254,-7931260693702413226) + , (-8470469552102498776,0,-7931260693702413144) + , (-8470469552102498776,1,-7931260693702413143) + , (-8470469552102498776,108,-7931260693702413116) + , (-8470469552102498776,50,-7931260693702413158) + , (-8470469552102498776,80,-7931260693702413064) + , (-8470469552102498776,7,-7931260693702413137) + , (-8470469552102498776,40,-7931260693702413184) + , (-8470469552102498776,160,-7931260693702413304) + , (-8470469552102498776,45,-7931260693702413179) + , (-8470469552102498776,243,-7931260693702413221) + , (-8470469552102498776,198,-7931260693702413202) + , (-8470469552102498776,198,-7931260693702413202) + , (-8470469552102498776,162,-7931260693702413302) + , (-8470469552102498776,31,-7931260693702413129) + , (-8470469552102498776,219,-7931260693702413197) + , (923704023541552544,0,7964894395160379296) + , (923704023541552544,1,7964894395160379297) + , (923704023541552544,255,7964894395160379231) + , (923704023541552544,255,7964894395160379231) + , (923704023541552544,254,7964894395160379230) + , (923704023541552544,0,7964894395160379296) + , (923704023541552544,1,7964894395160379297) + , (923704023541552544,108,7964894395160379340) + , (923704023541552544,50,7964894395160379282) + , (923704023541552544,80,7964894395160379376) + , (923704023541552544,7,7964894395160379303) + , (923704023541552544,40,7964894395160379272) + , (923704023541552544,160,7964894395160379136) + , (923704023541552544,45,7964894395160379277) + , (923704023541552544,243,7964894395160379219) + , (923704023541552544,198,7964894395160379238) + , (923704023541552544,198,7964894395160379238) + , (923704023541552544,162,7964894395160379138) + , (923704023541552544,31,7964894395160379327) + , (923704023541552544,219,7964894395160379259) + , (-2001408171881714643,0,2872025573219635581) + , (-2001408171881714643,1,2872025573219635580) + , (-2001408171881714643,255,2872025573219635586) + , (-2001408171881714643,255,2872025573219635586) + , (-2001408171881714643,254,2872025573219635587) + , (-2001408171881714643,0,2872025573219635581) + , (-2001408171881714643,1,2872025573219635580) + , (-2001408171881714643,108,2872025573219635473) + , (-2001408171881714643,50,2872025573219635535) + , (-2001408171881714643,80,2872025573219635501) + , (-2001408171881714643,7,2872025573219635578) + , (-2001408171881714643,40,2872025573219635541) + , (-2001408171881714643,160,2872025573219635677) + , (-2001408171881714643,45,2872025573219635536) + , (-2001408171881714643,243,2872025573219635598) + , (-2001408171881714643,198,2872025573219635643) + , (-2001408171881714643,198,2872025573219635643) + , (-2001408171881714643,162,2872025573219635679) + , (-2001408171881714643,31,2872025573219635554) + , (-2001408171881714643,219,2872025573219635622) + , (-4167309968479344909,0,-434861780140325981) + , (-4167309968479344909,1,-434861780140325982) + , (-4167309968479344909,255,-434861780140326052) + , (-4167309968479344909,255,-434861780140326052) + , (-4167309968479344909,254,-434861780140326051) + , (-4167309968479344909,0,-434861780140325981) + , (-4167309968479344909,1,-434861780140325982) + , (-4167309968479344909,108,-434861780140325937) + , (-4167309968479344909,50,-434861780140325999) + , (-4167309968479344909,80,-434861780140325901) + , (-4167309968479344909,7,-434861780140325980) + , (-4167309968479344909,40,-434861780140326005) + , (-4167309968479344909,160,-434861780140326141) + , (-4167309968479344909,45,-434861780140326002) + , (-4167309968479344909,243,-434861780140326064) + , (-4167309968479344909,198,-434861780140326043) + , (-4167309968479344909,198,-434861780140326043) + , (-4167309968479344909,162,-434861780140326143) + , (-4167309968479344909,31,-434861780140325956) + , (-4167309968479344909,219,-434861780140326024) + , (-7743274236101392186,0,8934024225322328102) + , (-7743274236101392186,1,8934024225322328103) + , (-7743274236101392186,255,8934024225322328281) + , (-7743274236101392186,255,8934024225322328281) + , (-7743274236101392186,254,8934024225322328280) + , (-7743274236101392186,0,8934024225322328102) + , (-7743274236101392186,1,8934024225322328103) + , (-7743274236101392186,108,8934024225322328138) + , (-7743274236101392186,50,8934024225322328084) + , (-7743274236101392186,80,8934024225322328182) + , (-7743274236101392186,7,8934024225322328097) + , (-7743274236101392186,40,8934024225322328078) + , (-7743274236101392186,160,8934024225322328198) + , (-7743274236101392186,45,8934024225322328075) + , (-7743274236101392186,243,8934024225322328277) + , (-7743274236101392186,198,8934024225322328288) + , (-7743274236101392186,198,8934024225322328288) + , (-7743274236101392186,162,8934024225322328196) + , (-7743274236101392186,31,8934024225322328121) + , (-7743274236101392186,219,8934024225322328317) + , (-1158760675613715514,0,5956088333391944486) + , (-1158760675613715514,1,5956088333391944487) + , (-1158760675613715514,255,5956088333391944665) + , (-1158760675613715514,255,5956088333391944665) + , (-1158760675613715514,254,5956088333391944664) + , (-1158760675613715514,0,5956088333391944486) + , (-1158760675613715514,1,5956088333391944487) + , (-1158760675613715514,108,5956088333391944522) + , (-1158760675613715514,50,5956088333391944468) + , (-1158760675613715514,80,5956088333391944566) + , (-1158760675613715514,7,5956088333391944481) + , (-1158760675613715514,40,5956088333391944462) + , (-1158760675613715514,160,5956088333391944582) + , (-1158760675613715514,45,5956088333391944459) + , (-1158760675613715514,243,5956088333391944661) + , (-1158760675613715514,198,5956088333391944672) + , (-1158760675613715514,198,5956088333391944672) + , (-1158760675613715514,162,5956088333391944580) + , (-1158760675613715514,31,5956088333391944505) + , (-1158760675613715514,219,5956088333391944701) + , (1857094031690398882,0,9015668768058019778) + , (1857094031690398882,1,9015668768058019779) + , (1857094031690398882,255,9015668768058019645) + , (1857094031690398882,255,9015668768058019645) + , (1857094031690398882,254,9015668768058019644) + , (1857094031690398882,0,9015668768058019778) + , (1857094031690398882,1,9015668768058019779) + , (1857094031690398882,108,9015668768058019758) + , (1857094031690398882,50,9015668768058019824) + , (1857094031690398882,80,9015668768058019730) + , (1857094031690398882,7,9015668768058019781) + , (1857094031690398882,40,9015668768058019818) + , (1857094031690398882,160,9015668768058019682) + , (1857094031690398882,45,9015668768058019823) + , (1857094031690398882,243,9015668768058019633) + , (1857094031690398882,198,9015668768058019588) + , (1857094031690398882,198,9015668768058019588) + , (1857094031690398882,162,9015668768058019680) + , (1857094031690398882,31,9015668768058019805) + , (1857094031690398882,219,9015668768058019609) + , (5223155310865179679,0,-3269838748917270129) + , (5223155310865179679,1,-3269838748917270130) + , (5223155310865179679,255,-3269838748917270160) + , (5223155310865179679,255,-3269838748917270160) + , (5223155310865179679,254,-3269838748917270159) + , (5223155310865179679,0,-3269838748917270129) + , (5223155310865179679,1,-3269838748917270130) + , (5223155310865179679,108,-3269838748917270045) + , (5223155310865179679,50,-3269838748917270083) + , (5223155310865179679,80,-3269838748917270049) + , (5223155310865179679,7,-3269838748917270136) + , (5223155310865179679,40,-3269838748917270105) + , (5223155310865179679,160,-3269838748917270225) + , (5223155310865179679,45,-3269838748917270110) + , (5223155310865179679,243,-3269838748917270148) + , (5223155310865179679,198,-3269838748917270199) + , (5223155310865179679,198,-3269838748917270199) + , (5223155310865179679,162,-3269838748917270227) + , (5223155310865179679,31,-3269838748917270128) + , (5223155310865179679,219,-3269838748917270188) + , (5001190823599135195,0,8778826164785395979) + , (5001190823599135195,1,8778826164785395978) + , (5001190823599135195,255,8778826164785396212) + , (5001190823599135195,255,8778826164785396212) + , (5001190823599135195,254,8778826164785396213) + , (5001190823599135195,0,8778826164785395979) + , (5001190823599135195,1,8778826164785395978) + , (5001190823599135195,108,8778826164785396071) + , (5001190823599135195,50,8778826164785396025) + , (5001190823599135195,80,8778826164785396059) + , (5001190823599135195,7,8778826164785395980) + , (5001190823599135195,40,8778826164785396003) + , (5001190823599135195,160,8778826164785396139) + , (5001190823599135195,45,8778826164785396006) + , (5001190823599135195,243,8778826164785396216) + , (5001190823599135195,198,8778826164785396173) + , (5001190823599135195,198,8778826164785396173) + , (5001190823599135195,162,8778826164785396137) + , (5001190823599135195,31,8778826164785395988) + , (5001190823599135195,219,8778826164785396176) + ] + +-- | Test vectors that were generated with hashable-1.4.4.0. +-- +-- format: @(s, a, hashWithSalt s a)@ +-- +int64Vectors :: [(Int64, Int64, Int64)] +int64Vectors = + [ (0,0,0) + , (0,1,1) + , (0,-1,1665446639824477492) + , (0,9223372036854775807,-4567537929254953676) + , (0,9223372036854775806,-4567537929254953675) + , (0,-9223372036854775808,-4791827306293919744) + , (0,-9223372036854775807,-4791827306293919743) + , (0,2567445505541745260,-1522838242123740591) + , (0,4083231397459745842,8887794591551357347) + , (0,-6865757387616483504,2191341066828356452) + , (0,-861683380996470009,-6991139495474898143) + , (0,-8470469552102498776,8177964804175276045) + , (0,923704023541552544,-6340148818514413984) + , (0,-2001408171881714643,7157225167188567230) + , (0,-4167309968479344909,2035310141180531652) + , (0,-7743274236101392186,1407054755062736597) + , (0,-1158760675613715514,693355991676981619) + , (0,1857094031690398882,654416665431322478) + , (0,5223155310865179679,5224436581418970767) + , (0,5001190823599135195,8570720979392031291) + , (1,0,-6919028725695267695) + , (1,1,-6919028725695267696) + , (1,-1,5700671892150737349) + , (1,9223372036854775807,3214682188241328581) + , (1,9223372036854775806,3214682188241328580) + , (1,-9223372036854775808,6735888041720364177) + , (1,-9223372036854775807,6735888041720364176) + , (1,2567445505541745260,-5148869303192872320) + , (1,4083231397459745842,4095245516841101150) + , (1,-6865757387616483504,3286912038671764293) + , (1,-861683380996470009,1093584935684866576) + , (1,-8470469552102498776,-372143256285744384) + , (1,923704023541552544,-6220543934648829795) + , (1,-2001408171881714643,1509649701905786551) + , (1,-4167309968479344909,4854057776729850553) + , (1,-7743274236101392186,6777650107018222940) + , (1,-1158760675613715514,-7601687422178608066) + , (1,1857094031690398882,7768982546549555675) + , (1,5223155310865179679,-617281869347948642) + , (1,5001190823599135195,-7241791157595186850) + , (-1,0,6919028725695267695) + , (-1,1,6919028725695267694) + , (-1,-1,-5396208326205677405) + , (-1,9223372036854775807,-2766103434163396445) + , (-1,9223372036854775806,-2766103434163396446) + , (-1,-9223372036854775808,-6735888041720364177) + , (-1,-9223372036854775807,-6735888041720364178) + , (-1,2567445505541745260,4879123916557231510) + , (-1,4083231397459745842,-4095247715864355556) + , (-1,-6865757387616483504,-2554887982989725125) + , (-1,-861683380996470009,-1098152306988080726) + , (-1,-8470469552102498776,372141057262489946) + , (-1,923704023541552544,5464902365714051843) + , (-1,-2001408171881714643,-3036427150405142671) + , (-1,-4167309968479344909,-4856375547241757977) + , (-1,-7743274236101392186,-6778076717529590358) + , (-1,-1158760675613715514,-6902531217180245492) + , (-1,1857094031690398882,-8436223376933880323) + , (-1,5223155310865179679,617281869347948640) + , (-1,5001190823599135195,6177353950609415816) + , (9223372036854775807,0,-2304343311159508113) + , (9223372036854775807,1,-2304343311159508114) + , (9223372036854775807,-1,3827163710649098403) + , (9223372036854775807,9223372036854775807,6457268602691379363) + , (9223372036854775807,9223372036854775806,6457268602691379362) + , (9223372036854775807,-9223372036854775808,2487483995134411631) + , (9223372036854775807,-9223372036854775807,2487483995134411630) + , (9223372036854775807,2567445505541745260,-4344248120297544298) + , (9223372036854775807,4083231397459745842,5128124320990420252) + , (9223372036854775807,-6865757387616483504,6668484053865050683) + , (9223372036854775807,-861683380996470009,8125219729866695082) + , (9223372036854775807,-8470469552102498776,-8851230979592285862) + , (9223372036854775807,923704023541552544,-3758469671140723965) + , (9223372036854775807,-2001408171881714643,6186944886449633137) + , (9223372036854775807,-4167309968479344909,4366996489613017831) + , (9223372036854775807,-7743274236101392186,2445295319325185450) + , (9223372036854775807,-1158760675613715514,2320840819674530316) + , (9223372036854775807,1857094031690398882,787148659920895485) + , (9223372036854775807,5223155310865179679,-8606090167506827168) + , (9223372036854775807,5001190823599135195,-3046018086245359992) + , (9223372036854775806,0,4614685414535759582) + , (9223372036854775806,1,4614685414535759583) + , (9223372036854775806,-1,-3955056406847183854) + , (9223372036854775806,9223372036854775807,-1324951514805033966) + , (9223372036854775806,9223372036854775806,-1324951514805033965) + , (9223372036854775806,-9223372036854775808,-9040231352879872290) + , (9223372036854775806,-9223372036854775807,-9040231352879872289) + , (9223372036854775806,2567445505541745260,9129387290173912607) + , (9223372036854775806,4083231397459745842,2199137449480582105) + , (9223372036854775806,-6865757387616483504,-8344186204172939022) + , (9223372036854775806,-861683380996470009,-506419384190738621) + , (9223372036854775806,-8470469552102498776,-2919702130616264025) + , (9223372036854775806,923704023541552544,-6150026254544392066) + , (9223372036854775806,-2001408171881714643,-5490642694967522720) + , (9223372036854775806,-4167309968479344909,3115563185869562730) + , (9223372036854775806,-7743274236101392186,-5873266666114168677) + , (9223372036854775806,-1158760675613715514,8287224163548362833) + , (9223372036854775806,1857094031690398882,1566821097211473272) + , (9223372036854775806,5223155310865179679,-2234750174572118183) + , (9223372036854775806,5001190823599135195,-4926213780879232747) + , (-9223372036854775808,0,-9223372036854775808) + , (-9223372036854775808,1,-9223372036854775807) + , (-9223372036854775808,-1,-7557925397030298316) + , (-9223372036854775808,9223372036854775807,4655834107599822132) + , (-9223372036854775808,9223372036854775806,4655834107599822133) + , (-9223372036854775808,-9223372036854775808,4431544730560856064) + , (-9223372036854775808,-9223372036854775807,4431544730560856065) + , (-9223372036854775808,2567445505541745260,7700533794731035217) + , (-9223372036854775808,4083231397459745842,-335577445303418461) + , (-9223372036854775808,-6865757387616483504,-7032030970026419356) + , (-9223372036854775808,-861683380996470009,2232232541379877665) + , (-9223372036854775808,-8470469552102498776,-1045407232679499763) + , (-9223372036854775808,923704023541552544,2883223218340361824) + , (-9223372036854775808,-2001408171881714643,-2066146869666208578) + , (-9223372036854775808,-4167309968479344909,-7188061895674244156) + , (-9223372036854775808,-7743274236101392186,-7816317281792039211) + , (-9223372036854775808,-1158760675613715514,-8530016045177794189) + , (-9223372036854775808,1857094031690398882,-8568955371423453330) + , (-9223372036854775808,5223155310865179679,-3998935455435805041) + , (-9223372036854775808,5001190823599135195,-652651057462744517) + , (-9223372036854775807,0,2304343311159508113) + , (-9223372036854775807,1,2304343311159508112) + , (-9223372036854775807,-1,-3522700144704038459) + , (-9223372036854775807,9223372036854775807,-6008689848613447227) + , (-9223372036854775807,9223372036854775806,-6008689848613447228) + , (-9223372036854775807,-9223372036854775808,-2487483995134411631) + , (-9223372036854775807,-9223372036854775807,-2487483995134411632) + , (-9223372036854775807,2567445505541745260,4074502733661903488) + , (-9223372036854775807,4083231397459745842,-5128126520013674658) + , (-9223372036854775807,-6865757387616483504,-5936459998183011515) + , (-9223372036854775807,-861683380996470009,-8129787101169909232) + , (-9223372036854775807,-8470469552102498776,8851228780569031424) + , (-9223372036854775807,923704023541552544,3002828102205946013) + , (-9223372036854775807,-2001408171881714643,-7713722334948989257) + , (-9223372036854775807,-4167309968479344909,-4369314260124925255) + , (-9223372036854775807,-7743274236101392186,-2445721929836552868) + , (-9223372036854775807,-1158760675613715514,1621684614676167742) + , (-9223372036854775807,1857094031690398882,-1454389490305220133) + , (-9223372036854775807,5223155310865179679,8606090167506827166) + , (-9223372036854775807,5001190823599135195,1981580879259588958) + , (2567445505541745260,0,-8973281124039502036) + , (2567445505541745260,1,-8973281124039502035) + , (2567445505541745260,-1,-6008705214239640480) + , (2567445505541745260,9223372036854775807,-8638810106281790368) + , (2567445505541745260,9223372036854775806,-8638810106281790367) + , (2567445505541745260,-9223372036854775808,4681635643376129836) + , (2567445505541745260,-9223372036854775807,4681635643376129837) + , (2567445505541745260,2567445505541745260,9174680153398047029) + , (2567445505541745260,4083231397459745842,-2990669639414619657) + , (2567445505541745260,-6865757387616483504,-3637116942701081784) + , (2567445505541745260,-861683380996470009,2387113716780026189) + , (2567445505541745260,-8470469552102498776,5515018389456898185) + , (2567445505541745260,923704023541552544,-5328070136241083652) + , (2567445505541745260,-2001408171881714643,-6875647996558751662) + , (2567445505541745260,-4167309968479344909,-8290335268412380672) + , (2567445505541745260,-7743274236101392186,6373178873516381185) + , (2567445505541745260,-1158760675613715514,5059859877438747215) + , (2567445505541745260,1857094031690398882,-1451034095407122046) + , (2567445505541745260,5223155310865179679,-8646377196618803725) + , (2567445505541745260,5001190823599135195,-3838534179302963017) + , (4083231397459745842,0,6998037268804005970) + , (4083231397459745842,1,6998037268804005971) + , (4083231397459745842,-1,1402099690499804550) + , (4083231397459745842,9223372036854775807,3888089394409213318) + , (4083231397459745842,9223372036854775806,3888089394409213319) + , (4083231397459745842,-9223372036854775808,-6656879498611625902) + , (4083231397459745842,-9223372036854775807,-6656879498611625901) + , (4083231397459745842,2567445505541745260,6386596027731794507) + , (4083231397459745842,4083231397459745842,-3187917029005021099) + , (4083231397459745842,-6865757387616483504,6112603776548558718) + , (4083231397459745842,-861683380996470009,-7441275486688246825) + , (4083231397459745842,-8470469552102498776,5208342864628108171) + , (4083231397459745842,923704023541552544,-8427917464140474558) + , (4083231397459745842,-2001408171881714643,-6503925686181097604) + , (4083231397459745842,-4167309968479344909,-3054789965864685186) + , (4083231397459745842,-7743274236101392186,3300274022574749055) + , (4083231397459745842,-1158760675613715514,-363996688051099355) + , (4083231397459745842,1857094031690398882,-8690427774878692412) + , (4083231397459745842,5223155310865179679,1363705457281250837) + , (4083231397459745842,5001190823599135195,-6653528445991061431) + , (-6865757387616483504,0,5749763000999208016) + , (-6865757387616483504,1,5749763000999208017) + , (-6865757387616483504,-1,-1738853771362238076) + , (-6865757387616483504,9223372036854775807,-8115953528574541436) + , (-6865757387616483504,9223372036854775806,-8115953528574541435) + , (-6865757387616483504,-9223372036854775808,957935694705288272) + , (-6865757387616483504,-9223372036854775807,957935694705288273) + , (-6865757387616483504,2567445505541745260,4264042889917956833) + , (-6865757387616483504,4083231397459745842,2008055150789016947) + , (-6865757387616483504,-6865757387616483504,-204009080175817644) + , (-6865757387616483504,-861683380996470009,-2861234014328567087) + , (-6865757387616483504,-8470469552102498776,-7275677003776512995) + , (-6865757387616483504,923704023541552544,-7544331197149237040) + , (-6865757387616483504,-2001408171881714643,7839836243083674894) + , (-6865757387616483504,-4167309968479344909,-5446259127134386924) + , (-6865757387616483504,-7743274236101392186,-5918645075284067355) + , (-6865757387616483504,-1158760675613715514,9080007164223346723) + , (-6865757387616483504,1857094031690398882,5693103147029107902) + , (-6865757387616483504,5223155310865179679,-8497960881124036577) + , (-6865757387616483504,5001190823599135195,653428426763615115) + , (-861683380996470009,0,3379180533572133623) + , (-861683380996470009,1,3379180533572133622) + , (-861683380996470009,-1,8701907172049453099) + , (-861683380996470009,9223372036854775807,-3511852332580667349) + , (-861683380996470009,9223372036854775806,-3511852332580667350) + , (-861683380996470009,-9223372036854775808,8171007839866053367) + , (-861683380996470009,-9223372036854775807,8171007839866053366) + , (-861683380996470009,2567445505541745260,803365015810810974) + , (-861683380996470009,4083231397459745842,-9026813770215529244) + , (-861683380996470009,-6865757387616483504,1350998220313792963) + , (-861683380996470009,-861683380996470009,8054869970498268978) + , (-861683380996470009,-8470469552102498776,-7438650029028400286) + , (-861683380996470009,923704023541552544,-6996523932093000853) + , (-861683380996470009,-2001408171881714643,-4786478825533826055) + , (-861683380996470009,-4167309968479344909,-6383147115128947233) + , (-861683380996470009,-7743274236101392186,-1658523186964263774) + , (-861683380996470009,-1158760675613715514,4692145823098871716) + , (-861683380996470009,1857094031690398882,-1872703233142331115) + , (-861683380996470009,5223155310865179679,-811026315150682296) + , (-861683380996470009,5001190823599135195,-5281895590684419216) + , (-8470469552102498776,0,-7931260693702413144) + , (-8470469552102498776,1,-7931260693702413143) + , (-8470469552102498776,-1,2573940169881588188) + , (-8470469552102498776,9223372036854775807,-3659044399197974052) + , (-8470469552102498776,9223372036854775806,-3659044399197974051) + , (-8470469552102498776,-9223372036854775808,5723656073713218728) + , (-8470469552102498776,-9223372036854775807,5723656073713218729) + , (-8470469552102498776,2567445505541745260,420411266214539577) + , (-8470469552102498776,4083231397459745842,-8607847461036260181) + , (-8470469552102498776,-6865757387616483504,-8351885649833130836) + , (-8470469552102498776,-861683380996470009,6811406482775041065) + , (-8470469552102498776,-8470469552102498776,-4582368925066734667) + , (-8470469552102498776,923704023541552544,8001229866530280456) + , (-8470469552102498776,-2001408171881714643,-1820948032022911994) + , (-8470469552102498776,-4167309968479344909,3620577499311024476) + , (-8470469552102498776,-7743274236101392186,-4609191800632838451) + , (-8470469552102498776,-1158760675613715514,-6918080700621103797) + , (-8470469552102498776,1857094031690398882,5520168411289292262) + , (-8470469552102498776,5223155310865179679,2692410941922569623) + , (-8470469552102498776,5001190823599135195,2395406517777423715) + , (923704023541552544,0,7964894395160379296) + , (923704023541552544,1,7964894395160379297) + , (923704023541552544,-1,1791958585200729300) + , (923704023541552544,9223372036854775807,4277948289110006996) + , (923704023541552544,9223372036854775806,4277948289110006997) + , (923704023541552544,-9223372036854775808,-5690022372255252576) + , (923704023541552544,-9223372036854775807,-5690022372255252575) + , (923704023541552544,2567445505541745260,-7373581591392408527) + , (923704023541552544,4083231397459745842,-3491269185657726653) + , (923704023541552544,-6865757387616483504,5808073608114626372) + , (923704023541552544,-861683380996470009,-47303148674480063) + , (923704023541552544,-8470469552102498776,3393725767124096365) + , (923704023541552544,923704023541552544,6722538343099533824) + , (923704023541552544,-2001408171881714643,8978076864661217566) + , (923704023541552544,-4167309968479344909,4372317842629046052) + , (923704023541552544,-7743274236101392186,4962285542985588789) + , (923704023541552544,-1158760675613715514,-1783563825492372525) + , (923704023541552544,1857094031690398882,5642360308239303118) + , (923704023541552544,5223155310865179679,8779532535343155823) + , (923704023541552544,5001190823599135195,-5300157958715255141) + , (-2001408171881714643,0,2872025573219635581) + , (-2001408171881714643,1,2872025573219635580) + , (-2001408171881714643,-1,-6316269529225023823) + , (-2001408171881714643,9223372036854775807,-8946374421267173711) + , (-2001408171881714643,9223372036854775806,-8946374421267173712) + , (-2001408171881714643,-9223372036854775808,-1919801733074284163) + , (-2001408171881714643,-9223372036854775807,-1919801733074284164) + , (-2001408171881714643,2567445505541745260,-3903333652039534860) + , (-2001408171881714643,4083231397459745842,463944994999460306) + , (-2001408171881714643,-6865757387616483504,-2703376805629496951) + , (-2001408171881714643,-861683380996470009,705782136051937692) + , (-2001408171881714643,-8470469552102498776,-5423757076446514436) + , (-2001408171881714643,923704023541552544,-9023823575377471143) + , (-2001408171881714643,-2001408171881714643,-6740689718066331573) + , (-2001408171881714643,-4167309968479344909,-2237352403203295675) + , (-2001408171881714643,-7743274236101392186,6639876252016071864) + , (-2001408171881714643,-1158760675613715514,-3676923428856432358) + , (-2001408171881714643,1857094031690398882,8433350849237968575) + , (-2001408171881714643,5223155310865179679,8083118465523445474) + , (-2001408171881714643,5001190823599135195,8408789340931286186) + , (-4167309968479344909,0,-434861780140325981) + , (-4167309968479344909,1,-434861780140325982) + , (-4167309968479344909,-1,4078753422856069335) + , (-4167309968479344909,9223372036854775807,1592763718946660567) + , (-4167309968479344909,9223372036854775806,1592763718946660566) + , (-4167309968479344909,-9223372036854775808,-5226689086434245725) + , (-4167309968479344909,-9223372036854775807,-5226689086434245726) + , (-4167309968479344909,2567445505541745260,683039575442447154) + , (-4167309968479344909,4083231397459745842,-1580897568494058712) + , (-4167309968479344909,-6865757387616483504,-3157850903324599193) + , (-4167309968479344909,-861683380996470009,5840139357400789150) + , (-4167309968479344909,-8470469552102498776,-9111313365999984050) + , (-4167309968479344909,923704023541552544,5288957996657605527) + , (-4167309968479344909,-2001408171881714643,8957092856681789117) + , (-4167309968479344909,-4167309968479344909,-1510901518783681173) + , (-4167309968479344909,-7743274236101392186,-3180042504944103634) + , (-4167309968479344909,-1158760675613715514,-6648707987066157440) + , (-4167309968479344909,1857094031690398882,1530308711439902137) + , (-4167309968479344909,5223155310865179679,-3955905859017099396) + , (-4167309968479344909,5001190823599135195,-1855337175029994468) + , (-7743274236101392186,0,8934024225322328102) + , (-7743274236101392186,1,8934024225322328103) + , (-7743274236101392186,-1,5753297623038524762) + , (-7743274236101392186,9223372036854775807,-6460461881591464614) + , (-7743274236101392186,9223372036854775806,-6460461881591464613) + , (-7743274236101392186,-9223372036854775808,-4720892542093303770) + , (-7743274236101392186,-9223372036854775807,-4720892542093303769) + , (-7743274236101392186,2567445505541745260,1219078182754930823) + , (-7743274236101392186,4083231397459745842,3283238741348658849) + , (-7743274236101392186,-6865757387616483504,2214837129010643514) + , (-7743274236101392186,-861683380996470009,-8297505405682173301) + , (-7743274236101392186,-8470469552102498776,7284873795486662607) + , (-7743274236101392186,923704023541552544,5536374881205786182) + , (-7743274236101392186,-2001408171881714643,387223227996378376) + , (-7743274236101392186,-4167309968479344909,-917832588707557118) + , (-7743274236101392186,-7743274236101392186,7176547177436502163) + , (-7743274236101392186,-1158760675613715514,116286973690055209) + , (-7743274236101392186,1857094031690398882,5928979968145076560) + , (-7743274236101392186,5223155310865179679,3028286257747937665) + , (-7743274236101392186,5001190823599135195,-4332125765350567619) + , (-1158760675613715514,0,5956088333391944486) + , (-1158760675613715514,1,5956088333391944487) + , (-1158760675613715514,-1,-7917303657271658406) + , (-1158760675613715514,9223372036854775807,7899335524395612250) + , (-1158760675613715514,9223372036854775806,7899335524395612251) + , (-1158760675613715514,-9223372036854775808,1164261027098024742) + , (-1158760675613715514,-9223372036854775807,1164261027098024743) + , (-1158760675613715514,2567445505541745260,-2785677114484238457) + , (-1158760675613715514,4083231397459745842,-1002429204408488543) + , (-1158760675613715514,-6865757387616483504,8401170277903943994) + , (-1158760675613715514,-861683380996470009,-16436171578046069) + , (-1158760675613715514,-8470469552102498776,-9194848385618963761) + , (-1158760675613715514,923704023541552544,1084636010925968710) + , (-1158760675613715514,-2001408171881714643,-4857142433240585720) + , (-1158760675613715514,-4167309968479344909,-1964281790048889854) + , (-1158760675613715514,-7743274236101392186,8246226170490932627) + , (-1158760675613715514,-1158760675613715514,6361166869490679593) + , (-1158760675613715514,1857094031690398882,-2105373121023544752) + , (-1158760675613715514,5223155310865179679,36839566930115713) + , (-1158760675613715514,5001190823599135195,-212951648648603587) + , (1857094031690398882,0,9015668768058019778) + , (1857094031690398882,1,9015668768058019779) + , (1857094031690398882,-1,9100106061055241462) + , (1857094031690398882,9223372036854775807,-2969538255442006794) + , (1857094031690398882,9223372036854775806,-2969538255442006793) + , (1857094031690398882,-9223372036854775808,-4639247999357612094) + , (1857094031690398882,-9223372036854775807,-4639247999357612093) + , (1857094031690398882,2567445505541745260,-3006872336524549701) + , (1857094031690398882,4083231397459745842,6265581367262084869) + , (1857094031690398882,-6865757387616483504,2033207169684530446) + , (1857094031690398882,-861683380996470009,-1320197745061253529) + , (1857094031690398882,-8470469552102498776,-4265628316036239621) + , (1857094031690398882,923704023541552544,-3367435720801089390) + , (1857094031690398882,-2001408171881714643,6177067148055200172) + , (1857094031690398882,-4167309968479344909,2442045221500776878) + , (1857094031690398882,-7743274236101392186,-4893197539888308625) + , (1857094031690398882,-1158760675613715514,-8421024382369541515) + , (1857094031690398882,1857094031690398882,-7408430811069336396) + , (1857094031690398882,5223155310865179679,-7595626543579894267) + , (1857094031690398882,5001190823599135195,-881903256998390279) + , (5223155310865179679,0,-3269838748917270129) + , (5223155310865179679,1,-3269838748917270130) + , (5223155310865179679,-1,7291671544264496835) + , (5223155310865179679,9223372036854775807,4805681840355088067) + , (5223155310865179679,9223372036854775806,4805681840355088066) + , (5223155310865179679,-9223372036854775808,-8061666055211189873) + , (5223155310865179679,-9223372036854775807,-8061666055211189874) + , (5223155310865179679,2567445505541745260,-7804174747204710922) + , (5223155310865179679,4083231397459745842,6502038769175717692) + , (5223155310865179679,-6865757387616483504,-84624125340195173) + , (5223155310865179679,-861683380996470009,-1598219933181632438) + , (5223155310865179679,-8470469552102498776,7315535340089955770) + , (5223155310865179679,923704023541552544,-4366209927565878365) + , (5223155310865179679,-2001408171881714643,8303608712586965329) + , (5223155310865179679,-4167309968479344909,6094450858954960199) + , (5223155310865179679,-7743274236101392186,-4358055282826489846) + , (5223155310865179679,-1158760675613715514,498755331116932332) + , (5223155310865179679,1857094031690398882,-2710283570616089507) + , (5223155310865179679,5223155310865179679,-296489501756273600) + , (5223155310865179679,5001190823599135195,-98234438668330520) + , (5001190823599135195,0,8778826164785395979) + , (5001190823599135195,1,8778826164785395978) + , (5001190823599135195,-1,-6218242958306486721) + , (5001190823599135195,9223372036854775807,5995516546323633727) + , (5001190823599135195,9223372036854775806,5995516546323633726) + , (5001190823599135195,-9223372036854775808,3986998858491476235) + , (5001190823599135195,-9223372036854775807,3986998858491476234) + , (5001190823599135195,2567445505541745260,-1545494190294408262) + , (5001190823599135195,4083231397459745842,428614304204373936) + , (5001190823599135195,-6865757387616483504,-1144486355823264849) + , (5001190823599135195,-861683380996470009,-1883964591387873722) + , (5001190823599135195,-8470469552102498776,-2649166458588407594) + , (5001190823599135195,923704023541552544,-4729043846122772577) + , (5001190823599135195,-2001408171881714643,-1615608225711631163) + , (5001190823599135195,-4167309968479344909,6464472445924082371) + , (5001190823599135195,-7743274236101392186,6211995040133692550) + , (5001190823599135195,-1158760675613715514,518903164685297976) + , (5001190823599135195,1857094031690398882,2458604802307901905) + , (5001190823599135195,5223155310865179679,107124278582901988) + , (5001190823599135195,5001190823599135195,-289113266956094716) + ] + +-- | Test vectors that were generated with hashable-1.4.4.0. +-- +-- format: @(s, a, hashWithSalt s a)@ +-- +textVectors :: [(Int64, T.Text, Int64)] +textVectors = + [ (0,"",0) + , (0,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-6540367199105872008) + , (0,"\1102688\199297\1059448\194589\2419",5297307974316318235) + , (0,"\156817\190426",-703430359213272676) + , (0,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",5135347882657236759) + , (0,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-2262234065242081882) + , (0,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",9128477241109558362) + , (0,"\119554\77896\1013193\33453\1043847\186975\190500",7225001180482703484) + , (0,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",917038117861024028) + , (0,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",2892321504249512120) + , (0,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-103463371479371070) + , (0,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",5957629414914764174) + , (0,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",3488107008800520887) + , (0,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",1208302736788525476) + , (0,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",1351042158391015004) + , (0,"\1101165\1065365\46459\31391\151839\1102258",-4634533338619660989) + , (0,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-7304641018000055041) + , (0,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",7637396583438845659) + , (0,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",1718286945158750393) + , (0,"",0) + , (0,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-3660134827019842443) + , (1,"",-6919028725695267695) + , (1,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-9008649111276518323) + , (1,"\1102688\199297\1059448\194589\2419",2208441083470261612) + , (1,"\156817\190426",-6972596779546026391) + , (1,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-959245991756628340) + , (1,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",7430900159379626537) + , (1,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-3754681258552247285) + , (1,"\119554\77896\1013193\33453\1043847\186975\190500",-2949403530545347605) + , (1,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-5420985532046192981) + , (1,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",5882924688707432489) + , (1,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-3760415472839240975) + , (1,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",3231423754080116203) + , (1,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-4689565239735962158) + , (1,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-1094141572194625977) + , (1,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-724176326815319977) + , (1,"\1101165\1065365\46459\31391\151839\1102258",2901251482213502178) + , (1,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-3780890209490582320) + , (1,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",1278399720801062480) + , (1,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",7823236760515033292) + , (1,"",-6919028725695267695) + , (1,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",1229217929652766930) + , (-1,"",6919028725695267695) + , (-1,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-3378925650481587801) + , (-1,"\1102688\199297\1059448\194589\2419",-7439874846516614582) + , (-1,"\156817\190426",6888068429271213043) + , (-1,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-1103417807823508366) + , (-1,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-8948290987674031293) + , (-1,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-679512079916368919) + , (-1,"\119554\77896\1013193\33453\1043847\186975\190500",6871529416497975977) + , (-1,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",1552078999795727697) + , (-1,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-7087017764559325965) + , (-1,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",2013989120908136695) + , (-1,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",6996550069037872493) + , (-1,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-8823714743629027284) + , (-1,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",3446372873603708289) + , (-1,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-1656735374597892871) + , (-1,"\1101165\1065365\46459\31391\151839\1102258",-478417234383115032) + , (-1,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-4014600300037679690) + , (-1,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",178058539737803758) + , (-1,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",8034589934929444202) + , (-1,"",6919028725695267695) + , (-1,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",6106042719663383504) + , (9223372036854775807,"",-2304343311159508113) + , (9223372036854775807,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",5844446386373188007) + , (9223372036854775807,"\1102688\199297\1059448\194589\2419",1783497190338161226) + , (9223372036854775807,"\156817\190426",-2335303607583562765) + , (9223372036854775807,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",8119954229031267442) + , (9223372036854775807,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",275081049180744515) + , (9223372036854775807,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",8543859956938406889) + , (9223372036854775807,"\119554\77896\1013193\33453\1043847\186975\190500",-2351842620356799831) + , (9223372036854775807,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-7671293037059048111) + , (9223372036854775807,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",2136354272295449843) + , (9223372036854775807,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-7209382915946639113) + , (9223372036854775807,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-2226821967816903315) + , (9223372036854775807,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",399657293225748524) + , (9223372036854775807,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-5776999163251067519) + , (9223372036854775807,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",7566636662256882937) + , (9223372036854775807,"\1101165\1065365\46459\31391\151839\1102258",8744954802471660776) + , (9223372036854775807,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",5208771736817096118) + , (9223372036854775807,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-9045313497116972050) + , (9223372036854775807,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-1188782101925331606) + , (9223372036854775807,"",-2304343311159508113) + , (9223372036854775807,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-3117329317191392304) + , (9223372036854775806,"",4614685414535759582) + , (9223372036854775806,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-4339409438323011854) + , (9223372036854775806,"\1102688\199297\1059448\194589\2419",-1387961788646826639) + , (9223372036854775806,"\156817\190426",2054151617400957422) + , (9223372036854775806,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-4190307717306030131) + , (9223372036854775806,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-8307099929253985880) + , (9223372036854775806,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",2892213827099584560) + , (9223372036854775806,"\119554\77896\1013193\33453\1043847\186975\190500",-39058569603927902) + , (9223372036854775806,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-8594717462981477142) + , (9223372036854775806,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-2131650391493952374) + , (9223372036854775806,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",199068255460570120) + , (9223372036854775806,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-5177536786733628344) + , (9223372036854775806,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",5576289499356875873) + , (9223372036854775806,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",6719204694073386614) + , (9223372036854775806,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-990200121499249162) + , (9223372036854775806,"\1101165\1065365\46459\31391\151839\1102258",301843306654867145) + , (9223372036854775806,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",2369253984665124157) + , (9223372036854775806,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",2943848029121861393) + , (9223372036854775806,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-6142779766488672521) + , (9223372036854775806,"",4614685414535759582) + , (9223372036854775806,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",6083249001428468075) + , (-9223372036854775808,"",-9223372036854775808) + , (-9223372036854775808,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",2683004837748903800) + , (-9223372036854775808,"\1102688\199297\1059448\194589\2419",-3926064062538457573) + , (-9223372036854775808,"\156817\190426",8519941677641503132) + , (-9223372036854775808,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-4088024154197539049) + , (-9223372036854775808,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",6961137971612693926) + , (-9223372036854775808,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-94894795745217446) + , (-9223372036854775808,"\119554\77896\1013193\33453\1043847\186975\190500",-1998370856372072324) + , (-9223372036854775808,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-8306333918993751780) + , (-9223372036854775808,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-6331050532605263688) + , (-9223372036854775808,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",9119908665375404738) + , (-9223372036854775808,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-3265742621940011634) + , (-9223372036854775808,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-5735265028054254921) + , (-9223372036854775808,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-8015069300066250332) + , (-9223372036854775808,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-7872329878463760804) + , (-9223372036854775808,"\1101165\1065365\46459\31391\151839\1102258",4588838698235114819) + , (-9223372036854775808,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",1918731018854720767) + , (-9223372036854775808,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-1585975453415930149) + , (-9223372036854775808,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-7505085091696025415) + , (-9223372036854775808,"",-9223372036854775808) + , (-9223372036854775808,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",5563237209834933365) + , (-9223372036854775807,"",2304343311159508113) + , (-9223372036854775807,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",214722925578257485) + , (-9223372036854775807,"\1102688\199297\1059448\194589\2419",-7014930953384514196) + , (-9223372036854775807,"\156817\190426",2250775257308749417) + , (-9223372036854775807,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",8264126045098147468) + , (-9223372036854775807,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-1792471877475149271) + , (-9223372036854775807,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",5468690778302528523) + , (-9223372036854775807,"\119554\77896\1013193\33453\1043847\186975\190500",6273968506309428203) + , (-9223372036854775807,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",3802386504808582827) + , (-9223372036854775807,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-3340447348147343319) + , (-9223372036854775807,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",5462956564015534833) + , (-9223372036854775807,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-5991948282774659605) + , (-9223372036854775807,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",4533806797118813650) + , (-9223372036854775807,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",8129230464660149831) + , (-9223372036854775807,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",8499195710039455831) + , (-9223372036854775807,"\1101165\1065365\46459\31391\151839\1102258",-6322120554641273630) + , (-9223372036854775807,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",5442481827364193488) + , (-9223372036854775807,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-7944972316053713328) + , (-9223372036854775807,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-1400135276339742516) + , (-9223372036854775807,"",2304343311159508113) + , (-9223372036854775807,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-7994154107202008878) + , (2567445505541745260,"",-8973281124039502036) + , (2567445505541745260,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",6986576614726519924) + , (2567445505541745260,"\1102688\199297\1059448\194589\2419",-3559380544554784297) + , (2567445505541745260,"\156817\190426",-8725847893525294240) + , (2567445505541745260,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-405556431490180397) + , (2567445505541745260,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",2431113613874240162) + , (2567445505541745260,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",7144521130391806062) + , (2567445505541745260,"\119554\77896\1013193\33453\1043847\186975\190500",-6882366348698607136) + , (2567445505541745260,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-1152220510740110416) + , (2567445505541745260,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-4125965227864056372) + , (2567445505541745260,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-3659746721164281234) + , (2567445505541745260,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-1145232447000082286) + , (2567445505541745260,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",1923210021309635787) + , (2567445505541745260,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",3461143703289072328) + , (2567445505541745260,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-3664022792821402568) + , (2567445505541745260,"\1101165\1065365\46459\31391\151839\1102258",1882261717874082959) + , (2567445505541745260,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-3110869168374697917) + , (2567445505541745260,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",7328120806771268031) + , (2567445505541745260,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-6615327764550827499) + , (2567445505541745260,"",-8973281124039502036) + , (2567445505541745260,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",4872648546216289441) + , (4083231397459745842,"",6998037268804005970) + , (4083231397459745842,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-3559290558798973850) + , (4083231397459745842,"\1102688\199297\1059448\194589\2419",-1010237729993739707) + , (4083231397459745842,"\156817\190426",1637136808842089434) + , (4083231397459745842,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-6998778281635064927) + , (4083231397459745842,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",7745630578106789068) + , (4083231397459745842,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-2300785599382395332) + , (4083231397459745842,"\119554\77896\1013193\33453\1043847\186975\190500",-877396652368119986) + , (4083231397459745842,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",6592105676176846774) + , (4083231397459745842,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",8974098980978572102) + , (4083231397459745842,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",2857269293044931340) + , (4083231397459745842,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-653817599880310428) + , (4083231397459745842,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",8953213119809220557) + , (4083231397459745842,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",8666770732390910050) + , (4083231397459745842,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",3880663373980579338) + , (4083231397459745842,"\1101165\1065365\46459\31391\151839\1102258",-1927339133376046979) + , (4083231397459745842,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",3945688492138799945) + , (4083231397459745842,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",5154527581924126237) + , (4083231397459745842,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",5196707378237140523) + , (4083231397459745842,"",6998037268804005970) + , (4083231397459745842,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",1312520437439702079) + , (-6865757387616483504,"",5749763000999208016) + , (-6865757387616483504,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",8855031281697085544) + , (-6865757387616483504,"\1102688\199297\1059448\194589\2419",8997542720278889195) + , (-6865757387616483504,"\156817\190426",1715029925165393324) + , (-6865757387616483504,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",8904020516701631431) + , (-6865757387616483504,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-8151433275551241546) + , (-6865757387616483504,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",7030284799455023914) + , (-6865757387616483504,"\119554\77896\1013193\33453\1043847\186975\190500",8283415303579735660) + , (-6865757387616483504,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-2948551515863180660) + , (-6865757387616483504,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-6775510758754895704) + , (-6865757387616483504,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",6451883820308451122) + , (-6865757387616483504,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",7707452452270026526) + , (-6865757387616483504,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",6389678446554958535) + , (-6865757387616483504,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",6728112057280622100) + , (-6865757387616483504,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",1622141702939064268) + , (-6865757387616483504,"\1101165\1065365\46459\31391\151839\1102258",-754380733528426797) + , (-6865757387616483504,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",178238847147937679) + , (-6865757387616483504,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-5302095543049089589) + , (-6865757387616483504,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",2513808748892606025) + , (-6865757387616483504,"",5749763000999208016) + , (-6865757387616483504,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",679961147667046821) + , (-861683380996470009,"",3379180533572133623) + , (-861683380996470009,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-7894358172558373137) + , (-861683380996470009,"\1102688\199297\1059448\194589\2419",6895325963192848050) + , (-861683380996470009,"\156817\190426",5175594217786963803) + , (-861683380996470009,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-5947897930517633270) + , (-861683380996470009,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-3090944049451841125) + , (-861683380996470009,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-5378204030122321311) + , (-861683380996470009,"\119554\77896\1013193\33453\1043847\186975\190500",6261997676482282289) + , (-861683380996470009,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-4818759008587445831) + , (-861683380996470009,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",1025852226515519163) + , (-861683380996470009,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",3857684262177138367) + , (-861683380996470009,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-2920327888892611483) + , (-861683380996470009,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-6895936526088126284) + , (-861683380996470009,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",1932871507202171337) + , (-861683380996470009,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-9031083119737555407) + , (-861683380996470009,"\1101165\1065365\46459\31391\151839\1102258",-3087626094799990608) + , (-861683380996470009,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",645940591591016190) + , (-861683380996470009,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-5677783320481568650) + , (-861683380996470009,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",8334969909012607586) + , (-861683380996470009,"",3379180533572133623) + , (-861683380996470009,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",8231270254601001784) + , (-8470469552102498776,"",-7931260693702413144) + , (-8470469552102498776,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",2932696376915950304) + , (-8470469552102498776,"\1102688\199297\1059448\194589\2419",-4987726850944095453) + , (-8470469552102498776,"\156817\190426",4455481068744299652) + , (-8470469552102498776,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-8412048648247195121) + , (-8470469552102498776,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",1178966563825687518) + , (-8470469552102498776,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",3886324531626896946) + , (-8470469552102498776,"\119554\77896\1013193\33453\1043847\186975\190500",-4775794414658706204) + , (-8470469552102498776,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-4058854916842328156) + , (-8470469552102498776,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",1842448681031544416) + , (-8470469552102498776,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-7060294227597300118) + , (-8470469552102498776,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",975766947625812614) + , (-8470469552102498776,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",1600472831698510015) + , (-8470469552102498776,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",2995655801368477900) + , (-8470469552102498776,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",6050224142253085044) + , (-8470469552102498776,"\1101165\1065365\46459\31391\151839\1102258",1637726374111928459) + , (-8470469552102498776,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-3973109948796551737) + , (-8470469552102498776,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",5295655834344746307) + , (-8470469552102498776,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-5340431495380326607) + , (-8470469552102498776,"",-7931260693702413144) + , (-8470469552102498776,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",8620406103721826077) + , (923704023541552544,"",7964894395160379296) + , (923704023541552544,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",3763194446095729944) + , (923704023541552544,"\1102688\199297\1059448\194589\2419",4903222719780359931) + , (923704023541552544,"\156817\190426",-6954422180364439236) + , (923704023541552544,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",4157009272380960695) + , (923704023541552544,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-5527023885839636922) + , (923704023541552544,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-7452600147321094854) + , (923704023541552544,"\119554\77896\1013193\33453\1043847\186975\190500",6122800764080801628) + , (923704023541552544,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-5003008382132007684) + , (923704023541552544,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-6077444132719225256) + , (923704023541552544,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-5136733184803530014) + , (923704023541552544,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",4225950773485831790) + , (923704023541552544,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-1852030059081644521) + , (923704023541552544,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-3780349984795861884) + , (923704023541552544,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",2442056716590773180) + , (923704023541552544,"\1101165\1065365\46459\31391\151839\1102258",3213672932061168995) + , (923704023541552544,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-5400820978417415009) + , (923704023541552544,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",2405743597156002619) + , (923704023541552544,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-8032736635440591015) + , (923704023541552544,"",7964894395160379296) + , (923704023541552544,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",2938740435756931541) + , (-2001408171881714643,"",2872025573219635581) + , (-2001408171881714643,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",52122324623489849) + , (-2001408171881714643,"\1102688\199297\1059448\194589\2419",3365789482073378616) + , (-2001408171881714643,"\156817\190426",-8683365287547881731) + , (-2001408171881714643,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",8538269606656236120) + , (-2001408171881714643,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-4481188468937113531) + , (-2001408171881714643,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",4637810314242957919) + , (-2001408171881714643,"\119554\77896\1013193\33453\1043847\186975\190500",-4650722767918482081) + , (-2001408171881714643,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",9129798994629408367) + , (-2001408171881714643,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-1761441905094099443) + , (-2001408171881714643,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",1758476707131450317) + , (-2001408171881714643,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",167725801086561551) + , (-2001408171881714643,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",2660968021275217158) + , (-2001408171881714643,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-4777167884805162405) + , (-2001408171881714643,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-6099894586823616045) + , (-2001408171881714643,"\1101165\1065365\46459\31391\151839\1102258",-5328588541500471298) + , (-2001408171881714643,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",8779086984972310340) + , (-2001408171881714643,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",6201014757711573636) + , (-2001408171881714643,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",726104640486674360) + , (-2001408171881714643,"",2872025573219635581) + , (-2001408171881714643,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-7344220902219466274) + , (-4167309968479344909,"",-434861780140325981) + , (-4167309968479344909,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-8881216888030628501) + , (-4167309968479344909,"\1102688\199297\1059448\194589\2419",-8572443921774116690) + , (-4167309968479344909,"\156817\190426",1198371264819341423) + , (-4167309968479344909,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-8290458439236406586) + , (-4167309968479344909,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",4705830659022825223) + , (-4167309968479344909,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",5804201352060585893) + , (-4167309968479344909,"\119554\77896\1013193\33453\1043847\186975\190500",229874728948693253) + , (-4167309968479344909,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",4139350098404093693) + , (-4167309968479344909,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-3288346257155914881) + , (-4167309968479344909,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",146049177437560331) + , (-4167309968479344909,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-2157893669048711911) + , (-4167309968479344909,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-6388745771746987768) + , (-4167309968479344909,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-4833829128071508179) + , (-4167309968479344909,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",7900794920549842509) + , (-4167309968479344909,"\1101165\1065365\46459\31391\151839\1102258",3234817806837180524) + , (-4167309968479344909,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-6545982171563799662) + , (-4167309968479344909,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",5119056089784878506) + , (-4167309968479344909,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",4951395783494684158) + , (-4167309968479344909,"",-434861780140325981) + , (-4167309968479344909,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",3494670159902191652) + ] + +-- | Test vectors that were generated with hashable-1.4.4.0. +-- +-- format: @(s, a, hashWithSalt s a)@ +-- +stringVectors :: [(Int64, String, Int64)] +stringVectors = + [ (0,"",0) + , (0,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-4511204978425858173) + , (0,"\1102688\199297\1059448\194589\2419",-3354630472543695587) + , (0,"\156817\190426",-1082648192425183611) + , (0,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-6604013169414682170) + , (0,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",380636805672468346) + , (0,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",723327196210753877) + , (0,"\119554\77896\1013193\33453\1043847\186975\190500",8443735537583448637) + , (0,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",92677281842936614) + , (0,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",7794812878145946774) + , (0,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",4739778807630008505) + , (0,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",3552285591457015410) + , (0,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",5381508394199625346) + , (0,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-1979141156316582101) + , (0,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-8680851220154381640) + , (0,"\1101165\1065365\46459\31391\151839\1102258",4929836790831380089) + , (0,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-6860165880710626136) + , (0,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-7443543032289439823) + , (0,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-2187685339849407261) + , (0,"",0) + , (0,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",8200781278844389845) + , (1,"",-6919028725695267695) + , (1,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-2423111682779986822) + , (1,"\1102688\199297\1059448\194589\2419",1061820922320799408) + , (1,"\156817\190426",2795546352041393932) + , (1,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-4295543990937321521) + , (1,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",7482879391145476431) + , (1,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",7996723601674303192) + , (1,"\119554\77896\1013193\33453\1043847\186975\190500",-6008216326252376540) + , (1,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-4560132342537537033) + , (1,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-8847172794728500349) + , (1,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",4379902381775001308) + , (1,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",6375890410174049483) + , (1,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-1495167442441441753) + , (1,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-4841712486117782326) + , (1,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",4557807605809534189) + , (1,"\1101165\1065365\46459\31391\151839\1102258",4593926291974808604) + , (1,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",5394819023171759661) + , (1,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",6716491163317453944) + , (1,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-8696512456428219918) + , (1,"",-6919028725695267695) + , (1,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-4928809143566396824) + , (-1,"",6919028725695267695) + , (-1,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",8382572610036188588) + , (-1,"\1102688\199297\1059448\194589\2419",4046705369602390538) + , (-1,"\156817\190426",4176268842478655282) + , (-1,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",5398651915196148301) + , (-1,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-4728180142880802131) + , (-1,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-6333202300103369538) + , (-1,"\119554\77896\1013193\33453\1043847\186975\190500",-7403614480414516014) + , (-1,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-1041691892360614675) + , (-1,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-1268114731274484579) + , (-1,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",4208984928184928810) + , (-1,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-1881857247479351647) + , (-1,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-3627260059796974547) + , (-1,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",6922843015501437672) + , (-1,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-2789116465972524797) + , (-1,"\1101165\1065365\46459\31391\151839\1102258",-7793809861652514846) + , (-1,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-8710375860203305925) + , (-1,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",4986201446651311902) + , (-1,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-6374368989521674284) + , (-1,"",6919028725695267695) + , (-1,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-3060817319261705778) + , (9223372036854775807,"",-2304343311159508113) + , (9223372036854775807,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-840799426818587220) + , (9223372036854775807,"\1102688\199297\1059448\194589\2419",-5176666667252385270) + , (9223372036854775807,"\156817\190426",-5047103194376120526) + , (9223372036854775807,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-3824720121658627507) + , (9223372036854775807,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",4495191893973973677) + , (9223372036854775807,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",2890169736751406270) + , (9223372036854775807,"\119554\77896\1013193\33453\1043847\186975\190500",1819757556440259794) + , (9223372036854775807,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",8181680144494161133) + , (9223372036854775807,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",7955257305580291229) + , (9223372036854775807,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-5014387108669846998) + , (9223372036854775807,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",7341514789375424161) + , (9223372036854775807,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",5596111977057801261) + , (9223372036854775807,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-2300529021353338136) + , (9223372036854775807,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",6434255570882251011) + , (9223372036854775807,"\1101165\1065365\46459\31391\151839\1102258",1429562175202260962) + , (9223372036854775807,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",512996176651469883) + , (9223372036854775807,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-4237170590203463906) + , (9223372036854775807,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",2849003047333101524) + , (9223372036854775807,"",-2304343311159508113) + , (9223372036854775807,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",6162554717593070030) + , (9223372036854775806,"",4614685414535759582) + , (9223372036854775806,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-8201415672840076643) + , (9223372036854775806,"\1102688\199297\1059448\194589\2419",-222356429172314025) + , (9223372036854775806,"\156817\190426",679836450961332571) + , (9223372036854775806,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",3251608329507143660) + , (9223372036854775806,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",2207846435369913952) + , (9223372036854775806,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-6009007933929081445) + , (9223372036854775806,"\119554\77896\1013193\33453\1043847\186975\190500",-3366542813419657861) + , (9223372036854775806,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-4026499655343320652) + , (9223372036854775806,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",3908355778950014840) + , (9223372036854775806,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-1782807446188350097) + , (9223372036854775806,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",1073002268010724264) + , (9223372036854775806,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",7612368434769202584) + , (9223372036854775806,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",9064442209670988969) + , (9223372036854775806,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",2830678919577904190) + , (9223372036854775806,"\1101165\1065365\46459\31391\151839\1102258",6546144649731138503) + , (9223372036854775806,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",7809311894524137102) + , (9223372036854775806,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-1629739786236295657) + , (9223372036854775806,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-4123973079810642691) + , (9223372036854775806,"",4614685414535759582) + , (9223372036854775806,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",808143268113382979) + , (-9223372036854775808,"",-9223372036854775808) + , (-9223372036854775808,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",4712167058428917635) + , (-9223372036854775808,"\1102688\199297\1059448\194589\2419",5868741564311080221) + , (-9223372036854775808,"\156817\190426",8140723844429592197) + , (-9223372036854775808,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",2619358867440093638) + , (-9223372036854775808,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-8842735231182307462) + , (-9223372036854775808,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-8500044840644021931) + , (-9223372036854775808,"\119554\77896\1013193\33453\1043847\186975\190500",-779636499271327171) + , (-9223372036854775808,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-9130694755011839194) + , (-9223372036854775808,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-1428559158708829034) + , (-9223372036854775808,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-4483593229224767303) + , (-9223372036854775808,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-5671086445397760398) + , (-9223372036854775808,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-3841863642655150462) + , (-9223372036854775808,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",7244230880538193707) + , (-9223372036854775808,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",542520816700394168) + , (-9223372036854775808,"\1101165\1065365\46459\31391\151839\1102258",-4293535246023395719) + , (-9223372036854775808,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",2363206156144149672) + , (-9223372036854775808,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",1779829004565335985) + , (-9223372036854775808,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",7035686697005368547) + , (-9223372036854775808,"",-9223372036854775808) + , (-9223372036854775808,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-1022590758010385963) + , (-9223372036854775807,"",2304343311159508113) + , (-9223372036854775807,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",6800260354074788986) + , (-9223372036854775807,"\1102688\199297\1059448\194589\2419",-8161551114533976400) + , (-9223372036854775807,"\156817\190426",-6427825684813381876) + , (-9223372036854775807,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",4927828045917454287) + , (-9223372036854775807,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-1740492645709299377) + , (-9223372036854775807,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-1226648435180472616) + , (-9223372036854775807,"\119554\77896\1013193\33453\1043847\186975\190500",3215155710602399268) + , (-9223372036854775807,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",4663239694317238775) + , (-9223372036854775807,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",376199242126275459) + , (-9223372036854775807,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-4843469655079774500) + , (-9223372036854775807,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-2847481626680726325) + , (-9223372036854775807,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",7728204594413334055) + , (-9223372036854775807,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",4381659550736993482) + , (-9223372036854775807,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-4665564431045241619) + , (-9223372036854775807,"\1101165\1065365\46459\31391\151839\1102258",-4629445744879967204) + , (-9223372036854775807,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-3828553013683016147) + , (-9223372036854775807,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-2506880873537321864) + , (-9223372036854775807,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",526859580426555890) + , (-9223372036854775807,"",2304343311159508113) + , (-9223372036854775807,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",4294562893288378984) + , (2567445505541745260,"",-8973281124039502036) + , (2567445505541745260,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-5019852903572679561) + , (2567445505541745260,"\1102688\199297\1059448\194589\2419",-7208077133870476615) + , (2567445505541745260,"\156817\190426",-3007724968096673167) + , (2567445505541745260,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-5893816153161094646) + , (2567445505541745260,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-4278427873732749058) + , (2567445505541745260,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-6070966756205895239) + , (2567445505541745260,"\119554\77896\1013193\33453\1043847\186975\190500",-6551383465974062719) + , (2567445505541745260,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",3411682393183206122) + , (2567445505541745260,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-1614092829309524158) + , (2567445505541745260,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-5515321653940848843) + , (2567445505541745260,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",371252513287571494) + , (2567445505541745260,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",2611341013092371262) + , (2567445505541745260,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",3536902445211856847) + , (2567445505541745260,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",1362081240233032260) + , (2567445505541745260,"\1101165\1065365\46459\31391\151839\1102258",4969843299213411757) + , (2567445505541745260,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",1768493420015008532) + , (2567445505541745260,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",9220165516938848037) + , (2567445505541745260,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",2351499928879290815) + , (2567445505541745260,"",-8973281124039502036) + , (2567445505541745260,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",3090329753212038281) + , (4083231397459745842,"",6998037268804005970) + , (4083231397459745842,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",4559507066426406585) + , (4083231397459745842,"\1102688\199297\1059448\194589\2419",-6412380092564071685) + , (4083231397459745842,"\156817\190426",-5717927957052315889) + , (4083231397459745842,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-6620475902374384104) + , (4083231397459745842,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",6814559498039844572) + , (4083231397459745842,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-5002133950908895033) + , (4083231397459745842,"\119554\77896\1013193\33453\1043847\186975\190500",-2649998486734164345) + , (4083231397459745842,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-8650134822263730864) + , (4083231397459745842,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-4403629689780811908) + , (4083231397459745842,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-2231766246098121357) + , (4083231397459745842,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-6325204497678105068) + , (4083231397459745842,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-1156363703007144980) + , (4083231397459745842,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",2963606504783269269) + , (4083231397459745842,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",896408042479934786) + , (4083231397459745842,"\1101165\1065365\46459\31391\151839\1102258",-1556399478435782285) + , (4083231397459745842,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-5776351357427646046) + , (4083231397459745842,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",5514916349267431635) + , (4083231397459745842,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-2873974960335903791) + , (4083231397459745842,"",6998037268804005970) + , (4083231397459745842,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-4379992278844039745) + , (-6865757387616483504,"",5749763000999208016) + , (-6865757387616483504,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",7966224508523535123) + , (-6865757387616483504,"\1102688\199297\1059448\194589\2419",-514913694744784755) + , (-6865757387616483504,"\156817\190426",967680389140777365) + , (-6865757387616483504,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",3722581543202990742) + , (-6865757387616483504,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-7180757606485975862) + , (-6865757387616483504,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",2536788559722322661) + , (-6865757387616483504,"\119554\77896\1013193\33453\1043847\186975\190500",-3105897856032388691) + , (-6865757387616483504,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-4283384834141889738) + , (-6865757387616483504,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",4464095159549828006) + , (-6865757387616483504,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",415113444299928329) + , (-6865757387616483504,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",964896690956233314) + , (-6865757387616483504,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-6767414742724212654) + , (-6865757387616483504,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",4480709310883626875) + , (-6865757387616483504,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-5661536467210228216) + , (-6865757387616483504,"\1101165\1065365\46459\31391\151839\1102258",8397231910170557001) + , (-6865757387616483504,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",1316595300565485912) + , (-6865757387616483504,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-8854239135376890367) + , (-6865757387616483504,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",7711309790633829843) + , (-6865757387616483504,"",5749763000999208016) + , (-6865757387616483504,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-6066580578782561563) + , (-861683380996470009,"",3379180533572133623) + , (-861683380996470009,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",97368493776362276) + , (-861683380996470009,"\1102688\199297\1059448\194589\2419",6728395480661927666) + , (-861683380996470009,"\156817\190426",-6292489051873184342) + , (-861683380996470009,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-204750749880052475) + , (-861683380996470009,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",2947910688678328885) + , (-861683380996470009,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-4444391976287779642) + , (-861683380996470009,"\119554\77896\1013193\33453\1043847\186975\190500",-6870587279148406982) + , (-861683380996470009,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-5111291729295693339) + , (-861683380996470009,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",9158313253926696245) + , (-861683380996470009,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-4067495346121536590) + , (-861683380996470009,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",2105558532307103465) + , (-861683380996470009,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",1844761047747000517) + , (-861683380996470009,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",971371692892481696) + , (-861683380996470009,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-7021345113509965029) + , (-861683380996470009,"\1101165\1065365\46459\31391\151839\1102258",6356273127991637994) + , (-861683380996470009,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-4699834946565145117) + , (-861683380996470009,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",1591796524354329990) + , (-861683380996470009,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",1508273990859252204) + , (-861683380996470009,"",3379180533572133623) + , (-861683380996470009,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",4815999364086917846) + , (-8470469552102498776,"",-7931260693702413144) + , (-8470469552102498776,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-6542746475159310501) + , (-8470469552102498776,"\1102688\199297\1059448\194589\2419",-2214809020844497531) + , (-8470469552102498776,"\156817\190426",7980197956110950685) + , (-8470469552102498776,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",6111838916910734398) + , (-8470469552102498776,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",-7738220361701454494) + , (-8470469552102498776,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-5735003200891788899) + , (-8470469552102498776,"\119554\77896\1013193\33453\1043847\186975\190500",-3519050655046600347) + , (-8470469552102498776,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-4013854094582207426) + , (-8470469552102498776,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-8854485736837278834) + , (-8470469552102498776,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",5865561140841168257) + , (-8470469552102498776,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-3332058339624326950) + , (-8470469552102498776,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-9026352261162848806) + , (-8470469552102498776,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-2945916871690633469) + , (-8470469552102498776,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-840344723970959760) + , (-8470469552102498776,"\1101165\1065365\46459\31391\151839\1102258",-4934242280890438079) + , (-8470469552102498776,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",9105743444619198832) + , (-8470469552102498776,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",2495103103946012537) + , (-8470469552102498776,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",3465061007273495579) + , (-8470469552102498776,"",-7931260693702413144) + , (-8470469552102498776,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",550710482074909533) + , (923704023541552544,"",7964894395160379296) + , (923704023541552544,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",-2652095365434986013) + , (923704023541552544,"\1102688\199297\1059448\194589\2419",5899552003619239549) + , (923704023541552544,"\156817\190426",6972220926286165797) + , (923704023541552544,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-5896375047922207322) + , (923704023541552544,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",5592253557311079386) + , (923704023541552544,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-6283636417572722571) + , (923704023541552544,"\119554\77896\1013193\33453\1043847\186975\190500",-6863335899509409827) + , (923704023541552544,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",3519607606796215302) + , (923704023541552544,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-8059993885305630282) + , (923704023541552544,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-6086445792613426727) + , (923704023541552544,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",4680970043540862162) + , (923704023541552544,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",5532599163463931106) + , (923704023541552544,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",6816796336710943115) + , (923704023541552544,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-2782163324047748776) + , (923704023541552544,"\1101165\1065365\46459\31391\151839\1102258",7234490267267484505) + , (923704023541552544,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-7083595164106768696) + , (923704023541552544,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",1282614925585881041) + , (923704023541552544,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-6393338824891521213) + , (923704023541552544,"",7964894395160379296) + , (923704023541552544,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",-3538326482102473483) + , (-2001408171881714643,"",2872025573219635581) + , (-2001408171881714643,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",2407605439539834414) + , (-2001408171881714643,"\1102688\199297\1059448\194589\2419",2648663956270167452) + , (-2001408171881714643,"\156817\190426",8620824383112411128) + , (-2001408171881714643,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-6483393822379410749) + , (-2001408171881714643,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",7973698990349828595) + , (-2001408171881714643,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",4743035601005028236) + , (-2001408171881714643,"\119554\77896\1013193\33453\1043847\186975\190500",-4671377800334721464) + , (-2001408171881714643,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",-6505780259447457893) + , (-2001408171881714643,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",4685474937481693743) + , (-2001408171881714643,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-6950049178825751720) + , (-2001408171881714643,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",4701809913912416383) + , (-2001408171881714643,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-8821540423684456109) + , (-2001408171881714643,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",-4638728868888943218) + , (-2001408171881714643,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-2097231782940480999) + , (-2001408171881714643,"\1101165\1065365\46459\31391\151839\1102258",8047125673155899104) + , (-2001408171881714643,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",1548097885216656873) + , (-2001408171881714643,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",5057920417666661644) + , (-2001408171881714643,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-3038995388462926674) + , (-2001408171881714643,"",2872025573219635581) + , (-2001408171881714643,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",7041962349741989628) + , (-4167309968479344909,"",-434861780140325981) + , (-4167309968479344909,"\9689\98128\51736\991113\1070904\149531\189503\16294\100491\1058081\155949\185809\1048642\1019768\118717\33937\158237\1066004\1040155",2697803135782019944) + , (-4167309968479344909,"\1102688\199297\1059448\194589\2419",2243534137146683518) + , (-4167309968479344909,"\156817\190426",-8637781910467090458) + , (-4167309968479344909,"\188170\1072096\986831\62300\1112379\174246\52198\180136\198334\22379\14116\72739\1067263\24731\1079007\19584\46378\1112453\9003\65870\170258\49533\1093133\1039300\1109206\1078028",-1564378897087048375) + , (-4167309968479344909,"\1037779\1031619\1052342\151769\164794\38142\97711\161845\1024776\1094603\67129\171743\1021124\143177\64915\991223\1009662\1012338\22417\99668\170039\200684",2547431797799529321) + , (-4167309968479344909,"\25200\111288\1007325\1063954\169614\153831\1066655\37802\1062545\1011878\1081560\993075",-8236315160148106438) + , (-4167309968479344909,"\119554\77896\1013193\33453\1043847\186975\190500",4806103614960707998) + , (-4167309968479344909,"\40108\200120\78595\26287\990409\200332\999195\137768\1083133\1077118\1010668\50534\199405\197406\1029652\63411\1017799\1038401\986811\186245\39778\1066789\136998\1023276\1098512",62321953481587689) + , (-4167309968479344909,"\987017\1012743\138339\77956\18595\147958\10081\100365\170385",-6209375368518594879) + , (-4167309968479344909,"\58837\988730\1080364\22563\984205\100784\164262\203456\42145\1093458\1082276\1059450\28105\163149\992690\1010450\47439\1095915\1048492\1025981",-3643136621504758770) + , (-4167309968479344909,"\96418\174982\1084062\1101144\154694\989969\203116\18004\156275\190684\1041184\160427\1090005\1032138\1030881\1081267\1009644\1011460\72709\95619\991759\996747\155624\24046\164508\994933",-828636576862852979) + , (-4167309968479344909,"\1045330\1073000\199226\994375\1054873\97265\190861\1085358\1047737\59173\13623\1099662\1040413\178605\1111640\194748\1003164\994594\159088\1112144\1062886\201439\143235\62523\1092782\162730\1100735\10907\1043435\1015502",-8262730219632586895) + , (-4167309968479344909,"\4194\1047587\1017069\987735\1081933\988783\1054268\1046161\1008516\34524\43459\1011807\1113613\1068492\1107468",5768047886954715796) + , (-4167309968479344909,"\1088717\42285\95114\59535\1070826\120291\7280\26210\137230\64648\1088498\162153\26621\1062834\986943\161094\992880\1016597\174437\1045670\157041\149925\49484\146362\128744\1106085\1001433\179727",-731986772569291225) + , (-4167309968479344909,"\1101165\1065365\46459\31391\151839\1102258",4418874046276415070) + , (-4167309968479344909,"\1072854\1035624\164075\5853\78232\13547\41677\39203\165900\38889\157437\1067079\26196\159014\47826\1007306\1069488\1016516\987002\204761\186711\185887\45253\15200",-6113383490374233441) + , (-4167309968479344909,"\1012274\1046251\152766\179260\49803\1011676\14089\1081205\171462\98487\34729\1048101\199380\36406\1048873\97237\128005\26177",-5935780427032604134) + , (-4167309968479344909,"\1110624\5629\1076531\1100145\44738\140959\1662\133283\96703\97997\32925\1064752\1098119\993217\99159\1103376\22367\176968\168837\1052251\31622\167699\1005651\994686\30021\1008065\1043713\1023333\988458",-1838862560038145368) + , (-4167309968479344909,"",-434861780140325981) + , (-4167309968479344909,"\94692\1001770\1068613\100980\187068\37793\118841\1002744\57381\62122\95536",4445697483044833738) + ] + +-- | Test vectors that were generated with hashable-1.4.4.0. +-- +-- format: @(s, a, hashWithSalt s a)@ +-- +byteStringVectors :: [(Int64, B.ByteString, Int64)] +byteStringVectors = + [ (0,"",0) + , (0,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",3396975864343307775) + , (0,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-7910908584222458146) + , (0,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",2619022938236560238) + , (0,"\173\248\ENQ\220\180AXV",-3690339004144559881) + , (0,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",6738322503602394986) + , (0,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",583336850928763904) + , (0,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-608813215305898180) + , (0,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",819661719629894710) + , (0,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-3933071113963127665) + , (0,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",8733577553382919031) + , (0,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-4616634763292585752) + , (0,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",5143979773591562688) + , (0,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",6748363364349037679) + , (0,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",6683946326561173579) + , (1,"",-6919028725695267695) + , (1,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",5086878066974440444) + , (1,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",4415940233182912415) + , (1,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-692820900954492571) + , (1,"\173\248\ENQ\220\180AXV",7269485440679907206) + , (1,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-6684518914725539033) + , (1,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",7816058062435838845) + , (1,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",5583355108678216463) + , (1,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-3863624495704894907) + , (1,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",7132349358339656506) + , (1,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",3380675918781466582) + , (1,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-1318312485239601799) + , (1,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",9027676340878985161) + , (1,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-835742950057084320) + , (1,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",1041069892123313950) + , (-1,"",6919028725695267695) + , (-1,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-6331222259092270414) + , (-1,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-5427281334903452027) + , (-1,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",6460721304056862259) + , (-1,"\173\248\ENQ\220\180AXV",3880965351586369496) + , (-1,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-2124853771127384555) + , (-1,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",728050402014146875) + , (-1,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-5331650886319062183) + , (-1,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-5427907806531672537) + , (-1,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",679076150949463300) + , (-1,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-6387705325514779684) + , (-1,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-4832653203331316397) + , (-1,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-1726260998533301181) + , (-1,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-2738113204672478750) + , (-1,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-6308648907222534004) + , (9223372036854775807,"",-2304343311159508113) + , (9223372036854775807,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",2892149777762505394) + , (9223372036854775807,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",3796090701951323781) + , (9223372036854775807,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-2762650732797913549) + , (9223372036854775807,"\173\248\ENQ\220\180AXV",-5342406685268406312) + , (9223372036854775807,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",7098518265727391253) + , (9223372036854775807,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-8495321634840628933) + , (9223372036854775807,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",3891721150535713625) + , (9223372036854775807,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",3795464230323103271) + , (9223372036854775807,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-8544295885905312508) + , (9223372036854775807,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",2835666711339996124) + , (9223372036854775807,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",4390718833523459411) + , (9223372036854775807,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",7497111038321474627) + , (9223372036854775807,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",6485258832182297058) + , (9223372036854775807,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",2914723129632241804) + , (9223372036854775806,"",4614685414535759582) + , (9223372036854775806,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-4708939591320894163) + , (9223372036854775806,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-4827985087286947100) + , (9223372036854775806,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",5648419161513717564) + , (9223372036854775806,"\173\248\ENQ\220\180AXV",-8442510237218620175) + , (9223372036854775806,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-251917489978687848) + , (9223372036854775806,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-8258935130472395642) + , (9223372036854775806,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",5273625216661158054) + , (9223372036854775806,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-675665666331325384) + , (9223372036854775806,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",946521329389776217) + , (9223372036854775806,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",4720251418579643469) + , (9223372036854775806,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-7950742633555076910) + , (9223372036854775806,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",1201394763284793802) + , (9223372036854775806,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",5025602323517004769) + , (9223372036854775806,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",1609720504451236009) + , (-9223372036854775808,"",-9223372036854775808) + , (-9223372036854775808,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-5826396172511468033) + , (-9223372036854775808,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",1312463452632317662) + , (-9223372036854775808,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-6604349098618215570) + , (-9223372036854775808,"\173\248\ENQ\220\180AXV",5533033032710215927) + , (-9223372036854775808,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-2485049533252380822) + , (-9223372036854775808,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-8640035185926011904) + , (-9223372036854775808,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",8614558821548877628) + , (-9223372036854775808,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-8403710317224881098) + , (-9223372036854775808,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",5290300922891648143) + , (-9223372036854775808,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-489794483471856777) + , (-9223372036854775808,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",4606737273562190056) + , (-9223372036854775808,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-4079392263263213120) + , (-9223372036854775808,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-2475008672505738129) + , (-9223372036854775808,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-2539425710293602229) + , (-9223372036854775807,"",2304343311159508113) + , (-9223372036854775807,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-4136493969880335364) + , (-9223372036854775807,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-4807431803671863393) + , (-9223372036854775807,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",8530551135900283237) + , (-9223372036854775807,"\173\248\ENQ\220\180AXV",-1953886596174868602) + , (-9223372036854775807,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",2538853122129236775) + , (-9223372036854775807,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-1407313974418936963) + , (-9223372036854775807,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-3640016928176559345) + , (-9223372036854775807,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",5359747541149880901) + , (-9223372036854775807,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-2091022678515119302) + , (-9223372036854775807,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-5842696118073309226) + , (-9223372036854775807,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",7905059551615174009) + , (-9223372036854775807,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-195695695975790647) + , (-9223372036854775807,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",8387629086797691488) + , (-9223372036854775807,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-8182302144731461858) + , (2567445505541745260,"",-8973281124039502036) + , (2567445505541745260,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-8729363077825257405) + , (2567445505541745260,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-4947683817610274926) + , (2567445505541745260,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-8588532555962088174) + , (2567445505541745260,"\173\248\ENQ\220\180AXV",-8358438869408056517) + , (2567445505541745260,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",6099763535768300310) + , (2567445505541745260,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",1857025553348949668) + , (2567445505541745260,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",8333525833594389208) + , (2567445505541745260,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-2581301877393464110) + , (2567445505541745260,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",3897537177021385627) + , (2567445505541745260,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",883527877534820363) + , (2567445505541745260,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",4283362440199397212) + , (2567445505541745260,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",1364476060329840276) + , (2567445505541745260,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",3440754850238966067) + , (2567445505541745260,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-5436707564945997697) + , (4083231397459745842,"",6998037268804005970) + , (4083231397459745842,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-5961798221916957799) + , (4083231397459745842,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",6286051642738873440) + , (4083231397459745842,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-6155573351161175896) + , (4083231397459745842,"\173\248\ENQ\220\180AXV",-5422995894831892003) + , (4083231397459745842,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",3034997357661614092) + , (4083231397459745842,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-4729200859161185870) + , (4083231397459745842,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-8724374544029983494) + , (4083231397459745842,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-2563007238771049268) + , (4083231397459745842,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-3795965889910219219) + , (4083231397459745842,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-2109160044605487015) + , (4083231397459745842,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",8411738215213381982) + , (4083231397459745842,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",6283616749495817030) + , (4083231397459745842,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-1713164945410422883) + , (4083231397459745842,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-5349126567814071131) + , (-6865757387616483504,"",5749763000999208016) + , (-6865757387616483504,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",5466013460225922511) + , (-6865757387616483504,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",9037091196449077518) + , (-6865757387616483504,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-7959062529752730658) + , (-6865757387616483504,"\173\248\ENQ\220\180AXV",-4541551292091986649) + , (-6865757387616483504,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",3713356507412182394) + , (-6865757387616483504,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-2843175611741977840) + , (-6865757387616483504,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",8786603388517150508) + , (-6865757387616483504,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-8150483613967427354) + , (-6865757387616483504,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",6130088601594062623) + , (-6865757387616483504,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",8003328094034754887) + , (-6865757387616483504,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",1197294320375308664) + , (-6865757387616483504,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-1836834143021770768) + , (-6865757387616483504,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-1433116377848117409) + , (-6865757387616483504,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",1990858141360590619) + ] + +-- | Test vectors that were generated with hashable-1.4.4.0. +-- +-- format: @(s, a, hashWithSalt s a)@ +-- +lazyByteStringVectors :: [(Int64, BL.ByteString, Int64)] +lazyByteStringVectors = + [ (0,"",0) + , (0,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",5202229522050138397) + , (0,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-7360167781308263042) + , (0,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-5249094830452779164) + , (0,"\173\248\ENQ\220\180AXV",-7610396048170458249) + , (0,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-2383924405813106022) + , (0,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",6329525749498076112) + , (0,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",4971185255312458790) + , (0,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",4274428390219177336) + , (0,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",2912337484758971887) + , (0,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",5074828471366827815) + , (0,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",5768758103689791020) + , (0,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",6675048800584405252) + , (0,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-4157063472115487923) + , (0,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",7249163452088168859) + , (1,"",-6919028725695267695) + , (1,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",9193109475799789210) + , (1,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-9063839383687003521) + , (1,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",8663519985558103903) + , (1,"\173\248\ENQ\220\180AXV",3610996956396136326) + , (1,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-3002394056785533233) + , (1,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",6927824606879721661) + , (1,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",4250306378764142057) + , (1,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",4015682665697215879) + , (1,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-5308881808106259046) + , (1,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",4168220015911644822) + , (1,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-7670240678028478403) + , (1,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-2345103318775787491) + , (1,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-6463120117890581586) + , (1,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",6113601762493282862) + , (-1,"",6919028725695267695) + , (-1,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-1863481495314575328) + , (-1,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-479109214050955163) + , (-1,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-5150616385272947683) + , (-1,"\173\248\ENQ\220\180AXV",521137700843746552) + , (-1,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-1637647901583100571) + , (-1,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",8453048126611542251) + , (-1,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",5882130243350183763) + , (-1,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",2117336615512634281) + , (-1,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",965866977741093348) + , (-1,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",2798624514428849156) + , (-1,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",7131261317574174223) + , (-1,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-7399101161819833641) + , (-1,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",3062581805124149152) + , (-1,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",4023798013338696460) + , (9223372036854775807,"",-2304343311159508113) + , (9223372036854775807,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",7359890541540200480) + , (9223372036854775807,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",8744262822803820645) + , (9223372036854775807,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",4072755651581828125) + , (9223372036854775807,"\173\248\ENQ\220\180AXV",-8702234336011029256) + , (9223372036854775807,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",7585724135271675237) + , (9223372036854775807,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-770323910243233557) + , (9223372036854775807,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-3341241793504592045) + , (9223372036854775807,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-7106035421342141527) + , (9223372036854775807,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-8257505059113682460) + , (9223372036854775807,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-6424747522425926652) + , (9223372036854775807,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-2092110719280601585) + , (9223372036854775807,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",1824270875034942167) + , (9223372036854775807,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-6160790231730626656) + , (9223372036854775807,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-5199574023516079348) + , (9223372036854775806,"",4614685414535759582) + , (9223372036854775806,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",5759289318782266835) + , (9223372036854775806,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-5316560833935596124) + , (9223372036854775806,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",5937618914918951266) + , (9223372036854775806,"\173\248\ENQ\220\180AXV",1318732665673450049) + , (9223372036854775806,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",5596179971892389408) + , (9223372036854775806,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-4036784629168050426) + , (9223372036854775806,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",6709414193990149920) + , (9223372036854775806,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-6825136848022241222) + , (9223372036854775806,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-4570461268645160599) + , (9223372036854775806,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-3329299414990246907) + , (9223372036854775806,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-1940506884057529042) + , (9223372036854775806,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-1921070954985904498) + , (9223372036854775806,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",9063804361311868815) + , (9223372036854775806,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",8285953773370528201) + , (-9223372036854775808,"",-9223372036854775808) + , (-9223372036854775808,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-4021142514804637411) + , (-9223372036854775808,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",1863204255546512766) + , (-9223372036854775808,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",3974277206401996644) + , (-9223372036854775808,"\173\248\ENQ\220\180AXV",1612975988684317559) + , (-9223372036854775808,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",6839447631041669786) + , (-9223372036854775808,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-2893846287356699696) + , (-9223372036854775808,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-4252186781542317018) + , (-9223372036854775808,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-4948943646635598472) + , (-9223372036854775808,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-6311034552095803921) + , (-9223372036854775808,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-4148543565487947993) + , (-9223372036854775808,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-3454613933164984788) + , (-9223372036854775808,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-2548323236270370556) + , (-9223372036854775808,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",5066308564739287885) + , (-9223372036854775808,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-1974208584766606949) + , (-9223372036854775807,"",2304343311159508113) + , (-9223372036854775807,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-30262561054986598) + , (-9223372036854775807,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",159532653167772287) + , (-9223372036854775807,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-559852051296671905) + , (-9223372036854775807,"\173\248\ENQ\220\180AXV",-5612375080458639482) + , (-9223372036854775807,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",6220977980069242575) + , (-9223372036854775807,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-2295547429975054147) + , (-9223372036854775807,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-4973065658090633751) + , (-9223372036854775807,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-5207689371157559929) + , (-9223372036854775807,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",3914490228748516762) + , (-9223372036854775807,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-5055152020943130986) + , (-9223372036854775807,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",1553131358826297405) + , (-9223372036854775807,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",6878268718078988317) + , (-9223372036854775807,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",2760251918964194222) + , (-9223372036854775807,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-3109770274361492946) + , (2567445505541745260,"",-8973281124039502036) + , (2567445505541745260,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-3832175009319873679) + , (2567445505541745260,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-5746309865116152430) + , (2567445505541745260,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-1364180761613509896) + , (2567445505541745260,"\173\248\ENQ\220\180AXV",2164886421674147675) + , (2567445505541745260,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-8402506842927166426) + , (2567445505541745260,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",5138534367685989796) + , (2567445505541745260,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",7122152202296877282) + , (2567445505541745260,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",1281212039237608644) + , (2567445505541745260,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",5206903296826712939) + , (2567445505541745260,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",4711259184035427579) + , (2567445505541745260,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-3991683819904808704) + , (2567445505541745260,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",704005909986888584) + , (2567445505541745260,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-3849094703517425007) + , (2567445505541745260,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",7845947466567272287) + , (4083231397459745842,"",6998037268804005970) + , (4083231397459745842,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",8695279503304096607) + , (4083231397459745842,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-5068876109820376656) + , (4083231397459745842,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",6539507496971963422) + , (4083231397459745842,"\173\248\ENQ\220\180AXV",-6670761422321733907) + , (4083231397459745842,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-5493874697680012236) + , (4083231397459745842,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",9072518842541127938) + , (4083231397459745842,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",7004031231155210292) + , (4083231397459745842,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",7915491022540944302) + , (4083231397459745842,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",4814316089084150765) + , (4083231397459745842,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-5211470361954706047) + , (4083231397459745842,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",2897866249706881818) + , (4083231397459745842,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",7282604834993926634) + , (4083231397459745842,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-6529232896057244373) + , (4083231397459745842,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",4918770838998094309) + , (-6865757387616483504,"",5749763000999208016) + , (-6865757387616483504,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-7933467163971766995) + , (-6865757387616483504,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",6311308515340471726) + , (-6865757387616483504,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-2949872287932542316) + , (-6865757387616483504,"\173\248\ENQ\220\180AXV",4739555687547774759) + , (-6865757387616483504,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",6517539610781133994) + , (-6865757387616483504,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",3989228292465715680) + , (-6865757387616483504,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-4524779499902504490) + , (-6865757387616483504,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-3869311248056391000) + , (-6865757387616483504,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",4470926944036524031) + , (-6865757387616483504,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-2990268420341148169) + , (-6865757387616483504,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-5374076622520855236) + , (-6865757387616483504,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",2966316597986253044) + , (-6865757387616483504,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-6606691798136161411) + , (-6865757387616483504,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-7881820091662314453) + ] + +-- | Test vectors that were generated with hashable-1.4.4.0. +-- +-- format: @(s, a, hashWithSalt s a)@ +-- +shortByteStringVectors :: [(Int64, BS.ShortByteString, Int64)] +shortByteStringVectors = + [ (0,"",0) + , (0,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",3396975864343307775) + , (0,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-7910908584222458146) + , (0,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",2619022938236560238) + , (0,"\173\248\ENQ\220\180AXV",-3690339004144559881) + , (0,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",6738322503602394986) + , (0,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",583336850928763904) + , (0,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-608813215305898180) + , (0,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",819661719629894710) + , (0,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-3933071113963127665) + , (0,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",8733577553382919031) + , (0,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-4616634763292585752) + , (0,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",5143979773591562688) + , (0,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",6748363364349037679) + , (0,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",6683946326561173579) + , (1,"",-6919028725695267695) + , (1,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",5086878066974440444) + , (1,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",4415940233182912415) + , (1,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-692820900954492571) + , (1,"\173\248\ENQ\220\180AXV",7269485440679907206) + , (1,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-6684518914725539033) + , (1,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",7816058062435838845) + , (1,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",5583355108678216463) + , (1,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-3863624495704894907) + , (1,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",7132349358339656506) + , (1,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",3380675918781466582) + , (1,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-1318312485239601799) + , (1,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",9027676340878985161) + , (1,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-835742950057084320) + , (1,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",1041069892123313950) + , (-1,"",6919028725695267695) + , (-1,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-6331222259092270414) + , (-1,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-5427281334903452027) + , (-1,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",6460721304056862259) + , (-1,"\173\248\ENQ\220\180AXV",3880965351586369496) + , (-1,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-2124853771127384555) + , (-1,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",728050402014146875) + , (-1,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-5331650886319062183) + , (-1,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-5427907806531672537) + , (-1,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",679076150949463300) + , (-1,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-6387705325514779684) + , (-1,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-4832653203331316397) + , (-1,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-1726260998533301181) + , (-1,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-2738113204672478750) + , (-1,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-6308648907222534004) + , (9223372036854775807,"",-2304343311159508113) + , (9223372036854775807,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",2892149777762505394) + , (9223372036854775807,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",3796090701951323781) + , (9223372036854775807,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-2762650732797913549) + , (9223372036854775807,"\173\248\ENQ\220\180AXV",-5342406685268406312) + , (9223372036854775807,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",7098518265727391253) + , (9223372036854775807,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-8495321634840628933) + , (9223372036854775807,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",3891721150535713625) + , (9223372036854775807,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",3795464230323103271) + , (9223372036854775807,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-8544295885905312508) + , (9223372036854775807,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",2835666711339996124) + , (9223372036854775807,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",4390718833523459411) + , (9223372036854775807,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",7497111038321474627) + , (9223372036854775807,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",6485258832182297058) + , (9223372036854775807,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",2914723129632241804) + , (9223372036854775806,"",4614685414535759582) + , (9223372036854775806,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-4708939591320894163) + , (9223372036854775806,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-4827985087286947100) + , (9223372036854775806,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",5648419161513717564) + , (9223372036854775806,"\173\248\ENQ\220\180AXV",-8442510237218620175) + , (9223372036854775806,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-251917489978687848) + , (9223372036854775806,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-8258935130472395642) + , (9223372036854775806,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",5273625216661158054) + , (9223372036854775806,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-675665666331325384) + , (9223372036854775806,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",946521329389776217) + , (9223372036854775806,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",4720251418579643469) + , (9223372036854775806,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",-7950742633555076910) + , (9223372036854775806,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",1201394763284793802) + , (9223372036854775806,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",5025602323517004769) + , (9223372036854775806,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",1609720504451236009) + , (-9223372036854775808,"",-9223372036854775808) + , (-9223372036854775808,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-5826396172511468033) + , (-9223372036854775808,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",1312463452632317662) + , (-9223372036854775808,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-6604349098618215570) + , (-9223372036854775808,"\173\248\ENQ\220\180AXV",5533033032710215927) + , (-9223372036854775808,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",-2485049533252380822) + , (-9223372036854775808,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-8640035185926011904) + , (-9223372036854775808,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",8614558821548877628) + , (-9223372036854775808,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-8403710317224881098) + , (-9223372036854775808,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",5290300922891648143) + , (-9223372036854775808,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-489794483471856777) + , (-9223372036854775808,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",4606737273562190056) + , (-9223372036854775808,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-4079392263263213120) + , (-9223372036854775808,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-2475008672505738129) + , (-9223372036854775808,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-2539425710293602229) + , (-9223372036854775807,"",2304343311159508113) + , (-9223372036854775807,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-4136493969880335364) + , (-9223372036854775807,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-4807431803671863393) + , (-9223372036854775807,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",8530551135900283237) + , (-9223372036854775807,"\173\248\ENQ\220\180AXV",-1953886596174868602) + , (-9223372036854775807,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",2538853122129236775) + , (-9223372036854775807,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-1407313974418936963) + , (-9223372036854775807,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-3640016928176559345) + , (-9223372036854775807,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",5359747541149880901) + , (-9223372036854775807,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-2091022678515119302) + , (-9223372036854775807,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-5842696118073309226) + , (-9223372036854775807,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",7905059551615174009) + , (-9223372036854775807,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-195695695975790647) + , (-9223372036854775807,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",8387629086797691488) + , (-9223372036854775807,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-8182302144731461858) + , (2567445505541745260,"",-8973281124039502036) + , (2567445505541745260,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-8729363077825257405) + , (2567445505541745260,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",-4947683817610274926) + , (2567445505541745260,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-8588532555962088174) + , (2567445505541745260,"\173\248\ENQ\220\180AXV",-8358438869408056517) + , (2567445505541745260,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",6099763535768300310) + , (2567445505541745260,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",1857025553348949668) + , (2567445505541745260,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",8333525833594389208) + , (2567445505541745260,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-2581301877393464110) + , (2567445505541745260,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",3897537177021385627) + , (2567445505541745260,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",883527877534820363) + , (2567445505541745260,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",4283362440199397212) + , (2567445505541745260,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",1364476060329840276) + , (2567445505541745260,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",3440754850238966067) + , (2567445505541745260,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-5436707564945997697) + , (4083231397459745842,"",6998037268804005970) + , (4083231397459745842,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",-5961798221916957799) + , (4083231397459745842,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",6286051642738873440) + , (4083231397459745842,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-6155573351161175896) + , (4083231397459745842,"\173\248\ENQ\220\180AXV",-5422995894831892003) + , (4083231397459745842,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",3034997357661614092) + , (4083231397459745842,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-4729200859161185870) + , (4083231397459745842,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",-8724374544029983494) + , (4083231397459745842,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-2563007238771049268) + , (4083231397459745842,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",-3795965889910219219) + , (4083231397459745842,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",-2109160044605487015) + , (4083231397459745842,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",8411738215213381982) + , (4083231397459745842,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",6283616749495817030) + , (4083231397459745842,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-1713164945410422883) + , (4083231397459745842,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",-5349126567814071131) + , (-6865757387616483504,"",5749763000999208016) + , (-6865757387616483504,"s\248\153\148\SOH\253.\186\226\153\176s9i\242\179\229\FS\222\152\239\185gp\179\131 q\180q\222`S\"2\210\161<\208\229\211\244x(*\210d\SYN7\167\170CD\185\239\174i\SYN\136\213Ye/#E\DEL\176\177\DC3\234\252H\DC2\199\199\183\STX\STX\230\189\234\185\236>\251[Mc\195\230\SUB\175\SYNg\168;r\223\211\145\169.pq\SI\235\240\198\244h\SOH\194\255\214\230\252\236\NAKO\160\RS\219>Pj\149^\242O\174\SUB\250E\242 `\187\205U\163\193}\252M\187{\194N\\\226\214\204W\238^",5466013460225922511) + , (-6865757387616483504,"!\166\227\134xA\247\173\214 \NUL\204\137\231\GSF\162E\151[Ll9\187\143\170\254\US\145\186\221\196~\202\182\&1>a\147@\US\181~+\161\150\186P\253\135\194\251\240e\213\235\SYN\186\DC12s#i\DC2\243s\240U\201X0lr\190\153\&9^\252\181\141>-\207\138-\160!\253\ETX\129^rl:>)\167\144\"\157\196\207U\218c\174\245\170O8Y9@\203\SI\134:\246\219\n%z\246\136\DC16V{\224\145\173\183\177\255\239\181",9037091196449077518) + , (-6865757387616483504,"6:\247\227V\166\237\167+\229\230\142C\199\248\SI\226Y\NUL\246A\220\184\174\246\194\DC2\229^\ESC\FSm\n\242T\172T\174|{^ssJ\237zmt\236\238\129]Y\251\201J''w\214\US\NAKG~\210)\185\153\152|sJq\136n`u\NAK\190[\161\158\164\211\210\184De\RS\SYNM\182Q}H_\190\197r\182\188\152\231\223\143\163j\aE\145U\178\222\219\134\140\&7p}\a\RSF\FS\178}\229@\212\160\&0\SUB\153~\165\247U\161A\207\164\249\176 \223lP\218\185t,\133\252P",-7959062529752730658) + , (-6865757387616483504,"\173\248\ENQ\220\180AXV",-4541551292091986649) + , (-6865757387616483504,"\233\242\235&n+\155U\252\206)\193\190/\234!\"\181T\SOH\CAN\217c\169\138\200\212!\145\DLE)Z\190_\188\157\133\210\136\n\208f\237\t)/_\220\154\r\162Y\251\129s\146\EOT2\170\230z\133\187\f\ETXv\189\224N6\198\224A-\218)\239\249I\b\244\v9\180\160\201\218 \v\141\a\169\151 >\235\FS\230\180rS\151\193Vrt\221\162\231R\SYN>8\207\SYN\163/\168\164`6\246\SID\174\SIdW1}~\200\DC2c\164U\248\162,<}\163\158;\NUL\SYN%:\190\188\249\128p3\177\180w-\210\157\DC3\US\175\226\185\207_\164.n\236\&4\156\137\&3\233\240u\162\163\188g\177J\235b\217\GSF{\213\DC1`\133\221\&5\179\\+\131\ENQ*\ENQ\189",3713356507412182394) + , (-6865757387616483504,"\147\174\244|/\237\149J\234l\250\RS$\171\242\&3\144k.@\153A\211w\n&P\180R\222\229\138|\247\&1\148W{\SOHO$\245\185+\184}\243\236\&7:'\132O\247\201\FS\164R\179\146Hf\DEL8@\137\150\188\218q:[\217\212u\136\246\128\225\203K$\129ih\raG\CAN(\165\&5\ENQ\213\&2\194@\219\DLE\189x\ETX\v\252\n{y*\179\133k\222\&5s\227\DC3\221\151\f\244\171_\194\&6H\172,\154\230=\200'\245\221\RS\228",-2843175611741977840) + , (-6865757387616483504,"=0x\132 \199\192=t\r(\229V\186\250\ETB!\167\132\v \245-M\176L\205vK%\203\142e\128\162\178\NAK\191\212=\139\246\210\169\244\SI\149BA\137i\198x :/N#\189D\216\DEL\157\148\255y\":\253n\GS\158\226\v\155\142]\a\160D4V\160\133\t\238*pR\b\250\212Pg\195|\215\139\234\235I\228\DC3",8786603388517150508) + , (-6865757387616483504,"\215}\ETX\209\145A\192\241x+\227\140S\155U\196\211\182\238\223\231`N\252w\191\DC2\182\239C\155'RAJW|\186d\214\208\160\DC1O\SYN=G}\159N\137\DC3\239\ACK\199\152\154\165\t\141\223\177\142\RSi\238A\225\181{\SOH\206X\234\181\FS\249\ETB\209\215\150p\SI\SUB\STX\DEL\230.\133\167W\206\b\182\182\208\250=\182\181Z\233\&5\154Of\227=\EM\159\RS\198pB\\(-\DELK\236\171R\RS3\172\DEL\211\200\ETB\210\221\208e\151Rj\230\254n-\164\253\185",-8150483613967427354) + , (-6865757387616483504,"*@!\CAN\228>\152\191.coH\154\224l\222\&8\201\199Fd\RS/\DC1\200\EM\214\180\243g\185\&7\138\169}\DC3o\186\&7\189\217\201k\FS\182\237w\173\&2NI\237\216[\b\SOm\200I\206[\146Q\186V\CAN\210\SO\t\158lb1\210\235\STX\151\v\172\248L+\229TL\224\209BC\f\200\187\181\ETB\195\218\220i\214\&9Z\220\150\222",6130088601594062623) + , (-6865757387616483504,"\160\228\\\t\GSylY\204\131d\154\224\247\143\223\214\208)1Zn.\195.>|\199\147\150M\n\173'\SOH\212T\221s\ETXMs\ETB\210\225\&2\157\215\209\204\CAN\143x\182\143J&d\US\147\169\134z\182\170?\251\DC1\215]\132f#\251I\138\ACK\130*\225\185I\146\137\149e+\245\253sB\146\239\246\171a\141\245\&9\135n\181\192\DC42Q\253\212\248\&8H:\EM\145\230l\196f\177\175\184\132lG\242\214\253\163G\156\228\236g\227\183\DC2\137\&8Th\211V\SUB\233",8003328094034754887) + , (-6865757387616483504,"\234q\151\166x\212\214\158\179ii5_\199V\222\225d\213=_B\DC2\167l\252K\200\169N\GSh\147L5cFq\251\249\230\198M\152+[0\237\184\"\CAN\133\194\173l7\NAK\214(\138\223\246\201\223z\174#\DLE\DC4Y\FS\241V$\211h\239\160|l\225\f\188\SUB}\235\143\SYN\t\139\240y\187WW\214\137\194\217\&4\NAK\158\205I\228\254%6\180B\a\SYN\255r\ESC\NAKd;\DC1\215\151\135?\195\177\207\SOHbm\137]t\220j\147\141\229$N\136\222\FS\167\136`r\254\140(\140\203KR\193\191\196\131\GS\ETX\170\184\170",1197294320375308664) + , (-6865757387616483504,"*\186{PS\180\208\&4\173|\239\EOTlj2\208\248\240Q'\229\ETBi\EM)\192\132\169s\244D=xU\ETB*d\152LJ>\179\174\&7\131\155\&0",-1836834143021770768) + , (-6865757387616483504,"\228\RS\178\171\222}\180[\158S#|u\151\SUBF\t\179[:\181\224J\235\224e\152\237\204E\177\145*%5j\196\160\NAKR\213\ACK{\248\193\173\\\243\211\231\&5V\233\NULX\129\194\188PBA9\212\NUL2\DLE\154$\172T1yY\251M5\218\211Hd\163\164\255\226+\140\173\172\231i\172\200\ETX\246t",-1433116377848117409) + , (-6865757387616483504,"\170~\149\146qL8\227!k\SI\138\173nO\209\160\247\230\240\&0\SI\174\231\244\130;\\\239Qy\237\188\\m\242L\DC2P\244L\US'\194~%\140\DC4\162\t\133\159y\138\175?U7,J\173\246\133\226\NAK'\190\182p\226\&8\243\232\234\EM\203\172\a\178\251\211\173\204\238t.<\188\196\203\ETX\144\217\190\197c=~J\165\ESC\131\ENQ\227\t\ETX\\\222\237>\168\NAK\ESC\SUB\DELFZ\153\NAK\224\GSM\CAN\206nF\202d,\144}M\197\GS\142aZ_\198\145\247w\186oN\197\237\139~\133\240I\SUB1\RS\US\168s\199\250tK\208\254\SOH56\164\240\251\202 3e!\202\166\238\146\&2Y\v\NULKw\254\224\ENQ\DC2:`\184\249\144V\252\b\175\159\DC4\173nhSh\\\SUB\DELO\255<\152\ACKu\129-",1990858141360590619) + ] diff --git a/tests/TypecheckSpec.hs b/tests/TypecheckSpec.hs index f86254a2f..f3efecc02 100644 --- a/tests/TypecheckSpec.hs +++ b/tests/TypecheckSpec.hs @@ -12,7 +12,6 @@ import Control.Lens import Control.Monad import Data.Default -import qualified Data.HashMap.Strict as HM import Data.Foldable import Data.Text (Text, take, unpack) import qualified Data.Set as Set @@ -27,6 +26,7 @@ import Pact.Runtime.Utils import Pact.Types.Pretty import qualified Data.Text as T import qualified Pact.Analyze.Check as Check +import qualified Pact.Utils.StableHashMap as SHM spec :: Spec spec = do @@ -112,7 +112,7 @@ checkFuns = describe "pact typecheck" $ do let mn = "tests/pact/tc.repl" -- runIO is needed here to construct the test tree (ModuleData _ m _) <- runIO $ inlineModuleData <$> loadModule mn "tctest" - forM_ (HM.toList m) $ \(fn,ref) -> do + forM_ (SHM.toList m) $ \(fn,ref) -> do let doTc = beforeAll (runTC 0 False (typecheckTopLevel ref)) n = asString mn <> "." <> fn when (take 3 fn == "tc-") $ @@ -143,7 +143,7 @@ loadModule fp mn = do Left e -> die def $ "Module not found: " ++ show (fp,mn,e) loadFun :: FilePath -> ModuleName -> Text -> IO Ref -loadFun fp mn fn = loadModule fp mn >>= \(inlineModuleData -> ModuleData _ m _) -> case HM.lookup fn m of +loadFun fp mn fn = loadModule fp mn >>= \(inlineModuleData -> ModuleData _ m _) -> case SHM.lookup fn m of Nothing -> die def $ "Function not found: " ++ show (fp,mn,fn) Just f -> return f