content: {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE GADTs #-}
  {-# LANGUAGE LambdaCase #-}
  {-# LANGUAGE OverloadedStrings #-}
  
  -- | This file is generated by "plutus-preprocessor:plutus-preprocessor"
  module Test.Cardano.Ledger.Plutus.Examples (
    alwaysSucceedsNoDatum,
    alwaysSucceedsWithDatum,
    alwaysFailsNoDatum,
    alwaysFailsWithDatum,
    redeemerSameAsDatum,
    evenDatum,
    evenRedeemerNoDatum,
    evenRedeemerWithDatum,
    purposeIsWellformedNoDatum,
    purposeIsWellformedWithDatum,
    datumIsWellformed,
    inputsOutputsAreNotEmptyNoDatum,
    inputsOutputsAreNotEmptyWithDatum,
    inputsOverlapsWithRefInputs,
  ) where
  
  import Cardano.Ledger.Plutus.Language (Plutus (..), PlutusBinary (..), SLanguage (..))
  import Data.ByteString (ByteString)
  import qualified Data.ByteString.Base16 as Base16 (decode)
  import qualified Data.ByteString.Short as SBS (toShort)
  import GHC.Stack
  
  decodeHexPlutus :: HasCallStack => ByteString -> Plutus l
  decodeHexPlutus = either error (Plutus . PlutusBinary . SBS.toShort) . Base16.decode
  
  -- | Script that always succeeds, unless arguments are malformed or context contains a datum
  alwaysSucceedsNoDatum :: SLanguage l -> Plutus l
  alwaysSucceedsNoDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "3f284e451d67e2c2ed1b255d253a58c1810cce58cde329ad04f3bc92"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- alwaysSucceedsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- alwaysSucceedsNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
      --                                                {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
      --                                                                                          {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                          scriptPurpose_3 -> case scriptPurpose_3 of
      --                                                                                                                                                             {PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                              _ -> GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "5821010000225333573466e1d200235573a6ea8d5d09aba235573c6ea8004584480041"
        ]
      -- ScriptHash "f610f0bf10e7d6607e34074a162db1b98965dd322c23e2754a7eec0c"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- alwaysSucceedsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- alwaysSucceedsNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
      --                                                {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
      --                                                                                          {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                          scriptPurpose_3 -> case scriptPurpose_3 of
      --                                                                                                                                                             {PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                              _ -> GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "5821010000225333573466e1d200235573a6ea8d5d09aba235573c6ea8004584480041"
        ]
      -- ScriptHash "4e9db3dc0d211bd9b8c958b7fd3969c6224226c84d52a1e09f0ea25f"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- alwaysSucceedsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinUnit
      -- alwaysSucceedsNoDatum_0 arg_1 = let PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                    (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
      --                                                                                    scriptInfo_4 = PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1
      --                                  in PlutusTx.Prelude.check GHC.Base.$ (case scriptInfo_4 of
      --                                                                        {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                         (GHC.Maybe.Just _) -> GHC.Types.False;
      --                                                                         _ -> GHC.Types.True})
      -- @@@
      SPlutusV3 ->
        [ "58bf0101002532333573464a666ae68cdc3a40046aae7400464c8cc88cc94ccd5cd19b88003480004c01924103"
        , "5054360013300100380194004d5d0800b003280160001918008009114800cc0212410350543700912999ab9a33"
        , "70e9000002080109991980300300099b81004480080040026aae74004d55cf0009baa357426ae88d55cf000c92"
        , "852885289baa932328009aba10029aba10019aba135744002357440026aae78dd5001488800429309800a48103"
        , "50543500232633573800300001"
        ]
      -- ScriptHash "b9c620f0276889c6573e987c322342924d97c8ec4bee83593aef999d"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- alwaysSucceedsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinUnit
      -- alwaysSucceedsNoDatum_0 arg_1 = let PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                    (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
      --                                                                                    scriptInfo_4 = PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1
      --                                  in PlutusTx.Prelude.check GHC.Base.$ (case scriptInfo_4 of
      --                                                                        {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                         (GHC.Maybe.Just _) -> GHC.Types.False;
      --                                                                         _ -> GHC.Types.True})
      -- @@@
      SPlutusV4 ->
        [ "58bf0101002532333573464a666ae68cdc3a40046aae7400464c8cc88cc94ccd5cd19b88003480004c01924103"
        , "5054360013300100380194004d5d0800b003280160001918008009114800cc0212410350543700912999ab9a33"
        , "70e9000002080109991980300300099b81004480080040026aae74004d55cf0009baa357426ae88d55cf000c92"
        , "852885289baa932328009aba10029aba10019aba135744002357440026aae78dd5001488800429309800a48103"
        , "50543500232633573800300001"
        ]
  
  -- | Script that always succeeds, unless arguments are malformed or context does not contain a datum
  alwaysSucceedsWithDatum :: SLanguage l -> Plutus l
  alwaysSucceedsWithDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "bf97f02604ffd780f1d72d535d60dbcd40e941577e8865f51c311478"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- alwaysSucceedsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                              PlutusTx.Builtins.Internal.BuiltinData ->
      --                              PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- alwaysSucceedsWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                          {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                                 {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                           {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) -> GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "58260100002225333573466e1d200235573a6ea8d5d09aba235573c6ea80044480044c8d40040059"
        ]
      -- ScriptHash "32c1100dea60b653233e32adb33e20d9a30c8359f7072027ec3e00a0"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- alwaysSucceedsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                              PlutusTx.Builtins.Internal.BuiltinData ->
      --                              PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- alwaysSucceedsWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                          {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                                 {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                           {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) -> GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "58260100002225333573466e1d200235573a6ea8d5d09aba235573c6ea80044480044c8d40040059"
        ]
      -- ScriptHash "5eac0376e2d041e1753d8a5a5f133d4fcdb69ac40c8030bad97bc3ad"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- alwaysSucceedsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                              PlutusTx.Builtins.Internal.BuiltinUnit
      -- alwaysSucceedsWithDatum_0 arg_1 = let PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                      (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
      --                                                                                      scriptPurpose_4 = PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1
      --                                    in PlutusTx.Prelude.check GHC.Base.$ (case scriptPurpose_4 of
      --                                                                          {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                           (GHC.Maybe.Just _) -> GHC.Types.True;
      --                                                                           _ -> GHC.Types.False})
      -- @@@
      SPlutusV3 ->
        [ "58bf0101002532333573464a666ae68cdc3a40046aae7400464c8cc88cc94ccd5cd19b88003480004c01924103"
        , "5054360013300100380194004d5d0800b003280160001918008009114800cc0212410350543700912999ab9a33"
        , "70e9000002080109991980300300099b81004480080040026aae74004d55cf0009baa357426ae88d55cf000c92"
        , "8d2805281baa932328009aba10029aba10019aba135744002357440026aae78dd5001488800429309800a48103"
        , "50543500232633573800300001"
        ]
      -- ScriptHash "dd4d8b97cfe1fef9d93cefb219d0d29689caa714a9acc9a432fa571e"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- alwaysSucceedsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                              PlutusTx.Builtins.Internal.BuiltinUnit
      -- alwaysSucceedsWithDatum_0 arg_1 = let PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                      (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
      --                                                                                      scriptPurpose_4 = PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1
      --                                    in PlutusTx.Prelude.check GHC.Base.$ (case scriptPurpose_4 of
      --                                                                          {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                           (GHC.Maybe.Just _) -> GHC.Types.True;
      --                                                                           _ -> GHC.Types.False})
      -- @@@
      SPlutusV4 ->
        [ "58bf0101002532333573464a666ae68cdc3a40046aae7400464c8cc88cc94ccd5cd19b88003480004c01924103"
        , "5054360013300100380194004d5d0800b003280160001918008009114800cc0212410350543700912999ab9a33"
        , "70e9000002080109991980300300099b81004480080040026aae74004d55cf0009baa357426ae88d55cf000c92"
        , "8d2805281baa932328009aba10029aba10019aba135744002357440026aae78dd5001488800429309800a48103"
        , "50543500232633573800300001"
        ]
  
  -- | Script that always fails, unless arguments are malformed or context contains a datum
  alwaysFailsNoDatum :: SLanguage l -> Plutus l
  alwaysFailsNoDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "b85a057b2c91b4c2984a77a5dd10afe15a404687825324ba58ad07f5"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- alwaysFailsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                         PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- alwaysFailsNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.fromBuiltinData redeemer_1 of
      --                                             {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                              GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Redeemer _) -> case PlutusTx.IsData.Class.fromBuiltinData context_2 of
      --                                                                                                        {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                                                                                         GHC.Maybe.Just (PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                                                        (PlutusLedgerApi.V1.Data.Contexts.Spending _)) -> GHC.Tuple.Prim.();
      --                                                                                                         GHC.Maybe.Just (PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                                                        _) -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}
      -- @@@
      SPlutusV1 ->
        [ "5821010000225333573466e1d200235573a6ea8d5d09aba235573c6ea8004448004581"
        ]
      -- ScriptHash "02f4fe174ec961b3cc942ab15baa193a266ea4560a28690dd78d975d"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- alwaysFailsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                         PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- alwaysFailsNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.fromBuiltinData redeemer_1 of
      --                                             {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                              GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Redeemer _) -> case PlutusTx.IsData.Class.fromBuiltinData context_2 of
      --                                                                                                        {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                                                                                         GHC.Maybe.Just (PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                                                        (PlutusLedgerApi.V1.Data.Contexts.Spending _)) -> GHC.Tuple.Prim.();
      --                                                                                                         GHC.Maybe.Just (PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                                                        _) -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}
      -- @@@
      SPlutusV2 ->
        [ "5821010000225333573466e1d200235573a6ea8d5d09aba235573c6ea8004448004581"
        ]
      -- ScriptHash "d17097dcd2e7298f8050fa045e9ea045c443d3af574099fd2c3813f4"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- alwaysFailsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                         PlutusTx.Builtins.Internal.BuiltinUnit
      -- alwaysFailsNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.fromBuiltinData arg_1 of
      --                                                                 {GHC.Maybe.Just (PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                                 (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
      --                                                                                                                                 scriptInfo_4) -> case scriptInfo_4 of
      --                                                                                                                                                  {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                                                   (GHC.Maybe.Just _) -> GHC.Types.True;
      --                                                                                                                                                   _ -> GHC.Types.False};
      --                                                                  GHC.Maybe.Nothing -> GHC.Types.True})
      -- @@@
      SPlutusV3 ->
        [ "58aa0101002532333573464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c0152410350"
        , "54360013300100280194004d5d0800b003280160001918008009114800cc01d2410350543700912999ab9a3370"
        , "e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c928d280"
        , "5281baa357426ae88d5d11aab9e375400429309800a4810350543500232633573800300001"
        ]
      -- ScriptHash "9c34883e72eb93d6ec4f6fc325a15270538f4c798694d20fc899fe8b"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- alwaysFailsNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                         PlutusTx.Builtins.Internal.BuiltinUnit
      -- alwaysFailsNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.fromBuiltinData arg_1 of
      --                                                                 {GHC.Maybe.Just (PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                                 (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
      --                                                                                                                                 scriptInfo_4) -> case scriptInfo_4 of
      --                                                                                                                                                  {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                                                   (GHC.Maybe.Just _) -> GHC.Types.True;
      --                                                                                                                                                   _ -> GHC.Types.False};
      --                                                                  GHC.Maybe.Nothing -> GHC.Types.True})
      -- @@@
      SPlutusV4 ->
        [ "58aa0101002532333573464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c0152410350"
        , "54360013300100280194004d5d0800b003280160001918008009114800cc01d2410350543700912999ab9a3370"
        , "e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c928d280"
        , "5281baa357426ae88d5d11aab9e375400429309800a4810350543500232633573800300001"
        ]
  
  -- | Script that always fails, unless arguments are malformed or context does not contain a datum
  alwaysFailsWithDatum :: SLanguage l -> Plutus l
  alwaysFailsWithDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "4d21fdf22b322b92f116190ded13f1a2f5e8eae550af556a2c3898fc"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- alwaysFailsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                           PlutusTx.Builtins.Internal.BuiltinData ->
      --                           PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- alwaysFailsWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.fromBuiltinData datum_1 of
      --                                                       {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                                        GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum _) -> case PlutusTx.IsData.Class.fromBuiltinData redeemer_2 of
      --                                                                                                               {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                                                                                                GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Redeemer _) -> case PlutusTx.IsData.Class.fromBuiltinData context_3 of
      --                                                                                                                                                                          {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                                                                                                                                                           GHC.Maybe.Just (PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                                                                          (PlutusLedgerApi.V1.Data.Contexts.Spending _)) -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                                           GHC.Maybe.Just (PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                                                                          _) -> GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "58210100002225333573466e1d200235573a6ea8d5d09aba235573c6ea800458448005"
        ]
      -- ScriptHash "aade2c5c9e32ea7a8f9c284d3e958fbabe9f4838ef6bdd665b43d9d6"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- alwaysFailsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                           PlutusTx.Builtins.Internal.BuiltinData ->
      --                           PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- alwaysFailsWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.fromBuiltinData datum_1 of
      --                                                       {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                                        GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum _) -> case PlutusTx.IsData.Class.fromBuiltinData redeemer_2 of
      --                                                                                                               {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                                                                                                GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Redeemer _) -> case PlutusTx.IsData.Class.fromBuiltinData context_3 of
      --                                                                                                                                                                          {GHC.Maybe.Nothing -> GHC.Tuple.Prim.();
      --                                                                                                                                                                           GHC.Maybe.Just (PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                                                                          (PlutusLedgerApi.V1.Data.Contexts.Spending _)) -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                                           GHC.Maybe.Just (PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                                                                          _) -> GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "58210100002225333573466e1d200235573a6ea8d5d09aba235573c6ea800458448005"
        ]
      -- ScriptHash "fe06a34d1d485bd8a21b83a980ba663e9ceba5ff3f782e7b43e9c757"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- alwaysFailsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                           PlutusTx.Builtins.Internal.BuiltinUnit
      -- alwaysFailsWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.fromBuiltinData arg_1 of
      --                                                                   {GHC.Maybe.Just (PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                                   (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
      --                                                                                                                                   scriptInfo_4) -> case scriptInfo_4 of
      --                                                                                                                                                    {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                                                     (GHC.Maybe.Just _) -> GHC.Types.False;
      --                                                                                                                                                     _ -> GHC.Types.True};
      --                                                                    GHC.Maybe.Nothing -> GHC.Types.True})
      -- @@@
      SPlutusV3 ->
        [ "58aa0101002532333573464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c0152410350"
        , "54360013300100280194004d5d0800b003280160001918008009114800cc01d2410350543700912999ab9a3370"
        , "e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c9285288"
        , "5289baa357426ae88d5d11aab9e375400429309800a4810350543500232633573800300001"
        ]
      -- ScriptHash "134610f2ab49e9f57bed9797a5605236b323d5bf61d533fbbf94d9a9"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- alwaysFailsWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                           PlutusTx.Builtins.Internal.BuiltinUnit
      -- alwaysFailsWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.fromBuiltinData arg_1 of
      --                                                                   {GHC.Maybe.Just (PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                                   (PlutusLedgerApi.V1.Scripts.Redeemer _redeemer_3)
      --                                                                                                                                   scriptInfo_4) -> case scriptInfo_4 of
      --                                                                                                                                                    {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                                                     (GHC.Maybe.Just _) -> GHC.Types.False;
      --                                                                                                                                                     _ -> GHC.Types.True};
      --                                                                    GHC.Maybe.Nothing -> GHC.Types.True})
      -- @@@
      SPlutusV4 ->
        [ "58aa0101002532333573464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c0152410350"
        , "54360013300100280194004d5d0800b003280160001918008009114800cc01d2410350543700912999ab9a3370"
        , "e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c9285288"
        , "5289baa357426ae88d5d11aab9e375400429309800a4810350543500232633573800300001"
        ]
  
  -- | Script that succeeds whenever redeemer equals to the datum
  -- Fails on malformed arguments
  redeemerSameAsDatum :: SLanguage l -> Plutus l
  redeemerSameAsDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "8434e5ac35b5faf73a6f48cfaeb75d946149d15ebcac279993761fe5"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- redeemerSameAsDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- redeemerSameAsDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                      {PlutusLedgerApi.V1.Scripts.Datum d_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                               {PlutusLedgerApi.V1.Scripts.Redeemer r_5 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                           {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) | r_5 PlutusTx.Eq.== d_4 -> GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                         | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "58310100002225333573466e1d200235573a6ea8d5d09aba235573c6ea800454ccd5cd19baf002003112001161"
        , "323500100161"
        ]
      -- ScriptHash "b2cde39d731e1a641e3efab1fe83d09e77dde65ee50848d18107f039"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- redeemerSameAsDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- redeemerSameAsDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                      {PlutusLedgerApi.V1.Scripts.Datum d_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                               {PlutusLedgerApi.V1.Scripts.Redeemer r_5 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                           {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) | r_5 PlutusTx.Eq.== d_4 -> GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                         | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "58310100002225333573466e1d200235573a6ea8d5d09aba235573c6ea800454ccd5cd19baf002003112001161"
        , "323500100161"
        ]
      -- ScriptHash "709ed1e9554b38acc0ad0eb8fbc14847d6fe3b8e710a2a11d1a0b39c"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- redeemerSameAsDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinUnit
      -- redeemerSameAsDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                  {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                  (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
      --                                                                                                                  (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                   (GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum datum_4))) -> datum_4 PlutusTx.Eq.== redeemer_3;
      --                                                                   _ -> GHC.Types.False})
      -- @@@
      SPlutusV3 ->
        [ "58b3010100253233357346464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c01924103"
        , "5054360013300100280194004d5d0800b003280160001918008009114800cc0212410350543700912999ab9a33"
        , "70e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c8cdd7"
        , "8009aba1003a500a5037546ae84d5d10009aba235573c6ea800852613001490103505435002326335738003000"
        , "01"
        ]
      -- ScriptHash "2af82f67d14401419594b15791a9b6cd71927359bd83cd9f322d2673"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- redeemerSameAsDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinUnit
      -- redeemerSameAsDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                  {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                  (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
      --                                                                                                                  (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                   (GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum datum_4))) -> datum_4 PlutusTx.Eq.== redeemer_3;
      --                                                                   _ -> GHC.Types.False})
      -- @@@
      SPlutusV4 ->
        [ "58b3010100253233357346464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c01924103"
        , "5054360013300100280194004d5d0800b003280160001918008009114800cc0212410350543700912999ab9a33"
        , "70e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c8cdd7"
        , "8009aba1003a500a5037546ae84d5d10009aba235573c6ea800852613001490103505435002326335738003000"
        , "01"
        ]
  
  -- | Script that succeeds whenever Integer datum is supplied and it's value is even.
  -- Fails on malformed arguments
  evenDatum :: SLanguage l -> Plutus l
  evenDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "48b29a063768bc21d0e6eeed6e3e4f23a174164f8e8252c8845daceb"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- evenDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                PlutusTx.Builtins.Internal.BuiltinData ->
      --                PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- evenDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                            {PlutusLedgerApi.V1.Scripts.Datum d_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                     {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                               {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                                                               (PlutusLedgerApi.V1.Data.Contexts.Spending _) | PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI d_4) 2 PlutusTx.Eq.== 0 -> GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                             | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "58380100002225333573466e1d200235573a6ea8d5d09aba235573c6ea800454ccd5cd19b8748000cdc31bad00"
        , "348010448004584c8d40040059"
        ]
      -- ScriptHash "a1741f496dd45f8ce84db15246ee75a663914bce6807a14ee9a543bc"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- evenDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                PlutusTx.Builtins.Internal.BuiltinData ->
      --                PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- evenDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                            {PlutusLedgerApi.V1.Scripts.Datum d_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                     {PlutusLedgerApi.V1.Scripts.Redeemer _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                               {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                                                               (PlutusLedgerApi.V1.Data.Contexts.Spending _) | PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI d_4) 2 PlutusTx.Eq.== 0 -> GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                             | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "58380100002225333573466e1d200235573a6ea8d5d09aba235573c6ea800454ccd5cd19b8748000cdc31bad00"
        , "348010448004584c8d40040059"
        ]
      -- ScriptHash "acd6e72aa28151b8a9527c742475bb96601ca44711c1d8cb01a6601c"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- evenDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                PlutusTx.Builtins.Internal.BuiltinUnit
      -- evenDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                        {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                        _redeemer_3
      --                                                                                                        (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                         (GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum datum_4))) -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI datum_4) 2 PlutusTx.Eq.== 0})
      -- @@@
      SPlutusV3 ->
        [ "58bd0101002532333573464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c0152410350"
        , "54360013300100280194004d5d0800b003280160001918008009114800cc01d2410350543700912999ab9a3370"
        , "e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c8cdc3a4"
        , "00066e18dd6800a400932900180098265200300131baa357426ae88d5d11aab9e375400429309800a481035054"
        , "3500232633573800300001"
        ]
      -- ScriptHash "82d6046ef0fce690415684c09513a5e3cb6ec22f86845fff4ca9d430"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- evenDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                PlutusTx.Builtins.Internal.BuiltinUnit
      -- evenDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                        {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                        _redeemer_3
      --                                                                                                        (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                         (GHC.Maybe.Just (PlutusLedgerApi.V1.Scripts.Datum datum_4))) -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI datum_4) 2 PlutusTx.Eq.== 0})
      -- @@@
      SPlutusV4 ->
        [ "58bd0101002532333573464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c0152410350"
        , "54360013300100280194004d5d0800b003280160001918008009114800cc01d2410350543700912999ab9a3370"
        , "e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c8cdc3a4"
        , "00066e18dd6800a400932900180098265200300131baa357426ae88d5d11aab9e375400429309800a481035054"
        , "3500232633573800300001"
        ]
  
  -- | Script that succeeds whenever Integer redeemer is supplied and it's value is even
  -- Fails on malformed arguments or whenever datum is present in the context
  evenRedeemerNoDatum :: SLanguage l -> Plutus l
  evenRedeemerNoDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "ff651f4b89881b72407d020292291809ed49e4f1757a9745e35498c1"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- evenRedeemerNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- evenRedeemerNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
      --                                              {PlutusLedgerApi.V1.Scripts.Redeemer r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
      --                                                                                          {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                          scriptPurpose_4 -> case scriptPurpose_4 of
      --                                                                                                                                                             {PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                              _ -> if PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI r_3) 2 PlutusTx.Eq.== 0
      --                                                                                                                                                                    then GHC.Tuple.Prim.()
      --                                                                                                                                                                    else PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "5833010000225333573466e1d200235573a6ea8d5d09aba235573c6ea80045854ccd5cd19b8748000cdc31bad0"
        , "0248010448004581"
        ]
      -- ScriptHash "5dae481efaf96e0c4203cf261dc16bda7e91171afc69c655ff623a66"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- evenRedeemerNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- evenRedeemerNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
      --                                              {PlutusLedgerApi.V1.Scripts.Redeemer r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
      --                                                                                          {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                          scriptPurpose_4 -> case scriptPurpose_4 of
      --                                                                                                                                                             {PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                              _ -> if PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI r_3) 2 PlutusTx.Eq.== 0
      --                                                                                                                                                                    then GHC.Tuple.Prim.()
      --                                                                                                                                                                    else PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "5833010000225333573466e1d200235573a6ea8d5d09aba235573c6ea80045854ccd5cd19b8748000cdc31bad0"
        , "0248010448004581"
        ]
      -- ScriptHash "2f7dc5ea3191b1a56836f1547ed58d2af1f1917b784333e8332938c9"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- evenRedeemerNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinUnit
      -- evenRedeemerNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                  {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                  (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
      --                                                                                                                  scriptInfo_4 -> case scriptInfo_4 of
      --                                                                                                                                  {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                                   (GHC.Maybe.Just _) -> GHC.Types.False;
      --                                                                                                                                   _ -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI redeemer_3) 2 PlutusTx.Eq.== 0}})
      -- @@@
      SPlutusV3 ->
        [ "58c1010100253233357346464a64666ae68cdc3a40046aae7400864c8c8cc94ccd5cd19b88002480004c01d241"
        , "035054360013300100280194004d5d0800b003280160001918008009114800cc0252410350543700912999ab9a"
        , "3370e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf0014928"
        , "4c0052609800a4c466e1d20003370c6eb4d5d0801a40086ea8d5d09aba2001357446aae78dd50010a4c2600292"
        , "010350543500232633573800300001"
        ]
      -- ScriptHash "9f83efc6981b7c761bd519ec7f9c30ca90d99aa4c3d4ff70f9d5e8a2"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- evenRedeemerNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                          PlutusTx.Builtins.Internal.BuiltinUnit
      -- evenRedeemerNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                  {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                  (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
      --                                                                                                                  scriptInfo_4 -> case scriptInfo_4 of
      --                                                                                                                                  {PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                                   (GHC.Maybe.Just _) -> GHC.Types.False;
      --                                                                                                                                   _ -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI redeemer_3) 2 PlutusTx.Eq.== 0}})
      -- @@@
      SPlutusV4 ->
        [ "58c1010100253233357346464a64666ae68cdc3a40046aae7400864c8c8cc94ccd5cd19b88002480004c01d241"
        , "035054360013300100280194004d5d0800b003280160001918008009114800cc0252410350543700912999ab9a"
        , "3370e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf0014928"
        , "4c0052609800a4c466e1d20003370c6eb4d5d0801a40086ea8d5d09aba2001357446aae78dd50010a4c2600292"
        , "010350543500232633573800300001"
        ]
  
  -- | Script that succeeds whenever Integer redeemer is supplied and it's value is even
  -- Fails on malformed arguments or whenever datum is missing from the context
  evenRedeemerWithDatum :: SLanguage l -> Plutus l
  evenRedeemerWithDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "ce2c6a09fd9706d2fa13bad68d83b9bee1e59423a9e8b4eb291c089c"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- evenRedeemerWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- evenRedeemerWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                        {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                               {PlutusLedgerApi.V1.Scripts.Redeemer r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                           {PlutusLedgerApi.V1.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) | PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI r_4) 2 PlutusTx.Eq.== 0 -> GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                         | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "58380100002225333573466e1d200235573a6ea8d5d09aba235573c6ea800454ccd5cd19b8748000cdc31bad00"
        , "248010448004584c8d40040059"
        ]
      -- ScriptHash "9c542eaf9fbd625c5ff40fe4eedbd1b415fa5edf73c679fc9d5aca32"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- evenRedeemerWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- evenRedeemerWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                        {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                               {PlutusLedgerApi.V1.Scripts.Redeemer r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                           {PlutusLedgerApi.V2.Data.Contexts.ScriptContext _
      --                                                                                                                                                                                           (PlutusLedgerApi.V1.Data.Contexts.Spending _) | PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI r_4) 2 PlutusTx.Eq.== 0 -> GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                         | GHC.Base.otherwise -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "58380100002225333573466e1d200235573a6ea8d5d09aba235573c6ea800454ccd5cd19b8748000cdc31bad00"
        , "248010448004584c8d40040059"
        ]
      -- ScriptHash "9e2cea9225060fd0338cd1727e556f64ea1cb34ef53aaaa1632723fd"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- evenRedeemerWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinUnit
      -- evenRedeemerWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                    {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                    (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
      --                                                                                                                    (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                     (GHC.Maybe.Just _)) -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI redeemer_3) 2 PlutusTx.Eq.== 0;
      --                                                                     _ -> GHC.Types.False})
      -- @@@
      SPlutusV3 ->
        [ "58ba010100253233357346464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c01924103"
        , "5054360013300100280194004d5d0800b003280160001918008009114800cc0212410350543700912999ab9a33"
        , "70e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c8cdc3"
        , "a400066e18dd69aba1003480129402940dd51aba1357440026ae88d55cf1baa00214984c005241035054350023"
        , "2633573800300001"
        ]
      -- ScriptHash "348c5f8a2b1a1ea2797e37f1eb109ee639c900736fb1f6176430a01f"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- evenRedeemerWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                            PlutusTx.Builtins.Internal.BuiltinUnit
      -- evenRedeemerWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                    {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                    (PlutusLedgerApi.V1.Scripts.Redeemer redeemer_3)
      --                                                                                                                    (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _
      --                                                                                                                                                                     (GHC.Maybe.Just _)) -> PlutusTx.Prelude.modulo (PlutusTx.Builtins.unsafeDataAsI redeemer_3) 2 PlutusTx.Eq.== 0;
      --                                                                     _ -> GHC.Types.False})
      -- @@@
      SPlutusV4 ->
        [ "58ba010100253233357346464a666ae68cdc3a40046aae7400464c8c8cc94ccd5cd19b88002480004c01924103"
        , "5054360013300100280194004d5d0800b003280160001918008009114800cc0212410350543700912999ab9a33"
        , "70e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000c8cdc3"
        , "a400066e18dd69aba1003480129402940dd51aba1357440026ae88d55cf1baa00214984c005241035054350023"
        , "2633573800300001"
        ]
  
  -- | Script that succeeds when datum is not expected and purpose arguments are validated against txInfo
  -- Fails on malformed arguments
  purposeIsWellformedNoDatum :: SLanguage l -> Plutus l
  purposeIsWellformedNoDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "80cecc689f438b344917845205137d6e102dcae622420aeaa1d73011"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- purposeIsWellformedNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                 PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- purposeIsWellformedNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
      --                                                     {PlutusLedgerApi.V1.Scripts.Redeemer _r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
      --                                                                                                  {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_4
      --                                                                                                                                                  scriptPurpose_5 -> case scriptPurpose_5 of
      --                                                                                                                                                                     {PlutusLedgerApi.V1.Data.Contexts.Minting cs_6 -> if PlutusTx.Data.AssocMap.member cs_6 GHC.Base.$ (PlutusLedgerApi.V1.Data.Value.getValue GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoMint txInfo_4)
      --                                                                                                                                                                                                                        then GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                        else PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Rewarding stakingCredential_7 -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((stakingCredential_7 PlutusTx.Eq.==) GHC.Base.. Data.Tuple.fst) GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoWdrl txInfo_4)
      --                                                                                                                                                                                                                                         then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                         else GHC.Tuple.Prim.();
      --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Certifying dCert_8 -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (dCert_8 PlutusTx.Eq.==) GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoDCert txInfo_4)
      --                                                                                                                                                                                                                              then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                              else GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "59051c0100003232323232323232332222323232532323232333573466e1d20000011533357346646002002466"
        , "0249408ccd5cd19baf37526eb8d5d09aab9e00735573a00249448cc00c00c004ccc008018888888888801c9840"
        , "4c5854ccd5cd19b87480080045854ccd5cd19b874801000454ccd5cd1aba33333010233005375400244666a00c"
        , "66a01a4664424660020060046ae84004dd69aba13574400201c00400246a0024466e95200033574000466ae80d"
        , "d4000a5eb808cc040d5d09aab9e006350012200233300200622222222220052616101315333573466e1d200600"
        , "11533357346ae8ccccc040800480048c8c94c8ccd5cd19b8748000d55ce8010992999ab9a3370e90001aab9d00"
        , "1133014357426aae7800cd5d09aab9e00113002498dd500209800a4c4a64666ae68cdc3a40046aae7400c4c94c"
        , "cd5cd19b8748008d55ce80089980a9aba135573c0086ae84d55cf0008980124c6ea80144c00526232333012005"
        , "22333014008225333573466032008004266e3c00c0045281180224c460049311919980a0031119980b00491299"
        , "9ab9a3371e008004266e3c00c0045281180224c460049311919980b0039119980c005112999ab9a3371e008004"
        , "266e1c00c0045281180224c46004931299199ab9a3370e90051aab9d00715333573466e1d200a35573a6ea8024"
        , "52889800a4c260029312999ab9a3370e90061aab9d00713370e90061aab9d37540122940dd50009aba135573c0"
        , "0c66600400c444444444400c4c2c20262646a002002c6aae74010888c8c8c8c8c8c8c8c8c8cccccccccc02cdd6"
        , "1aba100937586ae84020dd59aba100737566ae84018dd61aba100537586ae84010d5d08019bac357420046eb0d"
        , "5d0800998071baa357426ae8800488ccd403ccd40588dd71aba1001017002001357440026ae88004d5d10009ab"
        , "a2001357440026ae88004d5d10009aba200135573c6ea800c4c8894ccd5cd19b88001480004c04924103505436"
        , "00133003001002323001001222533500113012490103505437002215333573466e1d2000004100213323300600"
        , "600133702008900100091198009aab9d00235573c0046ea8d5d09aba2002357420026aae78dd50008910010910"
        , "9119800802001911192999ab9a3370e90021aab9d00113233004357420026eb8d5d09aba200135573c00226004"
        , "931baa003222325333573466e1d200635573a002264660086eb8d5d08009bae357426ae88004d55cf000898012"
        , "4c6ea800c888c94ccd5cd19b8748020d55ce800899198021bae357420026eb4d5d09aba200135573c002260049"
        , "31baa0032232532333573466e1d200035573a004264a666ae68cdc3a40006aae740044c8c94c8ccd5cd19b8748"
        , "000d55ce8010992999ab9a3370e90001aab9d00113371e6eb8d5d09aab9e003375c6ae84d55cf0008980124c6e"
        , "a800c4c0052625333573466e1d200235573a004264a666ae68cdc3a40046aae740044cdc79bae357426aae7800"
        , "cdd71aba135573c0022940dd50018a5037546ae84d55cf0021aba135573c00226004931baa003130014988cc8c"
        , "c004014888ccc01001c8894ccd5cd19b8700600315333573466e1c0140084cdc38020008a5014a04940888c94c"
        , "cd5cd19b8748008d55ce800899191998029bad357420046eb4d5d08009bad357426ae88004d5d10009aab9e001"
        , "13002498dd50019250375400444464460040026460020024466600c97ae0223253335734600c00226466ae80c0"
        , "20008004cc0140140084cc014014008c01c0080048894ccd55cf80088018998011aba100135744002464c66ae7"
        , "000400848005"
        ]
      -- ScriptHash "84166eecfa9f1a575868b2586c71f5e3137d763894c88f37c61b9d84"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- purposeIsWellformedNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                 PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- purposeIsWellformedNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
      --                                                     {PlutusLedgerApi.V1.Scripts.Redeemer _r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
      --                                                                                                  {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_4
      --                                                                                                                                                  scriptPurpose_5 -> case scriptPurpose_5 of
      --                                                                                                                                                                     {PlutusLedgerApi.V1.Data.Contexts.Minting cs_6 -> if PlutusTx.Data.AssocMap.member cs_6 GHC.Base.$ (PlutusLedgerApi.V1.Data.Value.getValue GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoMint txInfo_4)
      --                                                                                                                                                                                                                        then GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                        else PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Spending _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Rewarding stakingCredential_7 -> if PlutusTx.Data.AssocMap.member stakingCredential_7 GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoWdrl txInfo_4
      --                                                                                                                                                                                                                                         then GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                         else PlutusTx.Builtins.error GHC.Tuple.Prim.();
      --                                                                                                                                                                      PlutusLedgerApi.V1.Data.Contexts.Certifying dCert_8 -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (dCert_8 PlutusTx.Eq.==) GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoDCert txInfo_4)
      --                                                                                                                                                                                                                              then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                              else GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "5904c601000032323232323232322232323253232333573466e1d2000001153335734666018ea4dd71aba13557"
        , "3c0066660040084444444444440104c201e2c2a666ae68cdc3a40040022c2a666ae68cdc3a40080022a666ae68"
        , "ccc0308004d5d09aab9e00333300200422222222222200626100f161325333573466e1d20060021533357346ae"
        , "8cc004ccc00c01488888888888801c985840404c8d40040058c8c00400488ccc03d2f5c044a666ae68c8c94c8c"
        , "cd5cd19b8748000d55ce8010992999ab9a3370e90001aab9d001133010357426aae7800cd5d09aab9e00113002"
        , "498dd500289800a4c4a64666ae68cdc3a40046aae7400c4c94ccd5cd19b8748008d55ce8008998089aba135573"
        , "c0086ae84d55cf0008980124c6ea80184c005262323330120052233301400922533357346602a008004266e3c0"
        , "0c0045281180224c460049311919980a0031119980b005112999ab9a3371e008004266e3c00c0045281180224c"
        , "460049311919980b0039119980c005912999ab9a3371e008004266e1c00c0045281180224c46004931299199ab"
        , "9a3370e90051aab9d00715333573466e1d200a35573a6ea802852889800a4c260029312999ab9a3370e90061aa"
        , "b9d00713370e90061aab9d37540142940dd50009aba135573c00e266ae80008cc0100100044cc010010004004d"
        , "55ce80111119191919191919191919191999999999998069bac357420166eb0d5d08051bac357420126eacd5d0"
        , "8041bab3574200e6eb0d5d08031bab3574200a6ae84010dd61aba100337566ae84008dd59aba10013232332533"
        , "3573466e2000920001301d49010350543600133001002122330012375c6ae84004488008c8c0040048894cd400"
        , "44c07d240103505437002215333573466e1d200000410021332330060060013370200890010009aab9e0023557"
        , "3a0026ea8d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013574400"
        , "26ae88004d55cf1baa00337546ae84d5d10011aba100135573c6ea800488c94c8ccd5cd19b8748000d55ce8010"
        , "992999ab9a3370e90001aab9d00113232532333573466e1d200035573a004264a666ae68cdc3a40006aae74004"
        , "4cdc79bae357426aae7800cdd71aba135573c00226004931baa0031300149894ccd5cd19b8748008d55ce80109"
        , "92999ab9a3370e90011aab9d00113371e6eb8d5d09aab9e003375c6ae84d55cf0008a5037540062940dd51aba1"
        , "35573c0086ae84d55cf0008980124c6ea800c4c005262332330010052223330040072225333573466e1c01800c"
        , "54ccd5cd19b8700500213370e00800229405281250222325333573466e1d200235573a0022646466600a6eb4d5"
        , "d08011bad357420026eb4d5d09aba2001357440026aae780044c0092637540064940dd5001111192999ab9a337"
        , "0e90021aab9d00113233004357420026eb8d5d09aba200135573c00226004931baa003222325333573466e1d20"
        , "0635573a002264660086eb8d5d08009bae357426ae88004d55cf0008980124c6ea800c888c94ccd5cd19b87480"
        , "20d55ce800899198021bae357420026eb4d5d09aba200135573c00226004931baa00322233230010012330054a"
        , "04666ae68cdd798028021aab9d00124a2466006006002002444a666aae7c004400c4cc008d5d08009aba200123"
        , "26335738002004240021"
        ]
      -- ScriptHash "41521dba681990883acbb09504a036ce45966a0131d840e1e8533d66"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- purposeIsWellformedNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                 PlutusTx.Builtins.Internal.BuiltinUnit
      -- purposeIsWellformedNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                         {PlutusLedgerApi.V3.Data.Contexts.ScriptContext (PlutusLedgerApi.V3.Data.Contexts.TxInfo {PlutusLedgerApi.V3.Data.Contexts.txInfoMint = infoMint_2,
      --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoInputs = infoInputs_3,
      --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoWdrl = infoWdrl_4,
      --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoTxCerts = infoTxCerts_5,
      --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoVotes = infoVotes_6})
      --                                                                                                                         _redeemer_7
      --                                                                                                                         scriptInfo_8 -> case scriptInfo_8 of
      --                                                                                                                                         {PlutusLedgerApi.V3.Data.Contexts.MintingScript cs_9 -> PlutusTx.Data.AssocMap.member cs_9 GHC.Base.$ (PlutusLedgerApi.V1.Data.Value.getValue GHC.Base.$ PlutusLedgerApi.V3.Data.MintValue.mintValueMinted infoMint_2);
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.SpendingScript txOutRef_10
      --                                                                                                                                                                                          mDatum_11 -> case mDatum_11 of
      --                                                                                                                                                                                                       {GHC.Maybe.Just _ -> GHC.Types.False;
      --                                                                                                                                                                                                        GHC.Maybe.Nothing -> PlutusTx.Data.List.null GHC.Base.$ PlutusTx.Data.List.filter ((txOutRef_10 PlutusTx.Eq.==) GHC.Base.. PlutusLedgerApi.V3.Data.Contexts.txInInfoOutRef) infoInputs_3};
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.RewardingScript cred_12 -> PlutusTx.Data.AssocMap.member cred_12 infoWdrl_4;
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.CertifyingScript _idx_13
      --                                                                                                                                                                                            txCert_14 -> PlutusTx.Data.List.null GHC.Base.$ PlutusTx.Data.List.filter (txCert_14 PlutusTx.Eq.==) infoTxCerts_5;
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.VotingScript voter_15 -> PlutusTx.Data.AssocMap.member voter_15 infoVotes_6;
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.ProposingScript _idx_16
      --                                                                                                                                                                                           _propProc_17 -> GHC.Types.True}})
      -- @@@
      SPlutusV3 ->
        [ "5907460101003232323225323335734646464646464a646464666ae68cdc3a40000022666004ea4dd71aba1355"
        , "73c00866466600246eac0048dd30009192999ab9a35746002300218008008cccc009d691ba8001253335734666"
        , "ae68cdc4800a4000941288c00400430020012223230010012330074bd6f7b63014980198029aab9e0019119aba"
        , "0337606aae7400cc018008cc01001000646600600600237566ae8401c54c8c8c8ccd5cd19b87480080104ca4cc"
        , "00800cd5d09aba200192509aba33333004003200123232533357346466e3cc004008c00400c8dd71aba135573c"
        , "6ea80044c8cdc39800801180080191bad357426ae88d55cf1baa00114a06ae8400cd5d09aab9e37540026eb0d5"
        , "d08060d55cf0038a999ab9a3370e9002002099980290009aba135573c00e6eacd5d08040a999ab9a3370e90030"
        , "020991aba3333300400320012323233233001003223330030062253335734660320080043200729002919b8700"
        , "2001a5064006494294414a04600a93111192999ab9a3370e90001aab9d001132330043574200266014eb4d5d09"
        , "aba200135573c00226004931baa003230024988c8cc8cc00401088ccc00c01c894ccd5cd1980d0020010c801ca"
        , "400a466e1c00800694190019250a51052811802a4c44464a666ae68cdc3a40046aae740044c8cc010d5d080099"
        , "805bad357426ae88004d55cf0008980124c6ea800c8c00926232532333573466e1d200435573a00426464a666a"
        , "e68cdc3a40086aae740044c94ccd5cd1980d1aba1003357420022660326ae84d5d10019aba1357440022940d55"
        , "cf00089801a4c6ea801cd55cf00109800a4c46466603400c44466603a014444a666ae68cc07801800c54ccd5cd"
        , "1980e802801099b8700400114a029408c01526230024988c8ccc06801c88ccc070028894ccd5cd1980e8020010"
        , "99b8700300114a046008931180124c4a64666ae68cdc3a40146aae740144c94ccd5cd19b8748028d55ce800899"
        , "80d9aba135573c00c6ae84d55cf0008980124c6ea80244c005262323323300100a2233300300d2253335734660"
        , "40008004266e1c00c00452811802a4c44464a666ae68cdc3a40186aae740044c8cc010d5d08009bad357426ae8"
        , "8004d55cf0008980124c6ea800c8c009262532333573466e1d201235573a00e26464a666ae68cdc3a40246aae7"
        , "40044c94ccd5cd1980f9aba10033574200226603e6ae84d5d10019aba1357440022940d55cf00089801a4c6ea8"
        , "030d55cf00389800a4c4a666ae68cdc3a40286aae7401c4c94ccd5cd19b8748050d55ce80089980e9aba135573"
        , "c0106ae84d55cf0008a5037540162940dd50019aba1357440046eb0d5d08051aab9e00715333573466e1d20080"
        , "0413330052001357426aae7801cdd59aba1357446ae88d5d11aba2357446ae8802054ccd5cd19b87480280104c"
        , "9289aab9e00713290018009888c8c8cc94ccd5cd19b88002480004c0452401035054360013300100280194004c"
        , "018d5d0800b003280160001918008009114800cc04d2410350543700912999ab9a3370e9000002080109991980"
        , "300300099b81004480080046aae78008d55ce8009baa00120012223223002001323001001223330084bd701119"
        , "2999ab9a300600113233574060100040026600a00a00426600a00a004600e0040026aae7400c888cc8c0040048"
        , "cc015281199ab9a3375e600a0086aae740049289198018018008009112999aab9f0011003133002357420026ae"
        , "88004dd51aba1357446ae88014d5d10009aba2001357446ae88d5d11aba200135573c6ea8d5d08009aab9e3754"
        , "00429309800a49035054350023263357380030002232532333573466e1d200035573a004264a666ae68cdc3a40"
        , "006aae740044cdc79bae357426aae7800cdd71aba135573c00226004931baa0031300149894c8c8ccd5cd19b87"
        , "48008d55ce8020992999ab9a3370e90011aab9d001133003357426aae78014d5d09aab9e00113002498dd50028"
        , "9800a4c46646600200e4466600601044a666ae68cdc78020010998038018008a5024a044464a666ae68cdc3a40"
        , "086aae740044c8cc010dd71aba1001357426ae88004d55cf0008980124c6ea800c9281119299199ab9a3370e90"
        , "001aab9d0021325333573466e1d200035573a0022660146ae84d55cf0019aba135573c00226004931baa003130"
        , "0149894c8ccd5cd19b8748008d55ce8018a999ab9a3370e90011aab9d375400829444c005261300149894ccd5c"
        , "d19b8748010d55ce801899b8748010d55ce9baa00414a06ea8008dd50011119299199ab9a3370e90001aab9d00"
        , "21325333573466e1d200035573a002266e3cdd71aba135573c0066eb8d5d09aab9e00113002498dd500189800a"
        , "4c4a666ae68cdc3a40046aae740084c94ccd5cd19b8748008d55ce800899b8f375c6ae84d55cf0019bae357426"
        , "aae780045281baa00314a06ea8008888c94ccd5cd19b8748020d55ce800899198021aba1001375a6ae84d5d100"
        , "09aab9e00113002498dd5001911192999ab9a3370e90031aab9d00113232333005357420046ae84004dd69aba1"
        , "357440026ae88004d55cf0008980124c6ea800c1"
        ]
      -- ScriptHash "ac43e18917d7f23f26e073170f164fac84b9e421282926c260e919d0"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- purposeIsWellformedNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                 PlutusTx.Builtins.Internal.BuiltinUnit
      -- purposeIsWellformedNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                         {PlutusLedgerApi.V3.Data.Contexts.ScriptContext (PlutusLedgerApi.V3.Data.Contexts.TxInfo {PlutusLedgerApi.V3.Data.Contexts.txInfoMint = infoMint_2,
      --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoInputs = infoInputs_3,
      --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoWdrl = infoWdrl_4,
      --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoTxCerts = infoTxCerts_5,
      --                                                                                                                                                                   PlutusLedgerApi.V3.Data.Contexts.txInfoVotes = infoVotes_6})
      --                                                                                                                         _redeemer_7
      --                                                                                                                         scriptInfo_8 -> case scriptInfo_8 of
      --                                                                                                                                         {PlutusLedgerApi.V3.Data.Contexts.MintingScript cs_9 -> PlutusTx.Data.AssocMap.member cs_9 GHC.Base.$ (PlutusLedgerApi.V1.Data.Value.getValue GHC.Base.$ PlutusLedgerApi.V3.Data.MintValue.mintValueMinted infoMint_2);
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.SpendingScript txOutRef_10
      --                                                                                                                                                                                          mDatum_11 -> case mDatum_11 of
      --                                                                                                                                                                                                       {GHC.Maybe.Just _ -> GHC.Types.False;
      --                                                                                                                                                                                                        GHC.Maybe.Nothing -> PlutusTx.Data.List.null GHC.Base.$ PlutusTx.Data.List.filter ((txOutRef_10 PlutusTx.Eq.==) GHC.Base.. PlutusLedgerApi.V3.Data.Contexts.txInInfoOutRef) infoInputs_3};
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.RewardingScript cred_12 -> PlutusTx.Data.AssocMap.member cred_12 infoWdrl_4;
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.CertifyingScript _idx_13
      --                                                                                                                                                                                            txCert_14 -> PlutusTx.Data.List.null GHC.Base.$ PlutusTx.Data.List.filter (txCert_14 PlutusTx.Eq.==) infoTxCerts_5;
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.VotingScript voter_15 -> PlutusTx.Data.AssocMap.member voter_15 infoVotes_6;
      --                                                                                                                                          PlutusLedgerApi.V3.Data.Contexts.ProposingScript _idx_16
      --                                                                                                                                                                                           _propProc_17 -> GHC.Types.True}})
      -- @@@
      SPlutusV4 ->
        [ "5907460101003232323225323335734646464646464a646464666ae68cdc3a40000022666004ea4dd71aba1355"
        , "73c00866466600246eac0048dd30009192999ab9a35746002300218008008cccc009d691ba8001253335734666"
        , "ae68cdc4800a4000941288c00400430020012223230010012330074bd6f7b63014980198029aab9e0019119aba"
        , "0337606aae7400cc018008cc01001000646600600600237566ae8401c54c8c8c8ccd5cd19b87480080104ca4cc"
        , "00800cd5d09aba200192509aba33333004003200123232533357346466e3cc004008c00400c8dd71aba135573c"
        , "6ea80044c8cdc39800801180080191bad357426ae88d55cf1baa00114a06ae8400cd5d09aab9e37540026eb0d5"
        , "d08060d55cf0038a999ab9a3370e9002002099980290009aba135573c00e6eacd5d08040a999ab9a3370e90030"
        , "020991aba3333300400320012323233233001003223330030062253335734660320080043200729002919b8700"
        , "2001a5064006494294414a04600a93111192999ab9a3370e90001aab9d001132330043574200266014eb4d5d09"
        , "aba200135573c00226004931baa003230024988c8cc8cc00401088ccc00c01c894ccd5cd1980d0020010c801ca"
        , "400a466e1c00800694190019250a51052811802a4c44464a666ae68cdc3a40046aae740044c8cc010d5d080099"
        , "805bad357426ae88004d55cf0008980124c6ea800c8c00926232532333573466e1d200435573a00426464a666a"
        , "e68cdc3a40086aae740044c94ccd5cd1980d1aba1003357420022660326ae84d5d10019aba1357440022940d55"
        , "cf00089801a4c6ea801cd55cf00109800a4c46466603400c44466603a014444a666ae68cc07801800c54ccd5cd"
        , "1980e802801099b8700400114a029408c01526230024988c8ccc06801c88ccc070028894ccd5cd1980e8020010"
        , "99b8700300114a046008931180124c4a64666ae68cdc3a40146aae740144c94ccd5cd19b8748028d55ce800899"
        , "80d9aba135573c00c6ae84d55cf0008980124c6ea80244c005262323323300100a2233300300d2253335734660"
        , "40008004266e1c00c00452811802a4c44464a666ae68cdc3a40186aae740044c8cc010d5d08009bad357426ae8"
        , "8004d55cf0008980124c6ea800c8c009262532333573466e1d201235573a00e26464a666ae68cdc3a40246aae7"
        , "40044c94ccd5cd1980f9aba10033574200226603e6ae84d5d10019aba1357440022940d55cf00089801a4c6ea8"
        , "030d55cf00389800a4c4a666ae68cdc3a40286aae7401c4c94ccd5cd19b8748050d55ce80089980e9aba135573"
        , "c0106ae84d55cf0008a5037540162940dd50019aba1357440046eb0d5d08051aab9e00715333573466e1d20080"
        , "0413330052001357426aae7801cdd59aba1357446ae88d5d11aba2357446ae8802054ccd5cd19b87480280104c"
        , "9289aab9e00713290018009888c8c8cc94ccd5cd19b88002480004c0452401035054360013300100280194004c"
        , "018d5d0800b003280160001918008009114800cc04d2410350543700912999ab9a3370e9000002080109991980"
        , "300300099b81004480080046aae78008d55ce8009baa00120012223223002001323001001223330084bd701119"
        , "2999ab9a300600113233574060100040026600a00a00426600a00a004600e0040026aae7400c888cc8c0040048"
        , "cc015281199ab9a3375e600a0086aae740049289198018018008009112999aab9f0011003133002357420026ae"
        , "88004dd51aba1357446ae88014d5d10009aba2001357446ae88d5d11aba200135573c6ea8d5d08009aab9e3754"
        , "00429309800a49035054350023263357380030002232532333573466e1d200035573a004264a666ae68cdc3a40"
        , "006aae740044cdc79bae357426aae7800cdd71aba135573c00226004931baa0031300149894c8c8ccd5cd19b87"
        , "48008d55ce8020992999ab9a3370e90011aab9d001133003357426aae78014d5d09aab9e00113002498dd50028"
        , "9800a4c46646600200e4466600601044a666ae68cdc78020010998038018008a5024a044464a666ae68cdc3a40"
        , "086aae740044c8cc010dd71aba1001357426ae88004d55cf0008980124c6ea800c9281119299199ab9a3370e90"
        , "001aab9d0021325333573466e1d200035573a0022660146ae84d55cf0019aba135573c00226004931baa003130"
        , "0149894c8ccd5cd19b8748008d55ce8018a999ab9a3370e90011aab9d375400829444c005261300149894ccd5c"
        , "d19b8748010d55ce801899b8748010d55ce9baa00414a06ea8008dd50011119299199ab9a3370e90001aab9d00"
        , "21325333573466e1d200035573a002266e3cdd71aba135573c0066eb8d5d09aab9e00113002498dd500189800a"
        , "4c4a666ae68cdc3a40046aae740084c94ccd5cd19b8748008d55ce800899b8f375c6ae84d55cf0019bae357426"
        , "aae780045281baa00314a06ea8008888c94ccd5cd19b8748020d55ce800899198021aba1001375a6ae84d5d100"
        , "09aab9e00113002498dd5001911192999ab9a3370e90031aab9d00113232333005357420046ae84004dd69aba1"
        , "357440026ae88004d55cf0008980124c6ea800c1"
        ]
  
  -- | Script that succeeds when datum is expected and purpose arguments are validated against txInfo
  -- Fails on malformed arguments
  purposeIsWellformedWithDatum :: SLanguage l -> Plutus l
  purposeIsWellformedWithDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "8749798deb0743c573fad7a8e4a692f9aa25f6fc947bdf97f4a19fd4"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- purposeIsWellformedWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                   PlutusTx.Builtins.Internal.BuiltinData ->
      --                                   PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- purposeIsWellformedWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                               {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                                      {PlutusLedgerApi.V1.Scripts.Redeemer _r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                                   {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_5
      --                                                                                                                                                                                                   (PlutusLedgerApi.V1.Data.Contexts.Spending txOutRef_6) -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((txOutRef_6 PlutusTx.Eq.==) GHC.Base.. PlutusLedgerApi.V1.Data.Contexts.txInInfoOutRef) GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoInputs txInfo_5)
      --                                                                                                                                                                                                                                                              then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                                              else GHC.Tuple.Prim.();
      --                                                                                                                                                    _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "59011d010000323222232323232325333573466e1d200235573a0082a666ae68d5d198009bac357426aae78dd5"
        , "1aba100516100a163230010012253335573e002297ae013322533357346464a666ae68cdc79803800980380109"
        , "9b873008001300800214a06ae84d55cf0041aba135573c6ea80084cd5d0001198020020008998020020009aba1"
        , "0013574400246464664a666ae68cdc4001240002601692010350543600133001002122330012375c6ae8400448"
        , "8008c8c0040048894cd40044c035240103505437002215333573466e1d20000041002133233006006001337020"
        , "0890010009aab9e00235573a0026ea8d5d09aab9e375400246eb4d5d09aba235573c6ea8004dd51aba13574400"
        , "26aae78dd5000919319ab9c0010021200101"
        ]
      -- ScriptHash "10eb5bbb3496cf638cd65e03874653bfafc954808c0224655ba7193d"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- purposeIsWellformedWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                   PlutusTx.Builtins.Internal.BuiltinData ->
      --                                   PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- purposeIsWellformedWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                               {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                                      {PlutusLedgerApi.V1.Scripts.Redeemer _r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                                   {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_5
      --                                                                                                                                                                                                   (PlutusLedgerApi.V1.Data.Contexts.Spending txOutRef_6) -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((txOutRef_6 PlutusTx.Eq.==) GHC.Base.. PlutusLedgerApi.V2.Data.Contexts.txInInfoOutRef) GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoInputs txInfo_5)
      --                                                                                                                                                                                                                                                              then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                                              else GHC.Tuple.Prim.();
      --                                                                                                                                                    _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "59011d010000323222232323232325333573466e1d200235573a0082a666ae68d5d198009bac357426aae78dd5"
        , "1aba100516100a163230010012253335573e002297ae013322533357346464a666ae68cdc79803800980380109"
        , "9b873008001300800214a06ae84d55cf0041aba135573c6ea80084cd5d0001198020020008998020020009aba1"
        , "0013574400246464664a666ae68cdc4001240002601692010350543600133001002122330012375c6ae8400448"
        , "8008c8c0040048894cd40044c035240103505437002215333573466e1d20000041002133233006006001337020"
        , "0890010009aab9e00235573a0026ea8d5d09aab9e375400246eb4d5d09aba235573c6ea8004dd51aba13574400"
        , "26aae78dd5000919319ab9c0010021200101"
        ]
      -- ScriptHash "22bc5f6b3c721260818a5bbbbf5be7c0c430c30b1cb6e1fb48898186"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- purposeIsWellformedWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                   PlutusTx.Builtins.Internal.BuiltinUnit
      -- purposeIsWellformedWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                           {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
      --                                                                                                                           _redeemer_3
      --                                                                                                                           (PlutusLedgerApi.V3.Data.Contexts.SpendingScript txOutRef_4
      --                                                                                                                                                                            (GHC.Maybe.Just _)) -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((txOutRef_4 PlutusTx.Eq.==) GHC.Base.. PlutusLedgerApi.V3.Data.Contexts.txInInfoOutRef) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_2));
      --                                                                            _ -> GHC.Types.False})
      -- @@@
      SPlutusV3 ->
        [ "590135010100322533357346464a666ae68cdc3a40046aae740044c8c8c8ca4c8c8cc94ccd5cd19b8800248000"
        , "4c02d241035054360013300100280194004d5d0800b003280160001918008009114800cc035241035054370091"
        , "2999ab9a3370e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae880124"
        , "666ae68d5d198011bac357426aae78dd51aba10074a094694064600200244a666aae7c00452f5c026644a666ae"
        , "68c8c94ccd5cd19b8f3007001300700213370e601000260100042940d5d08041aba135573c6ea80084cd5d0001"
        , "198020020008998020020009aba10013574400246eb8d5d09aab9e375400246eb4d5d09aba235573c6ea8004d5"
        , "5cf0008a5037546ae84d5d11aba200135573c6ea80045261300249010350543500232633573800300001"
        ]
      -- ScriptHash "94b9ec6dcebbf0f56edee997ccde9b3475dc0b9bb7fbf455c38448ec"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- purposeIsWellformedWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                   PlutusTx.Builtins.Internal.BuiltinUnit
      -- purposeIsWellformedWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                           {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
      --                                                                                                                           _redeemer_3
      --                                                                                                                           (PlutusLedgerApi.V3.Data.Contexts.SpendingScript txOutRef_4
      --                                                                                                                                                                            (GHC.Maybe.Just _)) -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((txOutRef_4 PlutusTx.Eq.==) GHC.Base.. PlutusLedgerApi.V3.Data.Contexts.txInInfoOutRef) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_2));
      --                                                                            _ -> GHC.Types.False})
      -- @@@
      SPlutusV4 ->
        [ "590135010100322533357346464a666ae68cdc3a40046aae740044c8c8c8ca4c8c8cc94ccd5cd19b8800248000"
        , "4c02d241035054360013300100280194004d5d0800b003280160001918008009114800cc035241035054370091"
        , "2999ab9a3370e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae880124"
        , "666ae68d5d198011bac357426aae78dd51aba10074a094694064600200244a666aae7c00452f5c026644a666ae"
        , "68c8c94ccd5cd19b8f3007001300700213370e601000260100042940d5d08041aba135573c6ea80084cd5d0001"
        , "198020020008998020020009aba10013574400246eb8d5d09aab9e375400246eb4d5d09aba235573c6ea8004d5"
        , "5cf0008a5037546ae84d5d11aba200135573c6ea80045261300249010350543500232633573800300001"
        ]
  
  -- | Script that succeeds when datum is expected and datum is validated against txInfo
  -- Fails on malformed arguments
  datumIsWellformed :: SLanguage l -> Plutus l
  datumIsWellformed =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "37b9340a2e6f1450032bb02f755b1f1cb4f36bc89cf2bd2715ff4168"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- datumIsWellformed_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                        PlutusTx.Builtins.Internal.BuiltinData ->
      --                        PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- datumIsWellformed_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                    {datum'_4@(PlutusLedgerApi.V1.Scripts.Datum _) -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                                      {PlutusLedgerApi.V1.Scripts.Redeemer _r_5 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                                   {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_6
      --                                                                                                                                                                                                   (PlutusLedgerApi.V1.Data.Contexts.Spending _txOutRef_7) -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter ((datum'_4 PlutusTx.Eq.==) GHC.Base.. Data.Tuple.snd) GHC.Base.$ PlutusLedgerApi.V1.Data.Contexts.txInfoData txInfo_6)
      --                                                                                                                                                                                                                                                               then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                                               else GHC.Tuple.Prim.();
      --                                                                                                                                                    _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "5901140100003232222325333573466e1d200235573a6ea8d5d09aba20011533357346ae8ccc8c004004894ccd"
        , "55cf8008a5eb804c8c94ccd5cd19baf00830012200113233574060044466e9520003357406ea4008cd5d0000a5"
        , "eb80004cc0100100084cc0100100094c8c8cc94ccd5cd19b88002480004c02d241035054360013300100212233"
        , "001233221233001003002375c6ae84004d5d09aba200112200232300100122253350011300d491035054370022"
        , "15333573466e1d200000410021332330060060013370200890010009aab9e00235573a0026ea8d5d08011aba20"
        , "0137586ae84d5d11aba2357446ae88d5d11aba2357446ae88d55cf1baa357420022c200c2c6aae78dd50009193"
        , "19ab9c001002120011"
        ]
      -- ScriptHash "6d0768fb0a8bb127d6857e064645e2968a3b3266fc82e5233880a02e"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- datumIsWellformed_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                        PlutusTx.Builtins.Internal.BuiltinData ->
      --                        PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- datumIsWellformed_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                    {datum'_4@(PlutusLedgerApi.V1.Scripts.Datum _) -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                                      {PlutusLedgerApi.V1.Scripts.Redeemer _r_5 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                                   {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_6
      --                                                                                                                                                                                                   (PlutusLedgerApi.V1.Data.Contexts.Spending _txOutRef_7) -> if PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (datum'_4 PlutusTx.Eq.==) GHC.Base.$ (PlutusTx.Data.AssocMap.elems GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoData txInfo_6))
      --                                                                                                                                                                                                                                                               then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                                                               else GHC.Tuple.Prim.();
      --                                                                                                                                                    _ -> PlutusTx.Builtins.error GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "58a80100003223222325333573466e1d200235573a6ea8d5d09aba20011533357346ae8cc010cc8c0040048cc0"
        , "1d2f5c04466ae80d55cf001198018018009bab357426ae88d5d11aba2357446ae88d5d11aba2357446ae88d5d1"
        , "1aab9e37546ae840045844800458d55cf1baa001323001001223330044bd70112999ab9a3375e00a004266ae80"
        , "008cc0100100044cc0100100040048894ccd55cf80088018998011aba1001357440021"
        ]
      -- ScriptHash "581d94dbafe7b1d6315b15f4f8232e0217726b7c56af062e7a929aaa"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- datumIsWellformed_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                        PlutusTx.Builtins.Internal.BuiltinUnit
      -- datumIsWellformed_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
      --                                                                                                                _redeemer_3
      --                                                                                                                (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
      --                                                                                                                                                                 (GHC.Maybe.Just datum_5)) -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (datum_5 PlutusTx.Eq.==) GHC.Base.$ (PlutusTx.Data.AssocMap.elems GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoData txInfo_2)));
      --                                                                 _ -> GHC.Types.False})
      -- @@@
      SPlutusV3 ->
        [ "59013201010032322533357346464a666ae68cdc3a40046aae74004564c8c8cc94ccd5cd19b88002480004c021"
        , "2401035054360013300100280194004d5d0800b003280160001918008009114800cc0292410350543700912999"
        , "ab9a3370e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000"
        , "c8c84ccd5cd1aba3300133230010012330074bd701119aba035573c004660060060026eacd5d09aba2357446ae"
        , "88d5d11aba2357446ae88d5d11aba2357446aae78dd51aba10044a0944c8c00400488ccc01d2f5c044a666ae68"
        , "cdd7802801099aba0002330040040011330040040010018a500a5037546ae84d5d11aba200135573c6ea800452"
        , "6130034901035054350022253335573e00220062660046ae84004d5d1000919319ab9c00180001"
        ]
      -- ScriptHash "b8a8e91163013a8b637f7477421bf4546eeefde7290b112fcccd5c0a"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- datumIsWellformed_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                        PlutusTx.Builtins.Internal.BuiltinUnit
      -- datumIsWellformed_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
      --                                                                                                                _redeemer_3
      --                                                                                                                (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
      --                                                                                                                                                                 (GHC.Maybe.Just datum_5)) -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null GHC.Base.$ (PlutusTx.Data.List.filter (datum_5 PlutusTx.Eq.==) GHC.Base.$ (PlutusTx.Data.AssocMap.elems GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoData txInfo_2)));
      --                                                                 _ -> GHC.Types.False})
      -- @@@
      SPlutusV4 ->
        [ "59013201010032322533357346464a666ae68cdc3a40046aae74004564c8c8cc94ccd5cd19b88002480004c021"
        , "2401035054360013300100280194004d5d0800b003280160001918008009114800cc0292410350543700912999"
        , "ab9a3370e9000002080109991980300300099b81004480080046aae78008d55ce8009baa357426ae88d55cf000"
        , "c8c84ccd5cd1aba3300133230010012330074bd701119aba035573c004660060060026eacd5d09aba2357446ae"
        , "88d5d11aba2357446ae88d5d11aba2357446aae78dd51aba10044a0944c8c00400488ccc01d2f5c044a666ae68"
        , "cdd7802801099aba0002330040040011330040040010018a500a5037546ae84d5d11aba200135573c6ea800452"
        , "6130034901035054350022253335573e00220062660046ae84004d5d1000919319ab9c00180001"
        ]
  
  -- | Script that succeeds when inputs and outputs are not empty validated against txInfo
  -- Fails on malformed arguments and also if inputs or outputs are empty
  inputsOutputsAreNotEmptyNoDatum :: SLanguage l -> Plutus l
  inputsOutputsAreNotEmptyNoDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "b4730007df6e096ae54cdfb9e446b502921e198129b47f597780ea03"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- inputsOutputsAreNotEmptyNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                      PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- inputsOutputsAreNotEmptyNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
      --                                                          {PlutusLedgerApi.V1.Scripts.Redeemer _r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
      --                                                                                                       {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_4
      --                                                                                                                                                       _scriptPurpose_5 -> if PlutusTx.Data.List.null (PlutusLedgerApi.V1.Data.Contexts.txInfoInputs txInfo_4) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V1.Data.Contexts.txInfoOutputs txInfo_4)
      --                                                                                                                                                                            then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                            else GHC.Tuple.Prim.()}}
      -- @@@
      SPlutusV1 ->
        [ "59011001000032322253335734a64666ae68d5d1998009111111111005130a511357466600244444444440124c"
        , "4464646464646464646466666666660166eb0d5d08049bac357420106eacd5d08039bab3574200c6eb0d5d0802"
        , "9bac357420086ae8400cdd61aba100237586ae84004c8c8cc94ccd5cd19b88002480004c045241035054360013"
        , "3001002122330012375c6ae84004488008c8c0040048894cd40044c04d240103505437002215333573466e1d20"
        , "0000410021332330060060013370200890010009aab9e00235573a0026ea8d5d09aba2001357440026ae88004d"
        , "5d10009aba2001357440026ae88004d5d10009aba200135573c6ea8d5d09aab9e37540062c2008464c66ae7000"
        , "4008480041"
        ]
      -- ScriptHash "9348ca03cad04b0046a04c212ec6fdf473272ce3926bee4359a4adde"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- inputsOutputsAreNotEmptyNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                      PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- inputsOutputsAreNotEmptyNoDatum_0 redeemer_1 context_2 = case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_1 of
      --                                                          {PlutusLedgerApi.V1.Scripts.Redeemer _r_3 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_2 of
      --                                                                                                       {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_4
      --                                                                                                                                                       _scriptPurpose_5 -> if PlutusTx.Data.List.null (PlutusLedgerApi.V2.Data.Contexts.txInfoInputs txInfo_4) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V2.Data.Contexts.txInfoOutputs txInfo_4)
      --                                                                                                                                                                            then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                            else GHC.Tuple.Prim.()}}
      -- @@@
      SPlutusV2 ->
        [ "59012901000032322253335734a64666ae68d5d199800911111111111006130a51135746660024444444444440"
        , "144c44646464646464646464646466666666666601a6eb0d5d08059bac357420146eb0d5d08049bab357420106"
        , "eacd5d08039bac3574200c6eacd5d08029aba100437586ae8400cdd59aba100237566ae84004c8c8cc94ccd5cd"
        , "19b88002480004c04d24010350543600133001002122330012375c6ae84004488008c8c0040048894cd40044c0"
        , "55240103505437002215333573466e1d200000410021332330060060013370200890010009aab9e00235573a00"
        , "26ea8d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae"
        , "88004d55cf1baa357426aae78dd50018b0802119319ab9c0010021200101"
        ]
      -- ScriptHash "3e3c64e208b3c8c1b6fd2c74da9c72a23db29376a85a8653749bbee9"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- inputsOutputsAreNotEmptyNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                      PlutusTx.Builtins.Internal.BuiltinUnit
      -- inputsOutputsAreNotEmptyNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                              {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                              _redeemer_3
      --                                                                                                                              (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
      --                                                                                                                                                                               (GHC.Maybe.Just _)) -> GHC.Types.False;
      --                                                                               PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_5
      --                                                                                                                              _redeemer_6
      --                                                                                                                              _scriptPurpose_7 -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoOutputs txInfo_5))})
      -- @@@
      SPlutusV3 ->
        [ "5901a4010100322533357346464a6464666ae68cdc3a40046aae7400c4ca4cc00c8004d5d09aba200192509801"
        , "24c35573c00626002931199ab9a53233357346ae8ccc00488888888888888880409852889aba33300122222222"
        , "2222222200e262232323232323232323232323232323232333333333333333301237586ae84040dd61aba100f3"
        , "7586ae84038dd69aba100d37566ae84030dd61aba100b37566ae84028d5d08049bac357420106eacd5d08039ba"
        , "b3574200c6eb8d5d08029bab357420086eb0d5d080198009aba10023001357426ae88008c04dd69aba20013574"
        , "40026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013"
        , "57440026aae78dd51aba10064a094488c8c8cc94ccd5cd19b88002480004c02524010350543600133001002801"
        , "94004c018d5d0800b003280160001918008009114800cc02d2410350543700912999ab9a3370e9000002080109"
        , "991980300300099b81004480080046aae78008d55ce8009baa00137546ae84d5d11aba200135573c6ea8004526"
        , "130024910350543500232633573800300001"
        ]
      -- ScriptHash "04a0a4e1c62183843862ad0b9104a03d6928c0cab9f5d624f9c88692"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- inputsOutputsAreNotEmptyNoDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                      PlutusTx.Builtins.Internal.BuiltinUnit
      -- inputsOutputsAreNotEmptyNoDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                              {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                              _redeemer_3
      --                                                                                                                              (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
      --                                                                                                                                                                               (GHC.Maybe.Just _)) -> GHC.Types.False;
      --                                                                               PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_5
      --                                                                                                                              _redeemer_6
      --                                                                                                                              _scriptPurpose_7 -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoOutputs txInfo_5))})
      -- @@@
      SPlutusV4 ->
        [ "5901a4010100322533357346464a6464666ae68cdc3a40046aae7400c4ca4cc00c8004d5d09aba200192509801"
        , "24c35573c00626002931199ab9a53233357346ae8ccc00488888888888888880409852889aba33300122222222"
        , "2222222200e262232323232323232323232323232323232333333333333333301237586ae84040dd61aba100f3"
        , "7586ae84038dd69aba100d37566ae84030dd61aba100b37566ae84028d5d08049bac357420106eacd5d08039ba"
        , "b3574200c6eb8d5d08029bab357420086eb0d5d080198009aba10023001357426ae88008c04dd69aba20013574"
        , "40026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013"
        , "57440026aae78dd51aba10064a094488c8c8cc94ccd5cd19b88002480004c02524010350543600133001002801"
        , "94004c018d5d0800b003280160001918008009114800cc02d2410350543700912999ab9a3370e9000002080109"
        , "991980300300099b81004480080046aae78008d55ce8009baa00137546ae84d5d11aba200135573c6ea8004526"
        , "130024910350543500232633573800300001"
        ]
  
  -- | Script that succeeds when inputs and outputs are not empty validated against txInfo
  -- Fails on malformed arguments and also if inputs or outputs are empty
  inputsOutputsAreNotEmptyWithDatum :: SLanguage l -> Plutus l
  inputsOutputsAreNotEmptyWithDatum =
    decodeHexPlutus . mconcat . \case
      -- ScriptHash "02bf4789f87d26358cb94384a628c64d4544e8e536f661df181c9fd0"
      -- Preprocessed PlutusV1 Script:
      -- @@@
      -- inputsOutputsAreNotEmptyWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                        PlutusTx.Builtins.Internal.BuiltinData ->
      --                                        PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- inputsOutputsAreNotEmptyWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                                    {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                                           {PlutusLedgerApi.V1.Scripts.Redeemer _r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                                        {PlutusLedgerApi.V1.Data.Contexts.ScriptContext txInfo_5
      --                                                                                                                                                                                                        _scriptPurpose_6 -> if PlutusTx.Data.List.null (PlutusLedgerApi.V1.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V1.Data.Contexts.txInfoOutputs txInfo_5)
      --                                                                                                                                                                                                                             then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                             else GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV1 ->
        [ "590111010000323222253335734a64666ae68d5d1998009111111111005130a511357466600244444444440124"
        , "c4464646464646464646466666666660166eb0d5d08049bac357420106eacd5d08039bab3574200c6eb0d5d080"
        , "29bac357420086ae8400cdd61aba100237586ae84004c8c8cc94ccd5cd19b88002480004c04924010350543600"
        , "133001002122330012375c6ae84004488008c8c0040048894cd40044c051240103505437002215333573466e1d"
        , "200000410021332330060060013370200890010009aab9e00235573a0026ea8d5d09aba2001357440026ae8800"
        , "4d5d10009aba2001357440026ae88004d5d10009aba200135573c6ea8d5d09aab9e37540062c200a464c66ae70"
        , "004008480041"
        ]
      -- ScriptHash "d858e669a1da1f64e8fbf1031734d3486a6f50f6fe8c6db0d53d0a93"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- inputsOutputsAreNotEmptyWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                        PlutusTx.Builtins.Internal.BuiltinData ->
      --                                        PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- inputsOutputsAreNotEmptyWithDatum_0 datum_1 redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData datum_1 of
      --                                                                    {PlutusLedgerApi.V1.Scripts.Datum _ -> case PlutusTx.IsData.Class.unsafeFromBuiltinData redeemer_2 of
      --                                                                                                           {PlutusLedgerApi.V1.Scripts.Redeemer _r_4 -> case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                                                                                                        {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_5
      --                                                                                                                                                                                                        _scriptPurpose_6 -> if PlutusTx.Data.List.null (PlutusLedgerApi.V2.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V2.Data.Contexts.txInfoOutputs txInfo_5)
      --                                                                                                                                                                                                                             then PlutusTx.Builtins.error GHC.Tuple.Prim.()
      --                                                                                                                                                                                                                             else GHC.Tuple.Prim.()}}}
      -- @@@
      SPlutusV2 ->
        [ "590129010000323222253335734a64666ae68d5d199800911111111111006130a5113574666002444444444444"
        , "0144c44646464646464646464646466666666666601a6eb0d5d08059bac357420146eb0d5d08049bab35742010"
        , "6eacd5d08039bac3574200c6eacd5d08029aba100437586ae8400cdd59aba100237566ae84004c8c8cc94ccd5c"
        , "d19b88002480004c0512410350543600133001002122330012375c6ae84004488008c8c0040048894cd40044c0"
        , "59240103505437002215333573466e1d200000410021332330060060013370200890010009aab9e00235573a00"
        , "26ea8d5d09aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae"
        , "88004d55cf1baa357426aae78dd50018b0802919319ab9c0010021200101"
        ]
      -- ScriptHash "e979372cafd2822b678194dd1ccff2ca152ff4d5a6d9e73a32f163ff"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- inputsOutputsAreNotEmptyWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                        PlutusTx.Builtins.Internal.BuiltinUnit
      -- inputsOutputsAreNotEmptyWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                                {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                                _redeemer_3
      --                                                                                                                                (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
      --                                                                                                                                                                                 (GHC.Maybe.Nothing)) -> GHC.Types.False;
      --                                                                                 PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_5
      --                                                                                                                                _redeemer_6
      --                                                                                                                                _scriptPurpose_7 -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoOutputs txInfo_5))})
      -- @@@
      SPlutusV3 ->
        [ "5901a4010100322533357346464a6464666ae68cdc3a40046aae7400c4ca4cc00c8004d5d09aba200191801a4d"
        , "4a035573c00626002931199ab9a53233357346ae8ccc00488888888888888880409852889aba33300122222222"
        , "2222222200e262232323232323232323232323232323232333333333333333301237586ae84040dd61aba100f3"
        , "7586ae84038dd69aba100d37566ae84030dd61aba100b37566ae84028d5d08049bac357420106eacd5d08039ba"
        , "b3574200c6eb8d5d08029bab357420086eb0d5d080198009aba10023001357426ae88008c04dd69aba20013574"
        , "40026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013"
        , "57440026aae78dd51aba10064a094488c8c8cc94ccd5cd19b88002480004c02524010350543600133001002801"
        , "94004c018d5d0800b003280160001918008009114800cc02d2410350543700912999ab9a3370e9000002080109"
        , "991980300300099b81004480080046aae78008d55ce8009baa00137546ae84d5d11aba200135573c6ea8004526"
        , "130024910350543500232633573800300001"
        ]
      -- ScriptHash "9bdd5669aab46266cc856a414d8a7e01d1bb24b1bce2c1c0d88072d0"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- inputsOutputsAreNotEmptyWithDatum_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                        PlutusTx.Builtins.Internal.BuiltinUnit
      -- inputsOutputsAreNotEmptyWithDatum_0 arg_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData arg_1 of
      --                                                                                {PlutusLedgerApi.V3.Data.Contexts.ScriptContext _txInfo_2
      --                                                                                                                                _redeemer_3
      --                                                                                                                                (PlutusLedgerApi.V3.Data.Contexts.SpendingScript _txOutRef_4
      --                                                                                                                                                                                 (GHC.Maybe.Nothing)) -> GHC.Types.False;
      --                                                                                 PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_5
      --                                                                                                                                _redeemer_6
      --                                                                                                                                _scriptPurpose_7 -> GHC.Classes.not GHC.Base.$ (PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_5) GHC.Classes.|| PlutusTx.Data.List.null (PlutusLedgerApi.V3.Data.Contexts.txInfoOutputs txInfo_5))})
      -- @@@
      SPlutusV4 ->
        [ "5901a4010100322533357346464a6464666ae68cdc3a40046aae7400c4ca4cc00c8004d5d09aba200191801a4d"
        , "4a035573c00626002931199ab9a53233357346ae8ccc00488888888888888880409852889aba33300122222222"
        , "2222222200e262232323232323232323232323232323232333333333333333301237586ae84040dd61aba100f3"
        , "7586ae84038dd69aba100d37566ae84030dd61aba100b37566ae84028d5d08049bac357420106eacd5d08039ba"
        , "b3574200c6eb8d5d08029bab357420086eb0d5d080198009aba10023001357426ae88008c04dd69aba20013574"
        , "40026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba20013"
        , "57440026aae78dd51aba10064a094488c8c8cc94ccd5cd19b88002480004c02524010350543600133001002801"
        , "94004c018d5d0800b003280160001918008009114800cc02d2410350543700912999ab9a3370e9000002080109"
        , "991980300300099b81004480080046aae78008d55ce8009baa00137546ae84d5d11aba200135573c6ea8004526"
        , "130024910350543500232633573800300001"
        ]
  
  -- | Script that succeeds only if any the inputs also appears in the reference inputs
  inputsOverlapsWithRefInputs :: SLanguage l -> Plutus l
  inputsOverlapsWithRefInputs =
    decodeHexPlutus . mconcat . \case
      SPlutusV1 -> error "Script not available in PlutusV1"
      -- ScriptHash "bc562d8aba01a7534d18775cbb8a3b15c388805ada374bd46c8a506d"
      -- Preprocessed PlutusV2 Script:
      -- @@@
      -- inputsOverlapsWithRefInputs_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                  PlutusTx.Builtins.Internal.BuiltinData ->
      --                                  PlutusTx.Builtins.Internal.BuiltinData -> ()
      -- inputsOverlapsWithRefInputs_0 _datum_1 _redeemer_2 context_3 = case PlutusTx.IsData.Class.unsafeFromBuiltinData context_3 of
      --                                                                {PlutusLedgerApi.V2.Data.Contexts.ScriptContext txInfo_4
      --                                                                                                                _scriptPurpose_5 -> if PlutusTx.Data.List.any (\x_6 -> (PlutusTx.Maybe.isJust GHC.Base.. PlutusTx.Data.List.find (PlutusTx.Eq.== x_6)) GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoReferenceInputs txInfo_4) GHC.Base.$ PlutusLedgerApi.V2.Data.Contexts.txInfoInputs txInfo_4
      --                                                                                                                                     then GHC.Tuple.Prim.()
      --                                                                                                                                     else PlutusTx.Builtins.error GHC.Tuple.Prim.()}
      -- @@@
      SPlutusV2 ->
        [ "59060d010000323232323233223232323232323232322223232533357346646002002446660209408c894ccd5c"
        , "d19a9801198031111111111110059312514a029444cc014014004c8c00400488ccc04c060894ccd5cd19192999"
        , "ab9a32325333573466e3cc050008c0500044cdc3980c001180c0008a50357420046ae840084ccc040d5d09aba2"
        , "0022222333014357426ae8801488894ccd5cd19192999ab9a33024357420046ae840044c94cd4c004d5d09aba2"
        , "003213353002357426ae8800c8c94c8ccd5cd19b8748000d55ce8010992999ab9a3370e90001aab9d00113302a"
        , "357426aae7800cd5d09aab9e00113002498dd500189800a4c466605400844466605a00c444a666ae68cdc38030"
        , "018a999ab9a3370e00a004266e1c0100045280a5024a04940dd500125013353001357426ae88008928251301b2"
        , "00114a06aae78dd50029aab9e37540102a666ae68cccc04c8cc8c0040048cc085289199ab9a3370e90001bad35"
        , "573c0024660060060024940dd580091199980a919b8748000dd68009119b87375a0046eb4004dd58011bab0010"
        , "07003153335734a64666ae68cdc3a40006aae74dd50038a999ab9a3370e90001aab9d375400629444c00526130"
        , "014988c94c8ccd5cd19b8748008d55ce8010992999ab9a3370e90011aab9d00113371e6eb8d5d09aab9e003375"
        , "c6ae84d55cf0008980124c6ea80144c0052625333573466e1d200435573a004264a666ae68cdc3a40086aae740"
        , "044cdd79aba135573c0066ae84d55cf0008a50375400a2940dd50038a99a8029099a801119b8f0020014a0266a"
        , "0024941288a5014a029408c8d400400588c8d400400585281aab9e375400c6aae78dd500108911801002099802"
        , "0020008008009980091111111111100613080a8b1119191919191919191919191999999999998069bac3574201"
        , "66eb0d5d08051bac357420126eacd5d08041bab3574200e6eb0d5d08031bab3574200a6ae84010dd61aba10033"
        , "7566ae84008dd59aba10013016357426ae88004d5d10009aba2001357440026ae88004d5d10009aba200135744"
        , "0026ae88004d5d10009aba200135573c6ea8d5d09aab9e37540084464446600600400264600200244466660224"
        , "66660244944888cc8c0040048cc059289199ab9a300b35573c0024660060060024940014008064888cccc0508c"
        , "c8c0040048cc059289199ab9a300b35573c0024660060060024940018888c8c94ccd5cd19baf00235573a00a2a"
        , "666ae68cc030d55cf0041aab9e005133300b00b00700414a02a666ae68c034d55cf00409998058058038048998"
        , "00a999ab9a300d35573c00a297adef6c60133574000a97adef6c60004323001001222333301b24a044464a666a"
        , "e68c04c0044ccc01c01c01800c54ccd5cd19baf35573a0080102a666ae68cc048d55cf00700089998088088069"
        , "9a80b8030018a5013323300800800133574000800c0066aae7800c004088d55ce80300200d80100c1991800800"
        , "910911999806100111119a998038038900080119aba0003004002013120012223232323333005357420066eacd"
        , "5d08011aba10013300775c6ae84d5d10009aba2001357440026aae78dd500191198031baa00122323335008330"
        , "01232122300200330063574200266002402201a006004a016460046ae84d55cf1baa001233003375400244666a"
        , "00866a01046eb8d5d0800804801000899112999ab9a33710002900009806248103505436001330030010023230"
        , "0100122253350011300c490103505437002215333573466e1d2000004100213323300600600133702008900100"
        , "091198009aab9d00235573c00446eb4d5d09aba235573c6ea80048894ccd55cf80088018998011aba100135744"
        , "002244004244244660020080064464a64666ae68cdc3a40006aae740084c94ccd5cd19b8748000d55ce800899b"
        , "8f375c6ae84d55cf0019bae357426aae780044c009263754006260029312999ab9a3370e90011aab9d00213253"
        , "33573466e1d200235573a002266e3cdd71aba135573c0066eb8d5d09aab9e00114a06ea800c5281baa00222232"
        , "5333573466e1d200235573a0022646466600a6eb4d5d08011bad357420026eb4d5d09aba2001357440026aae78"
        , "0044c009263754006244002464c66ae7000400848005"
        ]
      -- ScriptHash "8b97fb204b3c00be3b9df89288257b0bc816b41833d70effbdecfac7"
      -- Preprocessed PlutusV3 Script:
      -- @@@
      -- inputsOverlapsWithRefInputs_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                  PlutusTx.Builtins.Internal.BuiltinUnit
      -- inputsOverlapsWithRefInputs_0 context_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData context_1 of
      --                                                                              {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
      --                                                                                                                              _redeemer_3
      --                                                                                                                              _scriptPurpose_4 -> PlutusTx.Data.List.any (\x_5 -> (PlutusTx.Maybe.isJust GHC.Base.. PlutusTx.Data.List.find (PlutusTx.Eq.== x_5)) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoReferenceInputs txInfo_2) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_2;
      --                                                                               _ -> GHC.Types.False})
      -- @@@
      SPlutusV3 ->
        [ "5905fa01010032323232323232323225333573464646646002002446660169408c894ccd5cd498011980311111"
        , "11111111111007934928d280528899802802800991800800911998074008894ccd5cd19192999ab9a323253335"
        , "73466e3cc048008c0480044cdc3980980118098008a50357420046ae840084ccc038d5d09aba20022222333012"
        , "357426ae8801488894ccd5cd19192999ab9a3301d357420046ae8400464cc0648004d5d09aba2002949980d100"
        , "09aba135744005232532333573466e1d200035573a004264a666ae68cdc3a40006aae740044cc088d5d09aab9e"
        , "003357426aae780044c009263754006260029311998110021111998128031112999ab9a3370e00c0062a666ae6"
        , "8cdc3802801099b8700400114a02940928125037540054a0c9980c90009aba13574400324a14a20a5035573c6e"
        , "a8014d55cf1baa0081533357346666026466460020024660389448ccd5cd19b8748000dd69aab9e00123300300"
        , "300124a06eac00488cccc0548cdc3a40006eb400488cdc39bad002375a0026eac008dd58008038018a999ab9a5"
        , "32333573466e1d200035573a6ea801c54ccd5cd19b8748000d55ce9baa00314a2260029309800a4c464a64666a"
        , "e68cdc3a40046aae740084c94ccd5cd19b8748008d55ce800899b8f375c6ae84d55cf0019bae357426aae78004"
        , "4c00926375400a260029312999ab9a3370e90021aab9d0021325333573466e1d200435573a002266ebcd5d09aa"
        , "b9e003357426aae780045281baa00514a06ea801c640165200523371e0040034a0c800c928528829405280a502"
        , "329001800988ca4006002614a06aae78dd50031aab9e3754004300100209980200200080080099800911111111"
        , "111111100813111919191919191919191919191919191919999999999999998091bac357420206eb0d5d08079b"
        , "ac3574201c6eb4d5d08069bab357420186eb0d5d08059bab357420146ae84024dd61aba100837566ae8401cdd5"
        , "9aba1006375c6ae84014dd59aba100437586ae8400cc004d5d080118009aba135744004602ceb4d5d10009aba2"
        , "001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009a"
        , "ba200135573c6ea8d5d09aab9e37540084464446600600400264600200244466660184666601a4944888cc8c00"
        , "40048cc045289199ab9a300b35573c002466006006002494001400a000444666601e466460020024660229448c"
        , "cd5cd18059aab9e00123300300300124a000c4446464a666ae68cdd78011aab9d005153335734660186aae7802"
        , "0d55cf00289998058058038020a50153335734601a6aae780204ccc02c02c01c0244cc0054ccd5cd18069aab9e"
        , "00514bd6f7b630099aba00054bd6f7b630002191800800911199980b125022232533357346026002266600e00e"
        , "00c0062a666ae68cdd79aab9d004008153335734660246aae780380044ccc044044034cd405401800c52809991"
        , "980400400099aba000400600335573c00600300035573a00c0090000028000a4c2601492010350543500332300"
        , "100122122333300920022223353300700712001002335740006008005000120012223232323333005357420066"
        , "eacd5d08011aba10013300775c6ae84d5d10009aba2001357440026aae78dd50019119191992999ab9a3371000"
        , "4900009805a481035054360013300100280194004c018d5d0800b003280160001918008009114800cc03524103"
        , "50543700912999ab9a3370e9000002080109991980300300099b81004480080046aae78008d55ce8009baa0012"
        , "375c6ae84d55cf1baa0012375a6ae84d5d11aab9e3754002444a666aae7c004400c4cc008d5d08009aba200122"
        , "32532333573466e1d200035573a004264a666ae68cdc3a40006aae740044cdc79bae357426aae7800cdd71aba1"
        , "35573c00226004931baa0031300149894ccd5cd19b8748008d55ce8010992999ab9a3370e90011aab9d0011337"
        , "1e6eb8d5d09aab9e003375c6ae84d55cf0008a5037540062940dd5001111192999ab9a3370e90011aab9d00113"
        , "232333005375a6ae84008dd69aba1001375a6ae84d5d10009aba200135573c00226004931baa00323263357380"
        , "030001"
        ]
      -- ScriptHash "e049bc84462c6e11f2b965d5aaba0d59b745fc2e8522bc57aa803ce3"
      -- Preprocessed PlutusV4 Script:
      -- @@@
      -- inputsOverlapsWithRefInputs_0 :: PlutusTx.Builtins.Internal.BuiltinData ->
      --                                  PlutusTx.Builtins.Internal.BuiltinUnit
      -- inputsOverlapsWithRefInputs_0 context_1 = PlutusTx.Prelude.check GHC.Base.$ (case PlutusTx.IsData.Class.unsafeFromBuiltinData context_1 of
      --                                                                              {PlutusLedgerApi.V3.Data.Contexts.ScriptContext txInfo_2
      --                                                                                                                              _redeemer_3
      --                                                                                                                              _scriptPurpose_4 -> PlutusTx.Data.List.any (\x_5 -> (PlutusTx.Maybe.isJust GHC.Base.. PlutusTx.Data.List.find (PlutusTx.Eq.== x_5)) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoReferenceInputs txInfo_2) GHC.Base.$ PlutusLedgerApi.V3.Data.Contexts.txInfoInputs txInfo_2;
      --                                                                               _ -> GHC.Types.False})
      -- @@@
      SPlutusV4 ->
        [ "5905fa01010032323232323232323225333573464646646002002446660169408c894ccd5cd498011980311111"
        , "11111111111007934928d280528899802802800991800800911998074008894ccd5cd19192999ab9a323253335"
        , "73466e3cc048008c0480044cdc3980980118098008a50357420046ae840084ccc038d5d09aba20022222333012"
        , "357426ae8801488894ccd5cd19192999ab9a3301d357420046ae8400464cc0648004d5d09aba2002949980d100"
        , "09aba135744005232532333573466e1d200035573a004264a666ae68cdc3a40006aae740044cc088d5d09aab9e"
        , "003357426aae780044c009263754006260029311998110021111998128031112999ab9a3370e00c0062a666ae6"
        , "8cdc3802801099b8700400114a02940928125037540054a0c9980c90009aba13574400324a14a20a5035573c6e"
        , "a8014d55cf1baa0081533357346666026466460020024660389448ccd5cd19b8748000dd69aab9e00123300300"
        , "300124a06eac00488cccc0548cdc3a40006eb400488cdc39bad002375a0026eac008dd58008038018a999ab9a5"
        , "32333573466e1d200035573a6ea801c54ccd5cd19b8748000d55ce9baa00314a2260029309800a4c464a64666a"
        , "e68cdc3a40046aae740084c94ccd5cd19b8748008d55ce800899b8f375c6ae84d55cf0019bae357426aae78004"
        , "4c00926375400a260029312999ab9a3370e90021aab9d0021325333573466e1d200435573a002266ebcd5d09aa"
        , "b9e003357426aae780045281baa00514a06ea801c640165200523371e0040034a0c800c928528829405280a502"
        , "329001800988ca4006002614a06aae78dd50031aab9e3754004300100209980200200080080099800911111111"
        , "111111100813111919191919191919191919191919191919999999999999998091bac357420206eb0d5d08079b"
        , "ac3574201c6eb4d5d08069bab357420186eb0d5d08059bab357420146ae84024dd61aba100837566ae8401cdd5"
        , "9aba1006375c6ae84014dd59aba100437586ae8400cc004d5d080118009aba135744004602ceb4d5d10009aba2"
        , "001357440026ae88004d5d10009aba2001357440026ae88004d5d10009aba2001357440026ae88004d5d10009a"
        , "ba200135573c6ea8d5d09aab9e37540084464446600600400264600200244466660184666601a4944888cc8c00"
        , "40048cc045289199ab9a300b35573c002466006006002494001400a000444666601e466460020024660229448c"
        , "cd5cd18059aab9e00123300300300124a000c4446464a666ae68cdd78011aab9d005153335734660186aae7802"
        , "0d55cf00289998058058038020a50153335734601a6aae780204ccc02c02c01c0244cc0054ccd5cd18069aab9e"
        , "00514bd6f7b630099aba00054bd6f7b630002191800800911199980b125022232533357346026002266600e00e"
        , "00c0062a666ae68cdd79aab9d004008153335734660246aae780380044ccc044044034cd405401800c52809991"
        , "980400400099aba000400600335573c00600300035573a00c0090000028000a4c2601492010350543500332300"
        , "100122122333300920022223353300700712001002335740006008005000120012223232323333005357420066"
        , "eacd5d08011aba10013300775c6ae84d5d10009aba2001357440026aae78dd50019119191992999ab9a3371000"
        , "4900009805a481035054360013300100280194004c018d5d0800b003280160001918008009114800cc03524103"
        , "50543700912999ab9a3370e9000002080109991980300300099b81004480080046aae78008d55ce8009baa0012"
        , "375c6ae84d55cf1baa0012375a6ae84d5d11aab9e3754002444a666aae7c004400c4cc008d5d08009aba200122"
        , "32532333573466e1d200035573a004264a666ae68cdc3a40006aae740044cdc79bae357426aae7800cdd71aba1"
        , "35573c00226004931baa0031300149894ccd5cd19b8748008d55ce8010992999ab9a3370e90011aab9d0011337"
        , "1e6eb8d5d09aab9e003375c6ae84d55cf0008a5037540062940dd5001111192999ab9a3370e90011aab9d00113"
        , "232333005375a6ae84008dd69aba1001375a6ae84d5d10009aba200135573c00226004931baa00323263357380"
        , "030001"
        ]
  