{
  "contractName": "CERTFRegistry",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "GrantedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "RegisteredAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "RevokedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevActor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newActor",
          "type": "address"
        }
      ],
      "name": "UpdatedActor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevBeneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newBeneficiary",
          "type": "address"
        }
      ],
      "name": "UpdatedBeneficiary",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevEngine",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newEngine",
          "type": "address"
        }
      ],
      "name": "UpdatedEngine",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedFinalizedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevObligor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newObligor",
          "type": "address"
        }
      ],
      "name": "UpdatedObligor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "UpdatedTerms",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "approveActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "approvedActors",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "decodeEvent",
      "outputs": [
        {
          "internalType": "enum EventType",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        }
      ],
      "name": "encodeEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getActor",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getEngine",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getEventAtIndex",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getFinalizedState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForStateAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduleIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextUnderlyingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getOwnership",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getSchedule",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getScheduleLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUintValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRootAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "isEventSettled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_payoff",
          "type": "int256"
        }
      ],
      "name": "markEventAsSettled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "pendingEvent",
          "type": "bytes32"
        }
      ],
      "name": "pushPendingEvent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "setActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCounterpartyBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyObligor",
          "type": "address"
        }
      ],
      "name": "setCounterpartyObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCreatorBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorObligor",
          "type": "address"
        }
      ],
      "name": "setCreatorObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        }
      ],
      "name": "setEngine",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setFinalizedState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_1",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        },
        {
          "internalType": "bytes32[]",
          "name": "schedule",
          "type": "bytes32[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "ownership",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "registerAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getTerms",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_1",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum CouponType",
              "name": "couponType",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "issueDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRedemption",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfTermination",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfCoupon",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "nominalPrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "issuePrice",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "denominationRatio",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponRate",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "settlementPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "fixingPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "exercisePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfRedemption",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfTermination",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfCoupon",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_1",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CERTFTerms",
          "name": "terms",
          "type": "tuple"
        }
      ],
      "name": "setTerms",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getAddressValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getBytes32ValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getPeriodValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IP",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getCycleValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "enum S",
              "name": "s",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IPS",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getContractReferenceValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "object",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "object2",
              "type": "bytes32"
            },
            {
              "internalType": "enum ContractReferenceType",
              "name": "_type",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractReferenceRole",
              "name": "role",
              "type": "uint8"
            }
          ],
          "internalType": "struct ContractReference",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"GrantedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"RegisteredAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"}],\"name\":\"RevokedAccess\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevActor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newActor\",\"type\":\"address\"}],\"name\":\"UpdatedActor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevBeneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"UpdatedBeneficiary\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevEngine\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newEngine\",\"type\":\"address\"}],\"name\":\"UpdatedEngine\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedFinalizedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prevObligor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newObligor\",\"type\":\"address\"}],\"name\":\"UpdatedObligor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"}],\"name\":\"UpdatedState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"UpdatedTerms\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"}],\"name\":\"approveActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"approvedActors\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"decodeEvent\",\"outputs\":[{\"internalType\":\"enum EventType\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"}],\"name\":\"encodeEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getActor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getAddressValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getBytes32ValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getContractReferenceValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getCycleValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getEngine\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getEnumValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getEventAtIndex\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getFinalizedState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForStateAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduleIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getNextUnderlyingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getOwnership\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"creatorObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyBeneficiary\",\"type\":\"address\"}],\"internalType\":\"struct AssetOwnership\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getPeriodValueForTermsAttribute\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getSchedule\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getScheduleLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getState\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"getTerms\",\"outputs\":[{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUIntValueForTermsAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"attribute\",\"type\":\"bytes32\"}],\"name\":\"getUintValueForStateAttribute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRootAccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"isEventSettled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"int256\",\"name\":\"_payoff\",\"type\":\"int256\"}],\"name\":\"markEventAsSettled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popNextScheduledEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"}],\"name\":\"popPendingEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"pendingEvent\",\"type\":\"bytes32\"}],\"name\":\"pushPendingEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"terms\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"schedule\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"creatorObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyObligor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyBeneficiary\",\"type\":\"address\"}],\"internalType\":\"struct AssetOwnership\",\"name\":\"ownership\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"registerAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"methodSignature\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAccess\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"actor\",\"type\":\"address\"}],\"name\":\"setActor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCounterpartyBeneficiary\",\"type\":\"address\"}],\"name\":\"setCounterpartyBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCounterpartyObligor\",\"type\":\"address\"}],\"name\":\"setCounterpartyObligor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCreatorBeneficiary\",\"type\":\"address\"}],\"name\":\"setCreatorBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newCreatorObligor\",\"type\":\"address\"}],\"name\":\"setCreatorObligor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"engine\",\"type\":\"address\"}],\"name\":\"setEngine\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setFinalizedState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractPerformance\",\"name\":\"contractPerformance\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonPerformingDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exerciseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"terminationDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCouponDay\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"interestScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"notionalScalingMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextPrincipalRedemptionPayment\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseAmount\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"exerciseQuantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponAmountFixed\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"marginFactor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"adjustmentFactor\",\"type\":\"int256\"}],\"internalType\":\"struct State\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"setState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractRole\",\"name\":\"contractRole\",\"type\":\"uint8\"},{\"internalType\":\"enum DayCountConvention\",\"name\":\"dayCountConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"businessDayConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum EndOfMonthConvention\",\"name\":\"endOfMonthConvention\",\"type\":\"uint8\"},{\"internalType\":\"enum CouponType\",\"name\":\"couponType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialExchangeDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"issueDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRedemption\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfTermination\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfCoupon\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"nominalPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"issuePrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"quantity\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"denominationRatio\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"couponRate\",\"type\":\"int256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"gracePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"delinquencyPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"settlementPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"fixingPeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IP\",\"name\":\"exercisePeriod\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfRedemption\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfTermination\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"},{\"internalType\":\"enum P\",\"name\":\"p\",\"type\":\"uint8\"},{\"internalType\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfCoupon\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CERTFTerms\",\"name\":\"terms\",\"type\":\"tuple\"}],\"name\":\"setTerms\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveActor(address)\":{\"details\":\"Can only be called by the owner of the contract.\",\"params\":{\"actor\":\"address of the actor\"}},\"getActor(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"address of the asset actor\"}},\"getEngine(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"address of the engine of the asset\"}},\"getEventAtIndex(bytes32,uint256)\":{\"params\":{\"assetId\":\"id of the asset\",\"index\":\"index of the event to return\"},\"returns\":{\"_0\":\"Event\"}},\"getFinalizedState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getNextScheduleIndex(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Index\"}},\"getNextScheduledEvent(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"event\"}},\"getOwnership(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"addresses of all owners of the asset\"}},\"getSchedule(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"the schedule\"}},\"getScheduleLength(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"Length of the schedule\"}},\"getState(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"state of the asset\"}},\"getTerms(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"terms of the asset\"}},\"grantAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to grant access to\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"hasAccess(bytes32,bytes4,address)\":{\"params\":{\"account\":\"address of the account for which to check access\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"},\"returns\":{\"_0\":\"true if allowed access\"}},\"hasRootAccess(bytes32,address)\":{\"params\":{\"account\":\"address of the account for which to check root acccess\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if has root access\"}},\"isEventSettled(bytes32,bytes32)\":{\"params\":{\"_event\":\"event (encoded)\",\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if event was settled\"}},\"isRegistered(bytes32)\":{\"params\":{\"assetId\":\"id of the asset\"},\"returns\":{\"_0\":\"true if asset exist\"}},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"_event\":\"event (encoded) to be marked as settled\",\"assetId\":\"id of the asset\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"popNextScheduledEvent(bytes32)\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\"}},\"registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)\":{\"params\":{\"actor\":\"account which is allowed to update the asset state\",\"admin\":\"account which as admin rights (optional)\",\"engine\":\"ACTUS Engine of the asset\",\"ownership\":\"ownership of the asset\",\"schedule\":\"schedule of the asset\",\"state\":\"initial state of the asset\",\"terms\":\"asset specific terms (CERTFTerms)\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"revokeAccess(bytes32,bytes4,address)\":{\"details\":\"Can only be called by an authorized account.\",\"params\":{\"account\":\"address of the account to revoke access for\",\"assetId\":\"id of the asset\",\"methodSignature\":\"function / method signature (4 byte keccak256 hash of the method selector)\"}},\"setActor(bytes32,address)\":{\"params\":{\"actor\":\"address of the Actor contract\",\"assetId\":\"id of the asset\"}},\"setCounterpartyBeneficiary(bytes32,address)\":{\"details\":\"Can only be updated by the current counterparty beneficiary or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCounterpartyBeneficiary\":\"address of the new beneficiary\"}},\"setCounterpartyObligor(bytes32,address)\":{\"details\":\"Can only be updated by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCounterpartyObligor\":\"address of the new counterparty obligor\"}},\"setCreatorBeneficiary(bytes32,address)\":{\"details\":\"Can only be updated by the current creator beneficiary or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCreatorBeneficiary\":\"address of the new beneficiary\"}},\"setCreatorObligor(bytes32,address)\":{\"details\":\"Can only be updated by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"newCreatorObligor\":\"address of the new creator obligor\"}},\"setEngine(bytes32,address)\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"engine\":\"new engine address\"}},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"details\":\"Can only be updated by the assets actor or by an authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"state\":\"next state of the asset\"}},\"setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))\":{\"details\":\"Can only be set by authorized account.\",\"params\":{\"assetId\":\"id of the asset\",\"terms\":\"new terms\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"CERTFRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveActor(address)\":{\"notice\":\"Approves the address of an actor contract e.g. for registering assets.\"},\"getActor(bytes32)\":{\"notice\":\"Returns the address of the actor which is allowed to update the state of the asset.\"},\"getEngine(bytes32)\":{\"notice\":\"Returns the address of a the ACTUS engine corresponding to the ContractType of an asset.\"},\"getEpochOffset(uint8)\":{\"notice\":\"Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp\"},\"getEventAtIndex(bytes32,uint256)\":{\"notice\":\"Returns an event for a given position (index) in a schedule of a given asset.\"},\"getFinalizedState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getNextScheduleIndex(bytes32)\":{\"notice\":\"Returns the index of the next event to be processed for a schedule of an asset.\"},\"getNextScheduledEvent(bytes32)\":{\"notice\":\"Returns the next event to process.\"},\"getNextUnderlyingEvent(bytes32)\":{\"notice\":\"If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event.\"},\"getOwnership(bytes32)\":{\"notice\":\"Retrieves the registered addresses of owners (creator, counterparty) of an asset.\"},\"getSchedule(bytes32)\":{\"notice\":\"Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)\"},\"getScheduleLength(bytes32)\":{\"notice\":\"Returns the length of a schedule of a given asset.\"},\"getState(bytes32)\":{\"notice\":\"Returns the state of an asset.\"},\"getTerms(bytes32)\":{\"notice\":\"Returns the terms of an asset.\"},\"grantAccess(bytes32,bytes4,address)\":{\"notice\":\"Grant access to an account to call a specific method on a specific asset.\"},\"hasAccess(bytes32,bytes4,address)\":{\"notice\":\"Check whether an account is allowed to call a specific method on a specific asset.\"},\"hasRootAccess(bytes32,address)\":{\"notice\":\"Check whether an account has root access for a specific asset.\"},\"isEventSettled(bytes32,bytes32)\":{\"notice\":\"Returns true if an event of an assets schedule was settled\"},\"isRegistered(bytes32)\":{\"notice\":\"Returns if there is an asset registerd for a given assetId\"},\"markEventAsSettled(bytes32,bytes32,int256)\":{\"notice\":\"Mark an event as settled\"},\"popNextScheduledEvent(bytes32)\":{\"notice\":\"Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)\"},\"registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)\":{\"notice\":\"@param assetId id of the asset\"},\"revokeAccess(bytes32,bytes4,address)\":{\"notice\":\"Revoke access for an account to call a specific method on a specific asset.\"},\"setActor(bytes32,address)\":{\"notice\":\"Set the address of the Actor contract which should be going forward.\"},\"setCounterpartyBeneficiary(bytes32,address)\":{\"notice\":\"Updates the address of the default beneficiary of cashflows going to the counterparty.\"},\"setCounterpartyObligor(bytes32,address)\":{\"notice\":\"Update the address of the counterparty which has to fulfill obligations for the counterparty of the asset.\"},\"setCreatorBeneficiary(bytes32,address)\":{\"notice\":\"Update the address of the default beneficiary of cashflows going to the creator.\"},\"setCreatorObligor(bytes32,address)\":{\"notice\":\"Update the address of the obligor which has to fulfill obligations for the creator of the asset.\"},\"setEngine(bytes32,address)\":{\"notice\":\"Set the engine address which should be used for the asset going forward.\"},\"setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next finalized state of an asset.\"},\"setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))\":{\"notice\":\"Sets next state of an asset.\"},\"setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))\":{\"notice\":\"Set the terms of the asset\"}},\"notice\":\"Registry for ACTUS Protocol assets\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/CERTFRegistry.sol\":\"CERTFRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/AccessControl.sol\":{\"keccak256\":\"0x7cb99654f112c88d67ac567b688f2d38e54bf2d4eeb5c3df12bac7d68c85c6e8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://836ccdb22ebced3535672e70a0c41803b3064872ab18bfeeafff6c4437f128c2\",\"dweb:/ipfs/QmV3RuN1vmHoiZUFymS6FHeEHkcZy1yZyR13sfMwEDyjbr\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/IAccessControl.sol\":{\"keccak256\":\"0xbbe1aada0583637e5ae8b0a09ae59d629c1da70bde5a3f291f5f0ed42440d091\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36ab01d00a9ebd59822247cdc7bee3c70af062e2c9408e8f80e1656fc9d2761c\",\"dweb:/ipfs/QmSQzma4M2TDZup2dERJi368F8z9UQQ1zyUsq8e41hgg2F\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol\":{\"keccak256\":\"0x9899864abf65d99906f23a24d6b4d52e1c6102c11993dad09f90e1d7bbc49744\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cd11e167f393e04f82f0619080f778239992d730b51b1771aaabdddf627ebdaf\",\"dweb:/ipfs/QmXaMYWTLW5xzhjkotfX63dtfRk1MsqJgM9uiqAUg6vtXe\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistryStorage.sol\":{\"keccak256\":\"0x872f4fd27fe80b6b3826bdaeaacdb77fb529d34235735f82e1413a5fe655f68b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c24b8fa53dfb2a11c67053c4b00de83307e45c83229e4b44f71d21eb9b0e5abd\",\"dweb:/ipfs/QmetZ6ptmsueoaCxjBMqpaZYdHgpjqPhjZurKbG2ZudbqY\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol\":{\"keccak256\":\"0xe5b75a0d1ff75775c43bdd46fb55d0f28800b311a48f7064acda7d35036bf738\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://652d2218a7190f85e00372a5ade97895fc303b909f3b63398dbcfabf634adda9\",\"dweb:/ipfs/QmVV4Su9V2K4mYbquft5rqv7SSyR95RcHgU4E2iAceKW1j\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IBaseRegistry.sol\":{\"keccak256\":\"0x62682585e8feaa25478d9aebe2f43861e36d67604adfd2dc23da8260a2f5728f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2ecdf3ac27c4425fee720cb2a744304678cac563d89cb21e43f8302a4864f013\",\"dweb:/ipfs/QmSL8qM6bytA7eN1cuBbBy3B5rNvmyALGExeGXUApTeA5N\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Ownership/IOwnershipRegistry.sol\":{\"keccak256\":\"0x6e7d79031d9ab6d8366e767e96bbef6282cd9727956b0f6a70b70ba57799afc7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d2e1e72ffc43ce52bb06eb5c5fa61d9dc14d40c33ac3035e5d881e0365aa722\",\"dweb:/ipfs/QmaQ1SqtsZtPHjtdSbGTwSJvRPu36d7S4ijyfUMYcto5uJ\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Ownership/OwnershipRegistry.sol\":{\"keccak256\":\"0x3208a383e52d2ac8417093f9d165c1a6f32f625988f59fec26aeddff0dbcc490\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://45593942700d2bbdbe86f9420c9c365c503845089745a0f7ad7ffa811e559ed6\",\"dweb:/ipfs/QmeTLQdx1C6vnWmtrXbLGwaSk2axKFEzeiX6TQesTCjadZ\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/IScheduleRegistry.sol\":{\"keccak256\":\"0xe7e24ae32f711c7b4b60d1160cb085b4ba047ff07ccea2df3b4bf120c2385ed6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea4f8bbb0a60f0b9484307c3ce880005e1d4e39c42fd07ca16dc263001584cdb\",\"dweb:/ipfs/Qmdo1tuJ93asEMGq74g38vxfRMmoxXogZZczHjuef2Mx8R\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleEncoder.sol\":{\"keccak256\":\"0x887c1085da0a8f7b055ae73bc3337228d70cef2296521103abb5fcb53315313e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cb408a6f3e5f9394eacaeeaeb2d38db05f994b952cfaa6ca896c0af978cf27d7\",\"dweb:/ipfs/QmeDp1TWA1rGijSgQUPwCJoc933gPD8FVTkDTupppxuZhS\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/ScheduleRegistry.sol\":{\"keccak256\":\"0x5a377f9877c1748cf2e6ee158306f204e5d740e82ad2aa3b3ca680258edc8c36\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ad876b340f89357f3baf8dae0bfecd3758323f93019d1b4543da387f720c2f73\",\"dweb:/ipfs/QmQyDtzUtGgEz3JXnpU8qdg6tHAP3KWAfwgY6Y2Z8RytJo\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol\":{\"keccak256\":\"0x1008f735ba366f9a638199d8ec4fa31b192c8745491527278d97717426d6d609\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://decc19c372fbefee7c369678114861def1c748748154966e2ee5e11e690b9039\",\"dweb:/ipfs/QmXjZhoNak7uUmYZMj7sAdijzsqLpDoh6T2bYcRDVgX6z6\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateEncoder.sol\":{\"keccak256\":\"0x2668d331c79ff3eb189a5fd813fdc77ff9adb82c8c6323f3b09fd72e47674492\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://01ecc394db0ce16d5e415b55dd0bf78d7de70197ed3a60602b11a814451fd5ff\",\"dweb:/ipfs/QmfVdpeeuFXSjnUSMiwp9pS3gAhKE72zwBFdBy29DDLBH4\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/StateRegistry.sol\":{\"keccak256\":\"0xb370cd39c2cb2dafb80cd7c75f9239126715a7b5b537dff4ead9fa0cab8afe06\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6b848682df2d28ad4f3988193249488f0fe9d7e656678054efe258b7d0eb9ee1\",\"dweb:/ipfs/QmTFT5Gg55ZLsdrTQ73ZvDCjaCfNKeBK2MS9hwaxQXhoQK\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/ITermsRegistry.sol\":{\"keccak256\":\"0x62947ddd2743f2852e53dc10c9ce4a326e764e0bbffd92df216fcb32a0b0e3cd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b90268d7fb6e7d133b5e9d008be62fe55d19930088ac547b15d31dcb8ab9ecd\",\"dweb:/ipfs/QmZGE66r4ML3msBMCtDbhsdVN3RxmDvnCMDkTn9mMfouqN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/TermsRegistry.sol\":{\"keccak256\":\"0xbb72fb674b59a69ddfbbbae6646779d9a9e45d5f6ce058090cea73898c6144f3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://002359bb2412c5dfe0172701869a9014dfd8c5210b22f5cb7cd70e615cbe1b78\",\"dweb:/ipfs/QmPATHyGY8MhzKH96o37EWQx7n99C5kXgV4xyHt64szxPX\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/Conversions.sol\":{\"keccak256\":\"0x4482adab804008a2774b11036cc9ff6f42aa7f248d6b8ca922082bf090a736e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e774c979286649c16d92eb4672c30c06fcbe7ddc053eee70088c4b28fc27e48c\",\"dweb:/ipfs/QmXqfezUnKVaKzA7Qs9BFC9yRKFTMwwxa778ofikE2hC1H\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol\":{\"keccak256\":\"0x5a918fdefe9bd357255bffcf75d325f0d23ccf7074533f8d6a80a62bfd60893e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c5fc68f47deab5b0cc572a8a1f7dba997e5a8bb13292ce3e4ee29540a3b1fd7\",\"dweb:/ipfs/QmeqcqcDYsgvbBH8XrHzURMuz9jQLEf4F2i5M59wYMCxgt\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/CERTFEncoder.sol\":{\"keccak256\":\"0xda7fdd90d7bdb6e560dad2c400d9f5af0ce9d1c3abd803663b6d461bbef65c85\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a9ef8743f51408dc976bd08be736d9589a57325f68affbf978d1ce331bae6e7c\",\"dweb:/ipfs/QmQRgBTae8CgWByZjPjwoRhJ9AJeLG8YcWfJjznD6ZdQTE\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/CERTFRegistry.sol\":{\"keccak256\":\"0xa98e1e893e498174654ebece374582bd5384af6d42b9c7b404776228f09c53c3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://386ba6c8d48a0043b9619870852b943f50a405715b495d18b0678508f4ff9e2a\",\"dweb:/ipfs/QmRc3fXPkHWZJvb6q8mgDoyQbax7PE86deus7hmT1vuDCB\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/ICERTFRegistry.sol\":{\"keccak256\":\"0xa2a41ce8910361eb88630549204d7ab8b910ddcb753967278b20214f45ba14ce\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4aa3d3a64d2824d651ea304abc179f943aababef4fa6ee7e9c305091a0a78e25\",\"dweb:/ipfs/QmVpgLVzbtbUifdFUmSutjXaP1cv9jYRuMDmvxfxEzkquR\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSConstants.sol\":{\"keccak256\":\"0xd7588866afdab6298dd5b64c5fe0ca63230236538d711932e7a5a17928d1226b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2a0678d5f895239119f463a3ae8a58c5c27b872c91db1cd4253ce5866481c6cd\",\"dweb:/ipfs/QmPXsMXFf1Qar8JCnKTL6Nizf63sZEQQt7XosrdeEnG2CE\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]},\"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\":{\"keccak256\":\"0x9995f89d4c5981ed389e941f578414eb901a4fde0b2eb5d815a43d86a9f53d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc3b3a4f33554f80e19328158ff913d700ff8133d08f434b33a846852cb927dd\",\"dweb:/ipfs/QmawYPv9PguBqrFN5YquvUvbYC2MdtTC4Zkyj3uGxiieHW\"]},\"@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol\":{\"keccak256\":\"0xb549e34dc631989f8aae1b8a397bf77598b8c018860645a627d2929229543a79\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a0ef5e2ad69ef87b9fc2beeed66336b3857c576efb9833b40a1be2ee35786fc\",\"dweb:/ipfs/QmT33MWqdjecGoPj8Js6a5fgESTcGW5vbQqYamKRDJZnhS\"]},\"@atpar/actus-solidity/contracts/Engines/CERTF/ICERTFEngine.sol\":{\"keccak256\":\"0xcfa69bbf1c8ebbef45acfd677b6fdc66260fb53655d4dd4bea42715cc1311e38\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://404149e103a2a872f174802bf3d54beaf29b17a2728edf5d03484bf9ad9f8060\",\"dweb:/ipfs/QmTCa6rDNhkZwvMXp6TdRJJbNrWcVrDPoXvJ6dnXEAoTUB\"]},\"@atpar/actus-solidity/contracts/Engines/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b506000620000276001600160e01b036200007716565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200007b565b3390565b6154bc806200008b6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80638da5cb5b1161019d578063d51dc3dc116100e9578063e8f7ca3e116100a2578063ee43eda11161007c578063ee43eda11461072e578063f2fde38b14610741578063f52f84e114610754578063f7f729ad146107675761030c565b8063e8f7ca3e146106f5578063eb01255914610708578063ecef55771461071b5761030c565b8063d51dc3dc14610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e50e0ef7146106c2578063e7dc3188146106e25761030c565b8063b828204111610156578063bd1f0a6c11610130578063bd1f0a6c1461061d578063c3b6e7c214610630578063ccfc347e14610643578063cf5aed12146106565761030c565b8063b8282041146105c9578063ba4d2d28146105dc578063bc6a7d76146105fd5761030c565b80638da5cb5b14610548578063a17b75b51461055d578063b02ca0c014610570578063b0b4888f14610583578063b3c45ebe146105a3578063b461dd4f146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638c81ed92146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613f1a565b61077a565b005b610339610334366004613eea565b61084f565b6040516103469190615267565b60405180910390f35b61036261035d366004613eea565b610876565b6040516103469190614998565b61032461037d366004613f1a565b6108ed565b610362610390366004613f49565b610992565b6103246103a3366004613f95565b610a31565b6103bb6103b6366004613f95565b610ae7565b604051610346919061497d565b6103bb6103d6366004613eea565b610b64565b6103626103e9366004613eea565b610b79565b6103246103fc366004613f1a565b610b8e565b61033961040f366004613eea565b610c69565b610324610422366004613f95565b610c88565b61043a610435366004613eea565b610d2d565b6040516103469190614939565b610324610455366004613f1a565b610d47565b610324610468366004613f1a565b610e0e565b61036261047b366004613f49565b610ee9565b61032461048e3660046140f6565b610f07565b6104a66104a1366004613eea565b610fcd565b6040516103469190615201565b6104c66104c1366004613f49565b61106b565b6040516103469190615259565b61032461110a565b6104ee6104e9366004613eea565b611189565b604051610346929190614a5d565b61036261050a366004613eea565b6111b2565b61032461051d3660046140f6565b611586565b61036261053036600461411a565b61163f565b61032461054336600461400f565b61164d565b61055061175c565b604051610346919061490b565b61036261056b366004613eea565b61176b565b61036261057e366004613f49565b611780565b610596610591366004613f49565b6117a1565b604051610346919061524b565b6105506105b1366004613eea565b611840565b6103626105c4366004613f49565b61185f565b6103626105d7366004613eea565b6118a5565b6105ef6105ea366004613f49565b611978565b604051610346929190614988565b61061061060b366004613f49565b6119a2565b604051610346919061523d565b61032461062b366004613f1a565b611a41565b61036261063e366004613eea565b611ad9565b6103bb610651366004613e96565b611cd6565b610669610664366004613f49565b611ceb565b604051610346919061534c565b610362610684366004613f49565b611d09565b610324610697366004613f49565b611d4f565b6103246106aa366004613f6a565b611dbe565b6103626106bd366004614136565b611e5a565b6106d56106d0366004613eea565b611e78565b6040516103469190614f64565b6103246106f0366004613e96565b611ed6565b6103bb610703366004613f1a565b611f2f565b610550610716366004613f49565b611f65565b610669610729366004613f49565b611ffb565b61055061073c366004613eea565b612091565b61032461074f366004613e96565b6120b1565b610362610762366004613eea565b612167565b610324610775366004613fe2565b61217c565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614bd6565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a2090610841908490879061491f565b60405180910390a250505050565b610857613a93565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614bd6565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614ea8565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906149a1565b60405180910390a1505050565b600082815260016020526040808220905163aaaf608760e01b815273__CERTFEncoder__________________________9163aaaf6087916109d891908690600401614f9f565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613f02565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614e59565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614a48565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d390614a79565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614ad6565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906149a1565b610c71613a93565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614e59565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614a48565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614bd6565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb90610841908490879061491f565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614dfc565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614cc4565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906149a1565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614bd6565b610f8c610f7236849003840184614431565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc09190614998565b60405180910390a2505050565b610fd5613b2d565b6000828152600160205260409081902090516307c055c760e31b815273__CERTFEncoder__________________________91633e02ae389161101a9190600401614998565b6107206040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e91906141c9565b611073613c68565b6000838152600160205260409081902090516305c6b05560e41b815273__CERTFEncoder__________________________91635c6b0550916110ba91908690600401614f9f565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614416565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d390614d6a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613c8b565b6111dc8372636f6e74726163745265666572656e63655f3160681b6119a2565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611236908590600401614998565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613ece565b6112a25760405162461bcd60e51b81526004016107d390614efc565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b611ffb565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b81526004016113229190614a23565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611372919061452e565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b09190614a00565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613f02565b9050831561142157611413601b42611e5a565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e5a565b600282600581111561148457fe5b141561152e57611492613c68565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149c0565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e9190614416565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613c68565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149dd565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614bd6565b61160b6115f136849003840184614431565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc09190614998565b600081601c81111561086e57fe5b3360009081526002602052604090205460ff1661167c5760405162461bcd60e51b81526004016107d390614c70565b6116da8961168f368a90038a018a614431565b8888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506116d29250505036899003890189614161565b878787613096565b600089815260016020526040908190209051635445aa9b60e01b815273__CERTFEncoder__________________________91635445aa9b9161172191908c90600401614fad565b60006040518083038186803b15801561173957600080fd5b505af415801561174d573d6000803e3d6000fd5b50505050505050505050505050565b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b6117a9613cb2565b60008381526001602052604090819020905163063a179b60e21b815273__CERTFEncoder__________________________916318e85e6c916117f091908690600401614f9f565b60806040518083038186803b15801561180857600080fd5b505af415801561181c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906143fb565b600090815260016020819052604090912001546001600160a01b031690565b600082815260016020526040808220905163e0660e8160e01b815273__CERTFEncoder__________________________9163e0660e81916109d891908690600401614f9f565b6000818152600160205260408120816118bd8461321b565b600583015460009081526003840160205260409020546004840154919250901580156118e7575081155b156118f9575060009250610871915050565b60008061190584611189565b9150915060008061191585611189565b9150915080600014806119315750821580159061193157508083105b8061195557508083148015611955575061194a8261163f565b6119538561163f565b105b156119695785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b6119aa613c8b565b60008381526001602052604090819020905163799b1f8160e01b815273__CERTFEncoder__________________________9163799b1f81916119f191908690600401614f9f565b60806040518083038186803b158015611a0957600080fd5b505af4158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906143e0565b611a58826000356001600160e01b03191633610ae7565b611a745760405162461bcd60e51b81526004016107d390614b79565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906149a1565b60008181526001602081905260408220015482906001600160a01b0316331480611b155750611b15816000356001600160e01b03191633610ae7565b611b315760405162461bcd60e51b81526004016107d390614bd6565b600083815260016020526040812090611b498561321b565b60058301546000908152600384016020526040902054600484015491925090158015611b73575081155b15611b855750600093506108e7915050565b600080611b9184611189565b91509150600080611ba185611189565b9150915084861415611c16578260028801600086601c811115611bc057fe5b601c811115611bcb57fe5b8152602081019190915260400160002055600487015460058801541415611bfd5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611c2c57508215801590611c2c57508083105b80611c5057508083148015611c505750611c458261163f565b611c4e8561163f565b105b15611c93578260028801600086601c811115611c6857fe5b601c811115611c7357fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611ca7575060048701546005880154145b15611cbd5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61365d16565b600082815260016020526040808220905163ada653a360e01b815273__CERTFEncoder__________________________9163ada653a3916109d891908690600401614f9f565b6000828152600160208190526040909120015482906001600160a01b0316331480611d8c5750611d8c816000356001600160e01b03191633610ae7565b611da85760405162461bcd60e51b81526004016107d390614bd6565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dfb5750611dfb816000356001600160e01b03191633610ae7565b611e175760405162461bcd60e51b81526004016107d390614bd6565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e6b57fe5b60ff16901b179392505050565b611e80613cd3565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611ede612c70565b6000546001600160a01b03908116911614611f0b5760405162461bcd60e51b81526004016107d390614d6a565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b60008281526001602052604080822090516359603f8160e01b815273__CERTFEncoder__________________________916359603f8191611fab91908690600401614f9f565b60206040518083038186803b158015611fc357600080fd5b505af4158015611fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613eb2565b6000828152600160205260408082209051633438aa2360e21b815273__CERTFEncoder__________________________9163d0e2a88c9161204191908690600401614f9f565b60206040518083038186803b15801561205957600080fd5b505af415801561206d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061452e565b60009081526001602052604090205461010090046001600160a01b031690565b6120b9612c70565b6000546001600160a01b039081169116146120e65760405162461bcd60e51b81526004016107d390614d6a565b6001600160a01b03811661210c5760405162461bcd60e51b81526004016107d390614b33565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6000828152600160208190526040909120015482906001600160a01b03163314806121b957506121b9816000356001600160e01b03191633610ae7565b6121d55760405162461bcd60e51b81526004016107d390614bd6565b600083815260016020526040908190209051635445aa9b60e01b815273__CERTFEncoder__________________________91635445aa9b9161221c91908690600401614fad565b60006040518083038186803b15801561223457600080fd5b505af4158015612248573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b612284613a93565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c613a93565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b613709565b61299c826b465f7374617475734461746560a01b836020015160001b613709565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b613709565b6129e7826d465f6d617475726974794461746560901b836060015160001b613709565b612a0a826d465f65786572636973654461746560901b836080015160001b613709565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b613709565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b613709565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b613709565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b613709565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b613709565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b613709565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b613709565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b613709565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b613709565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b613709565b612bd38269465f7175616e7469747960b01b83610200015160001b613709565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b613709565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b613709565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b613709565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b613709565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61373f16565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61373f16565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff61375416565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff61375416565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff61375416565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff6137d016565b60405162461bcd60e51b81526004016107d390614d9f565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b613709565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b613709565b612e33826b6d617475726974794461746560a01b836060015160001b613709565b612e54826b65786572636973654461746560a01b836080015160001b613709565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b613709565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b613709565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b613709565b612ee382691999595058d8dc9d595960b21b83610120015160001b613709565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b613709565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b613709565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b613709565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b613709565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b613709565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b613709565b61300582677175616e7469747960c01b83610200015160001b613709565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b613709565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b613709565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b613709565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b613709565b6000878152600160205260409020805460ff16156130c65760405162461bcd60e51b81526004016107d390614c25565b6001600160a01b03831660009081526002602052604090205460ff1615156001146131035760405162461bcd60e51b81526004016107d390614d21565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556131a18188612da0565b6131b1818863ffffffff61294216565b6131c1818763ffffffff6137f716565b6001600160a01b038216156131da576131da888361385f565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646886040516132099190614998565b60405180910390a15050505050505050565b6000818152600160205260408120613231613b2d565b6040516307c055c760e31b815273__CERTFEncoder__________________________90633e02ae3890613268908590600401614998565b6107206040518083038186803b15801561328157600080fd5b505af4158015613295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b991906141c9565b82549091506000908190819081906133659061010090046001600160a01b03166334a64ea28760028a0185601581526020019081526020016000205460156040518463ffffffff1660e01b815260040161331593929190615210565b60206040518083038186803b15801561332d57600080fd5b505afa158015613341573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190613f02565b91509150826000148061337757508281105b8061339b5750808314801561339b57506133908461163f565b6133998361163f565b105b156133a7578092508193505b5050835460166000818152600287016020526040808220549051631a53275160e11b8152919384936133f8936101009092046001600160a01b0316926334a64ea292613315928b9291600401615210565b9150915082600014806134145750801580159061341457508281105b806134435750801580159061342857508083145b801561344357506134388461163f565b6134418361163f565b105b1561344f578092508193505b5050835460176000818152600287016020526040808220549051631a53275160e11b8152919384936134a0936101009092046001600160a01b0316926334a64ea292613315928b9291600401615210565b9150915082600014806134bc575080158015906134bc57508281105b806134eb575080158015906134d057508083145b80156134eb57506134e08461163f565b6134e98361163f565b105b156134f7578092508193505b5050835460186000818152600287016020526040808220549051631a53275160e11b815291938493613548936101009092046001600160a01b0316926334a64ea292613315928b9291600401615210565b9150915082600014806135645750801580159061356457508281105b806135935750801580159061357857508083145b801561359357506135888461163f565b6135918361163f565b105b1561359f578092508193505b50508354601a6000818152600287016020526040808220549051631a53275160e11b8152919384936135f0936101009092046001600160a01b0316926334a64ea292613315928b9291600401615210565b91509150826000148061360c5750801580159061360c57508281105b8061363b5750801580159061362057508083145b801561363b57506136308461163f565b6136398361163f565b105b15613647578092508193505b50506136538282611e5a565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b8214156136ae575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b821415613701575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000828152600e840160205260409020548114156137265761373a565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b600080808061376862015180875b046138d6565b600c918801600019810183810494909401965094509250900660010191506000613792848461396c565b9050808211156137a0578091505b620151808706620151806137b58686866139f2565b02019450868510156137c657600080fd5b5050505092915050565b60008080806137e26201518087613762565b9187019450925090506000613792848461396c565b60005b815181101561373a576000801b82828151811061381357fe5b602002602001015114156138265761373a565b81818151811061383257fe5b602090810291909101810151600083815260038601909252604090912055600101600483018190556137fa565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865916138ca91614a48565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161392d57fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6000816001148061397d5750816003145b806139885750816005145b806139935750816007145b8061399e5750816008145b806139a9575081600a145b806139b4575081600c145b156139c15750601f610a2b565b816002146139d15750601e610a2b565b6139da83613a6e565b6139e557601c6139e8565b601d5b60ff169392505050565b60006107b2841015613a0357600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f0281613a3f57fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b600060048206158015613a8357506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516104008101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613bee613c68565b8152602001613bfb613c68565b8152602001613c08613c68565b8152602001613c15613c68565b8152602001613c22613c68565b8152602001613c2f613cb2565b8152602001613c3c613cb2565b8152602001613c49613cb2565b8152602001613c56613c8b565b8152602001613c63613c8b565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081018252600080825260208201819052909182019081526020016000613c63565b60408051608081019091526000808252602082019081526020016000613c7e565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b816153fb565b8051610a2b816153fb565b8051610a2b8161541e565b8051610a2b8161542b565b8035610a2b81615438565b8051610a2b81615452565b8035610a2b8161545f565b8051610a2b8161545f565b8051610a2b8161546c565b8051610a2b81615438565b6000608082840312156108e7578081fd5b600061072082840312156108e7578081fd5b600060808284031215613d9c578081fd5b613da6608061535a565b905081518152602082015160208201526040820151613dc481615445565b60408201526060820151613dd781615445565b606082015292915050565b600060808284031215613df3578081fd5b613dfd608061535a565b9050815181526020820151613e1181615438565b60208201526040820151613e248161542b565b60408201526060820151613dd781615410565b600060608284031215613e48578081fd5b613e52606061535a565b9050815181526020820151613e6681615438565b60208201526040820151613e7981615410565b604082015292915050565b600061028082840312156108e7578081fd5b600060208284031215613ea7578081fd5b8135610a28816153fb565b600060208284031215613ec3578081fd5b8151610a28816153fb565b600060208284031215613edf578081fd5b8151610a2881615410565b600060208284031215613efb578081fd5b5035919050565b600060208284031215613f13578081fd5b5051919050565b60008060408385031215613f2c578081fd5b823591506020830135613f3e816153fb565b809150509250929050565b60008060408385031215613f5b578182fd5b50508035926020909101359150565b600080600060608486031215613f7e578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613fa9578081fd5b8335925060208401356001600160e01b031981168114613fc7578182fd5b91506040840135613fd7816153fb565b809150509250925092565b6000806107408385031215613ff5578182fd5b823591506140068460208501613d79565b90509250929050565b6000806000806000806000806000610ac08a8c03121561402d578687fd5b8935985061403e8b60208c01613d79565b975061404e8b6107408c01613e84565b96506109c08a013567ffffffffffffffff8082111561406b578687fd5b818c018d601f82011261407c578788fd5b803592508183111561408c578788fd5b8d6020808502830101111561409f578788fd5b60200197509095506140b790508b6109e08c01613d68565b93506140c78b610a608c01613cfa565b92506140d78b610a808c01613cfa565b91506140e78b610aa08c01613cfa565b90509295985092959850929598565b6000806102a08385031215614109578182fd5b823591506140068460208501613e84565b60006020828403121561412b578081fd5b8135610a2881615479565b60008060408385031215614148578182fd5b823561415381615479565b946020939093013593505050565b600060808284031215614172578081fd5b61417c608061535a565b8235614187816153fb565b81526020830135614197816153fb565b602082015260408301356141aa816153fb565b604082015260608301356141bd816153fb565b60608201529392505050565b600061072082840312156141db578081fd5b6141e661040061535a565b6141f08484613d47565b81526141ff8460208501613d1b565b60208201526142118460408501613d31565b60408201526142238460608501613d5d565b60608201526142358460808501613d10565b60808201526142478460a08501613d1b565b60a08201526142598460c08501613d52565b60c082015261426b8460e08501613d05565b60e082015261010061427f85828601613d05565b9082015261012083810151908201526101408084015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a080840151908201526102c061432185828601613e37565b9082015261032061433485858301613e37565b6102e083015261038061434986828701613e37565b6103008401526103e061435e87828801613e37565b83850152614370876104408801613e37565b610340850152614384876104a08801613de2565b610360850152614398876105208801613de2565b828501526143aa876105a08801613de2565b6103a08501526143be876106208801613d8b565b6103c08501526143d2876106a08801613d8b565b908401525090949350505050565b6000608082840312156143f1578081fd5b610a288383613d8b565b60006080828403121561440c578081fd5b610a288383613de2565b600060608284031215614427578081fd5b610a288383613e37565b6000610280808385031215614444578182fd5b61444d8161535a565b6144578585613d26565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60006020828403121561453f578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061456657fe5b9052565b614566816153da565b614566816153e7565b600d811061456657fe5b6013811061456657fe5b6004811061456657fe5b6145a5828251614586565b60208101516145b7602084018261456a565b5060408101516145ca604084018261457c565b5060608101516145dd6060840182614573565b5060808101516145f0608084018261455c565b5060a081015161460360a084018261456a565b5060c081015161461660c0840182614590565b5060e081015161462960e084018261454f565b506101008082015161463d8285018261454f565b505061012081810151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a080820151908301526102c0808201516146e1828501826148e7565b50506102e08101516103206146f8818501836148e7565b610300830151915061038061470f818601846148e7565b9083015191506103e090614725858301846148e7565b610340840151925061473b6104408601846148e7565b61036084015192506147516104a0860184614875565b8301519150614764610520850183614875565b6103a0830151915061477a6105a0850183614875565b6103c083015191506147906106208501836147ef565b820151905061373a6106a08401826147ef565b803582526020810135602083015260408101356147bf81615445565b6147c8816153f1565b604083015260608101356147db81615445565b6147e4816153f1565b806060840152505050565b8051825260208101516020830152604081015161480b816153f1565b604083015260608101516147e4816153f1565b80358252602081013561483081615438565b614839816153e7565b6020830152604081013561484c8161542b565b614855816153da565b6040830152606081013561486881615410565b8015156060840152505050565b805182526020810151614887816153e7565b6020830152604081015161489a816153da565b60408301526060908101511515910152565b8035825260208101356148be81615438565b6148c7816153e7565b602083015260408101356148da81615410565b8015156040840152505050565b8051825260208101516148f9816153e7565b60208301526040908101511515910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561497157835183529284019291840191600101614955565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101614a6a846153cf565b82528260208301529392505050565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526107408101602083810190614fd0908401614fcb8387613d3c565b614586565b614fda818561539b565b614fe7604085018261456a565b5050614ff660408401846153a8565b615003606084018261457c565b5061501160608401846153c2565b61501e6080840182614573565b5061502c608084018461538e565b61503960a084018261455c565b5061504760a084018461539b565b61505460c084018261456a565b5061506260c08401846153b5565b61506f60e0840182614590565b5061507d60e0840184615381565b61010061508c8185018361454f565b61509881860186615381565b9150506101206150aa8185018361454f565b6101409150808501358285015250610160818501358185015261018091508085013582850152506101a081850135818501526101c091508085013582850152506101e08185013581850152610200915080850135828501525061022081850135818501526102409150808501358285015250610260818501358185015261028091508085013582850152506102a081850135818501526102c0915080850135828501525061515e6102e084018286016148ac565b50615171610340830161032085016148ac565b6151836103a0830161038085016148ac565b61519561040083016103e085016148ac565b6151a7610460830161044085016148ac565b6151b96104c083016104a0850161481e565b6151cb6105408301610520850161481e565b6151dd6105c083016105a0850161481e565b6151ef610640830161062085016147a3565b610b5d6106c083016106a085016147a3565b6107208101610a2b828461459a565b610760810161521f828661459a565b8361072083015261522f836153cf565b610740830152949350505050565b60808101610a2b82846147ef565b60808101610a2b8284614875565b60608101610a2b82846148e7565b60006102808201905061527b828451614573565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561537957600080fd5b604052919050565b60008235610a28816153fb565b60008235610a288161541e565b60008235610a288161542b565b60008235610a2881615452565b60008235610a288161546c565b60008235610a2881615438565b80601d811061087157fe5b600281106153e457fe5b50565b600681106153e457fe5b600581106153e457fe5b6001600160a01b03811681146153e457600080fd5b80151581146153e457600080fd5b600981106153e457600080fd5b600281106153e457600080fd5b600681106153e457600080fd5b600581106153e457600080fd5b600d81106153e457600080fd5b601381106153e457600080fd5b600481106153e457600080fd5b601d81106153e457600080fdfea264697066735822122062e008e15cd68ccde4f6e43d419d49eeacd11cd8d8994a29916aca67701f1aa764736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061030c5760003560e01c80638da5cb5b1161019d578063d51dc3dc116100e9578063e8f7ca3e116100a2578063ee43eda11161007c578063ee43eda11461072e578063f2fde38b14610741578063f52f84e114610754578063f7f729ad146107675761030c565b8063e8f7ca3e146106f5578063eb01255914610708578063ecef55771461071b5761030c565b8063d51dc3dc14610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e50e0ef7146106c2578063e7dc3188146106e25761030c565b8063b828204111610156578063bd1f0a6c11610130578063bd1f0a6c1461061d578063c3b6e7c214610630578063ccfc347e14610643578063cf5aed12146106565761030c565b8063b8282041146105c9578063ba4d2d28146105dc578063bc6a7d76146105fd5761030c565b80638da5cb5b14610548578063a17b75b51461055d578063b02ca0c014610570578063b0b4888f14610583578063b3c45ebe146105a3578063b461dd4f146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638c81ed92146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613f1a565b61077a565b005b610339610334366004613eea565b61084f565b6040516103469190615267565b60405180910390f35b61036261035d366004613eea565b610876565b6040516103469190614998565b61032461037d366004613f1a565b6108ed565b610362610390366004613f49565b610992565b6103246103a3366004613f95565b610a31565b6103bb6103b6366004613f95565b610ae7565b604051610346919061497d565b6103bb6103d6366004613eea565b610b64565b6103626103e9366004613eea565b610b79565b6103246103fc366004613f1a565b610b8e565b61033961040f366004613eea565b610c69565b610324610422366004613f95565b610c88565b61043a610435366004613eea565b610d2d565b6040516103469190614939565b610324610455366004613f1a565b610d47565b610324610468366004613f1a565b610e0e565b61036261047b366004613f49565b610ee9565b61032461048e3660046140f6565b610f07565b6104a66104a1366004613eea565b610fcd565b6040516103469190615201565b6104c66104c1366004613f49565b61106b565b6040516103469190615259565b61032461110a565b6104ee6104e9366004613eea565b611189565b604051610346929190614a5d565b61036261050a366004613eea565b6111b2565b61032461051d3660046140f6565b611586565b61036261053036600461411a565b61163f565b61032461054336600461400f565b61164d565b61055061175c565b604051610346919061490b565b61036261056b366004613eea565b61176b565b61036261057e366004613f49565b611780565b610596610591366004613f49565b6117a1565b604051610346919061524b565b6105506105b1366004613eea565b611840565b6103626105c4366004613f49565b61185f565b6103626105d7366004613eea565b6118a5565b6105ef6105ea366004613f49565b611978565b604051610346929190614988565b61061061060b366004613f49565b6119a2565b604051610346919061523d565b61032461062b366004613f1a565b611a41565b61036261063e366004613eea565b611ad9565b6103bb610651366004613e96565b611cd6565b610669610664366004613f49565b611ceb565b604051610346919061534c565b610362610684366004613f49565b611d09565b610324610697366004613f49565b611d4f565b6103246106aa366004613f6a565b611dbe565b6103626106bd366004614136565b611e5a565b6106d56106d0366004613eea565b611e78565b6040516103469190614f64565b6103246106f0366004613e96565b611ed6565b6103bb610703366004613f1a565b611f2f565b610550610716366004613f49565b611f65565b610669610729366004613f49565b611ffb565b61055061073c366004613eea565b612091565b61032461074f366004613e96565b6120b1565b610362610762366004613eea565b612167565b610324610775366004613fe2565b61217c565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614bd6565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a2090610841908490879061491f565b60405180910390a250505050565b610857613a93565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614bd6565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614ea8565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906149a1565b60405180910390a1505050565b600082815260016020526040808220905163aaaf608760e01b815273__CERTFEncoder__________________________9163aaaf6087916109d891908690600401614f9f565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613f02565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614e59565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614a48565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d390614a79565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614ad6565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906149a1565b610c71613a93565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614e59565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614a48565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614bd6565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb90610841908490879061491f565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614dfc565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614cc4565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce90610985908590849086906149a1565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614bd6565b610f8c610f7236849003840184614431565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc09190614998565b60405180910390a2505050565b610fd5613b2d565b6000828152600160205260409081902090516307c055c760e31b815273__CERTFEncoder__________________________91633e02ae389161101a9190600401614998565b6107206040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e91906141c9565b611073613c68565b6000838152600160205260409081902090516305c6b05560e41b815273__CERTFEncoder__________________________91635c6b0550916110ba91908690600401614f9f565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614416565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d390614d6a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613c8b565b6111dc8372636f6e74726163745265666572656e63655f3160681b6119a2565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611236908590600401614998565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613ece565b6112a25760405162461bcd60e51b81526004016107d390614efc565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b611ffb565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b81526004016113229190614a23565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611372919061452e565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b09190614a00565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613f02565b9050831561142157611413601b42611e5a565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e5a565b600282600581111561148457fe5b141561152e57611492613c68565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149c0565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e9190614416565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613c68565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149dd565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614bd6565b61160b6115f136849003840184614431565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc09190614998565b600081601c81111561086e57fe5b3360009081526002602052604090205460ff1661167c5760405162461bcd60e51b81526004016107d390614c70565b6116da8961168f368a90038a018a614431565b8888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506116d29250505036899003890189614161565b878787613096565b600089815260016020526040908190209051635445aa9b60e01b815273__CERTFEncoder__________________________91635445aa9b9161172191908c90600401614fad565b60006040518083038186803b15801561173957600080fd5b505af415801561174d573d6000803e3d6000fd5b50505050505050505050505050565b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b6117a9613cb2565b60008381526001602052604090819020905163063a179b60e21b815273__CERTFEncoder__________________________916318e85e6c916117f091908690600401614f9f565b60806040518083038186803b15801561180857600080fd5b505af415801561181c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906143fb565b600090815260016020819052604090912001546001600160a01b031690565b600082815260016020526040808220905163e0660e8160e01b815273__CERTFEncoder__________________________9163e0660e81916109d891908690600401614f9f565b6000818152600160205260408120816118bd8461321b565b600583015460009081526003840160205260409020546004840154919250901580156118e7575081155b156118f9575060009250610871915050565b60008061190584611189565b9150915060008061191585611189565b9150915080600014806119315750821580159061193157508083105b8061195557508083148015611955575061194a8261163f565b6119538561163f565b105b156119695785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b6119aa613c8b565b60008381526001602052604090819020905163799b1f8160e01b815273__CERTFEncoder__________________________9163799b1f81916119f191908690600401614f9f565b60806040518083038186803b158015611a0957600080fd5b505af4158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2891906143e0565b611a58826000356001600160e01b03191633610ae7565b611a745760405162461bcd60e51b81526004016107d390614b79565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e2590610985908590849086906149a1565b60008181526001602081905260408220015482906001600160a01b0316331480611b155750611b15816000356001600160e01b03191633610ae7565b611b315760405162461bcd60e51b81526004016107d390614bd6565b600083815260016020526040812090611b498561321b565b60058301546000908152600384016020526040902054600484015491925090158015611b73575081155b15611b855750600093506108e7915050565b600080611b9184611189565b91509150600080611ba185611189565b9150915084861415611c16578260028801600086601c811115611bc057fe5b601c811115611bcb57fe5b8152602081019190915260400160002055600487015460058801541415611bfd5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611c2c57508215801590611c2c57508083105b80611c5057508083148015611c505750611c458261163f565b611c4e8561163f565b105b15611c93578260028801600086601c811115611c6857fe5b601c811115611c7357fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611ca7575060048701546005880154145b15611cbd5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61365d16565b600082815260016020526040808220905163ada653a360e01b815273__CERTFEncoder__________________________9163ada653a3916109d891908690600401614f9f565b6000828152600160208190526040909120015482906001600160a01b0316331480611d8c5750611d8c816000356001600160e01b03191633610ae7565b611da85760405162461bcd60e51b81526004016107d390614bd6565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dfb5750611dfb816000356001600160e01b03191633610ae7565b611e175760405162461bcd60e51b81526004016107d390614bd6565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e6b57fe5b60ff16901b179392505050565b611e80613cd3565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611ede612c70565b6000546001600160a01b03908116911614611f0b5760405162461bcd60e51b81526004016107d390614d6a565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b60008281526001602052604080822090516359603f8160e01b815273__CERTFEncoder__________________________916359603f8191611fab91908690600401614f9f565b60206040518083038186803b158015611fc357600080fd5b505af4158015611fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613eb2565b6000828152600160205260408082209051633438aa2360e21b815273__CERTFEncoder__________________________9163d0e2a88c9161204191908690600401614f9f565b60206040518083038186803b15801561205957600080fd5b505af415801561206d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061452e565b60009081526001602052604090205461010090046001600160a01b031690565b6120b9612c70565b6000546001600160a01b039081169116146120e65760405162461bcd60e51b81526004016107d390614d6a565b6001600160a01b03811661210c5760405162461bcd60e51b81526004016107d390614b33565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6000828152600160208190526040909120015482906001600160a01b03163314806121b957506121b9816000356001600160e01b03191633610ae7565b6121d55760405162461bcd60e51b81526004016107d390614bd6565b600083815260016020526040908190209051635445aa9b60e01b815273__CERTFEncoder__________________________91635445aa9b9161221c91908690600401614fad565b60006040518083038186803b15801561223457600080fd5b505af4158015612248573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b612284613a93565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c613a93565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b613709565b61299c826b465f7374617475734461746560a01b836020015160001b613709565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b613709565b6129e7826d465f6d617475726974794461746560901b836060015160001b613709565b612a0a826d465f65786572636973654461746560901b836080015160001b613709565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b613709565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b613709565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b613709565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b613709565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b613709565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b613709565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b613709565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b613709565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b613709565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b613709565b612bd38269465f7175616e7469747960b01b83610200015160001b613709565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b613709565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b613709565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b613709565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b613709565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61373f16565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61373f16565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff61375416565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff61375416565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff61375416565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff6137d016565b60405162461bcd60e51b81526004016107d390614d9f565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b613709565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b613709565b612e33826b6d617475726974794461746560a01b836060015160001b613709565b612e54826b65786572636973654461746560a01b836080015160001b613709565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b613709565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b613709565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b613709565b612ee382691999595058d8dc9d595960b21b83610120015160001b613709565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b613709565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b613709565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b613709565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b613709565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b613709565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b613709565b61300582677175616e7469747960c01b83610200015160001b613709565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b613709565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b613709565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b613709565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b613709565b6000878152600160205260409020805460ff16156130c65760405162461bcd60e51b81526004016107d390614c25565b6001600160a01b03831660009081526002602052604090205460ff1615156001146131035760405162461bcd60e51b81526004016107d390614d21565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556131a18188612da0565b6131b1818863ffffffff61294216565b6131c1818763ffffffff6137f716565b6001600160a01b038216156131da576131da888361385f565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646886040516132099190614998565b60405180910390a15050505050505050565b6000818152600160205260408120613231613b2d565b6040516307c055c760e31b815273__CERTFEncoder__________________________90633e02ae3890613268908590600401614998565b6107206040518083038186803b15801561328157600080fd5b505af4158015613295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b991906141c9565b82549091506000908190819081906133659061010090046001600160a01b03166334a64ea28760028a0185601581526020019081526020016000205460156040518463ffffffff1660e01b815260040161331593929190615210565b60206040518083038186803b15801561332d57600080fd5b505afa158015613341573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190613f02565b91509150826000148061337757508281105b8061339b5750808314801561339b57506133908461163f565b6133998361163f565b105b156133a7578092508193505b5050835460166000818152600287016020526040808220549051631a53275160e11b8152919384936133f8936101009092046001600160a01b0316926334a64ea292613315928b9291600401615210565b9150915082600014806134145750801580159061341457508281105b806134435750801580159061342857508083145b801561344357506134388461163f565b6134418361163f565b105b1561344f578092508193505b5050835460176000818152600287016020526040808220549051631a53275160e11b8152919384936134a0936101009092046001600160a01b0316926334a64ea292613315928b9291600401615210565b9150915082600014806134bc575080158015906134bc57508281105b806134eb575080158015906134d057508083145b80156134eb57506134e08461163f565b6134e98361163f565b105b156134f7578092508193505b5050835460186000818152600287016020526040808220549051631a53275160e11b815291938493613548936101009092046001600160a01b0316926334a64ea292613315928b9291600401615210565b9150915082600014806135645750801580159061356457508281105b806135935750801580159061357857508083145b801561359357506135888461163f565b6135918361163f565b105b1561359f578092508193505b50508354601a6000818152600287016020526040808220549051631a53275160e11b8152919384936135f0936101009092046001600160a01b0316926334a64ea292613315928b9291600401615210565b91509150826000148061360c5750801580159061360c57508281105b8061363b5750801580159061362057508083145b801561363b57506136308461163f565b6136398361163f565b105b15613647578092508193505b50506136538282611e5a565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b8214156136ae575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b821415613701575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000828152600e840160205260409020548114156137265761373a565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b600080808061376862015180875b046138d6565b600c918801600019810183810494909401965094509250900660010191506000613792848461396c565b9050808211156137a0578091505b620151808706620151806137b58686866139f2565b02019450868510156137c657600080fd5b5050505092915050565b60008080806137e26201518087613762565b9187019450925090506000613792848461396c565b60005b815181101561373a576000801b82828151811061381357fe5b602002602001015114156138265761373a565b81818151811061383257fe5b602090810291909101810151600083815260038601909252604090912055600101600483018190556137fa565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865916138ca91614a48565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161392d57fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6000816001148061397d5750816003145b806139885750816005145b806139935750816007145b8061399e5750816008145b806139a9575081600a145b806139b4575081600c145b156139c15750601f610a2b565b816002146139d15750601e610a2b565b6139da83613a6e565b6139e557601c6139e8565b601d5b60ff169392505050565b60006107b2841015613a0357600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f0281613a3f57fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b600060048206158015613a8357506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516104008101909152806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613bee613c68565b8152602001613bfb613c68565b8152602001613c08613c68565b8152602001613c15613c68565b8152602001613c22613c68565b8152602001613c2f613cb2565b8152602001613c3c613cb2565b8152602001613c49613cb2565b8152602001613c56613c8b565b8152602001613c63613c8b565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081018252600080825260208201819052909182019081526020016000613c63565b60408051608081019091526000808252602082019081526020016000613c7e565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b816153fb565b8051610a2b816153fb565b8051610a2b8161541e565b8051610a2b8161542b565b8035610a2b81615438565b8051610a2b81615452565b8035610a2b8161545f565b8051610a2b8161545f565b8051610a2b8161546c565b8051610a2b81615438565b6000608082840312156108e7578081fd5b600061072082840312156108e7578081fd5b600060808284031215613d9c578081fd5b613da6608061535a565b905081518152602082015160208201526040820151613dc481615445565b60408201526060820151613dd781615445565b606082015292915050565b600060808284031215613df3578081fd5b613dfd608061535a565b9050815181526020820151613e1181615438565b60208201526040820151613e248161542b565b60408201526060820151613dd781615410565b600060608284031215613e48578081fd5b613e52606061535a565b9050815181526020820151613e6681615438565b60208201526040820151613e7981615410565b604082015292915050565b600061028082840312156108e7578081fd5b600060208284031215613ea7578081fd5b8135610a28816153fb565b600060208284031215613ec3578081fd5b8151610a28816153fb565b600060208284031215613edf578081fd5b8151610a2881615410565b600060208284031215613efb578081fd5b5035919050565b600060208284031215613f13578081fd5b5051919050565b60008060408385031215613f2c578081fd5b823591506020830135613f3e816153fb565b809150509250929050565b60008060408385031215613f5b578182fd5b50508035926020909101359150565b600080600060608486031215613f7e578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613fa9578081fd5b8335925060208401356001600160e01b031981168114613fc7578182fd5b91506040840135613fd7816153fb565b809150509250925092565b6000806107408385031215613ff5578182fd5b823591506140068460208501613d79565b90509250929050565b6000806000806000806000806000610ac08a8c03121561402d578687fd5b8935985061403e8b60208c01613d79565b975061404e8b6107408c01613e84565b96506109c08a013567ffffffffffffffff8082111561406b578687fd5b818c018d601f82011261407c578788fd5b803592508183111561408c578788fd5b8d6020808502830101111561409f578788fd5b60200197509095506140b790508b6109e08c01613d68565b93506140c78b610a608c01613cfa565b92506140d78b610a808c01613cfa565b91506140e78b610aa08c01613cfa565b90509295985092959850929598565b6000806102a08385031215614109578182fd5b823591506140068460208501613e84565b60006020828403121561412b578081fd5b8135610a2881615479565b60008060408385031215614148578182fd5b823561415381615479565b946020939093013593505050565b600060808284031215614172578081fd5b61417c608061535a565b8235614187816153fb565b81526020830135614197816153fb565b602082015260408301356141aa816153fb565b604082015260608301356141bd816153fb565b60608201529392505050565b600061072082840312156141db578081fd5b6141e661040061535a565b6141f08484613d47565b81526141ff8460208501613d1b565b60208201526142118460408501613d31565b60408201526142238460608501613d5d565b60608201526142358460808501613d10565b60808201526142478460a08501613d1b565b60a08201526142598460c08501613d52565b60c082015261426b8460e08501613d05565b60e082015261010061427f85828601613d05565b9082015261012083810151908201526101408084015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a080840151908201526102c061432185828601613e37565b9082015261032061433485858301613e37565b6102e083015261038061434986828701613e37565b6103008401526103e061435e87828801613e37565b83850152614370876104408801613e37565b610340850152614384876104a08801613de2565b610360850152614398876105208801613de2565b828501526143aa876105a08801613de2565b6103a08501526143be876106208801613d8b565b6103c08501526143d2876106a08801613d8b565b908401525090949350505050565b6000608082840312156143f1578081fd5b610a288383613d8b565b60006080828403121561440c578081fd5b610a288383613de2565b600060608284031215614427578081fd5b610a288383613e37565b6000610280808385031215614444578182fd5b61444d8161535a565b6144578585613d26565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60006020828403121561453f578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061456657fe5b9052565b614566816153da565b614566816153e7565b600d811061456657fe5b6013811061456657fe5b6004811061456657fe5b6145a5828251614586565b60208101516145b7602084018261456a565b5060408101516145ca604084018261457c565b5060608101516145dd6060840182614573565b5060808101516145f0608084018261455c565b5060a081015161460360a084018261456a565b5060c081015161461660c0840182614590565b5060e081015161462960e084018261454f565b506101008082015161463d8285018261454f565b505061012081810151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a080820151908301526102c0808201516146e1828501826148e7565b50506102e08101516103206146f8818501836148e7565b610300830151915061038061470f818601846148e7565b9083015191506103e090614725858301846148e7565b610340840151925061473b6104408601846148e7565b61036084015192506147516104a0860184614875565b8301519150614764610520850183614875565b6103a0830151915061477a6105a0850183614875565b6103c083015191506147906106208501836147ef565b820151905061373a6106a08401826147ef565b803582526020810135602083015260408101356147bf81615445565b6147c8816153f1565b604083015260608101356147db81615445565b6147e4816153f1565b806060840152505050565b8051825260208101516020830152604081015161480b816153f1565b604083015260608101516147e4816153f1565b80358252602081013561483081615438565b614839816153e7565b6020830152604081013561484c8161542b565b614855816153da565b6040830152606081013561486881615410565b8015156060840152505050565b805182526020810151614887816153e7565b6020830152604081015161489a816153da565b60408301526060908101511515910152565b8035825260208101356148be81615438565b6148c7816153e7565b602083015260408101356148da81615410565b8015156040840152505050565b8051825260208101516148f9816153e7565b60208301526040908101511515910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561497157835183529284019291840191600101614955565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101614a6a846153cf565b82528260208301529392505050565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526107408101602083810190614fd0908401614fcb8387613d3c565b614586565b614fda818561539b565b614fe7604085018261456a565b5050614ff660408401846153a8565b615003606084018261457c565b5061501160608401846153c2565b61501e6080840182614573565b5061502c608084018461538e565b61503960a084018261455c565b5061504760a084018461539b565b61505460c084018261456a565b5061506260c08401846153b5565b61506f60e0840182614590565b5061507d60e0840184615381565b61010061508c8185018361454f565b61509881860186615381565b9150506101206150aa8185018361454f565b6101409150808501358285015250610160818501358185015261018091508085013582850152506101a081850135818501526101c091508085013582850152506101e08185013581850152610200915080850135828501525061022081850135818501526102409150808501358285015250610260818501358185015261028091508085013582850152506102a081850135818501526102c0915080850135828501525061515e6102e084018286016148ac565b50615171610340830161032085016148ac565b6151836103a0830161038085016148ac565b61519561040083016103e085016148ac565b6151a7610460830161044085016148ac565b6151b96104c083016104a0850161481e565b6151cb6105408301610520850161481e565b6151dd6105c083016105a0850161481e565b6151ef610640830161062085016147a3565b610b5d6106c083016106a085016147a3565b6107208101610a2b828461459a565b610760810161521f828661459a565b8361072083015261522f836153cf565b610740830152949350505050565b60808101610a2b82846147ef565b60808101610a2b8284614875565b60608101610a2b82846148e7565b60006102808201905061527b828451614573565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561537957600080fd5b604052919050565b60008235610a28816153fb565b60008235610a288161541e565b60008235610a288161542b565b60008235610a2881615452565b60008235610a288161546c565b60008235610a2881615438565b80601d811061087157fe5b600281106153e457fe5b50565b600681106153e457fe5b600581106153e457fe5b6001600160a01b03811681146153e457600080fd5b80151581146153e457600080fd5b600981106153e457600080fd5b600281106153e457600080fd5b600681106153e457600080fd5b600581106153e457600080fd5b600d81106153e457600080fd5b601381106153e457600080fd5b600481106153e457600080fd5b601d81106153e457600080fdfea264697066735822122062e008e15cd68ccde4f6e43d419d49eeacd11cd8d8994a29916aca67701f1aa764736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "398:8260:40:-:0;;;500:58;;;;;;;;;-1:-1:-1;865:17:116;885:12;-1:-1:-1;;;;;885:10:116;:12;:::i;:::-;907:6;:18;;-1:-1:-1;;;;;;907:18:116;-1:-1:-1;;;;;907:18:116;;;;;;;940:43;;907:18;;-1:-1:-1;907:18:116;940:43;;907:6;;940:43;831:159;398:8260:40;;768:104:115;855:10;768:104;:::o;398:8260:40:-;;;;;;;",
  "deployedSourceMap": "398:8260:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5134:271:8;;;;;;:::i;:::-;;:::i;:::-;;615:176:19;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2354:304:16;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3033:494:13:-;;;;;;:::i;:::-;;:::i;3066:273:40:-;;;;;;:::i;:::-;;:::i;1194:397:6:-;;;;;;:::i;:::-;;:::i;2741:280::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1681:158:8:-;;;;;;:::i;:::-;;:::i;2834:190:16:-;;;;;;:::i;:::-;;:::i;1924:805:13:-;;;;;;:::i;:::-;;:::i;931:194:19:-;;;;;;:::i;:::-;;:::i;1970:399:6:-;;;;;;:::i;:::-;;:::i;1767:186:16:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4660:280:8:-;;;;;;:::i;:::-;;:::i;844:745:13:-;;;;;;:::i;:::-;;:::i;1619:242:19:-;;;;;;:::i;:::-;;:::i;2566:264::-;;;;;;:::i;:::-;;:::i;1618:186:40:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3621:279::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1689:145:116:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3183:3322:16:-;;;;;;:::i;:::-;;:::i;2090:237:19:-;;;;;;:::i;:::-;;:::i;956:145:82:-;;;;;;:::i;:::-;;:::i;1005:473:40:-;;;;;;:::i;:::-;;:::i;1066:77:116:-;;;:::i;:::-;;;;;;;:::i;1332:176:16:-;;;;;;:::i;:::-;;:::i;971:196::-;;;;;;:::i;:::-;;:::i;3906:278:40:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4264:157:8:-;;;;;;:::i;:::-;;:::i;3345:270:40:-;;;;;;:::i;:::-;;:::i;6636:1153:16:-;;;;;;:::i;:::-;;:::i;10335:286::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;4190:313:40:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3851:539:13:-;;;;;;:::i;:::-;;:::i;8059:2064:16:-;;;;;;:::i;:::-;;:::i;895:46:8:-;;;;;;:::i;:::-;;:::i;1131:237:19:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2781:279:40:-;;;;;;:::i;:::-;;:::i;2145:203:16:-;;;;;;:::i;:::-;;:::i;10833:248::-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;4599:179:13:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1411:101:8:-;;;;;;:::i;:::-;;:::i;3276:186:6:-;;;;;;:::i;:::-;;:::i;2496:279:40:-;;;;;;:::i;:::-;;:::i;2222:268::-;;;;;;:::i;:::-;;:::i;3904:159:8:-;;;;;;:::i;:::-;;:::i;1983:240:116:-;;;;;;:::i;:::-;;:::i;1959:180:16:-;;;;;;:::i;:::-;;:::i;1987:229:40:-;;;;;;:::i;:::-;;:::i;5134:271:8:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;;;;;;;;;5263:17:8::1;5283:15:::0;;;:6:::1;:15;::::0;;;;;;;;:21:::1;::::0;;-1:-1:-1;;;;;5314:29:8;;::::1;-1:-1:-1::0;;;;;;5314:29:8;::::1;;::::0;;;5359:39;;5283:21;::::1;::::0;5290:7;;5359:39:::1;::::0;::::1;::::0;5283:21;;5338:5;;5359:39:::1;:::i;:::-;;;;;;;;811:1:6;5134:271:8::0;;;:::o;615:176:19:-;714:12;;:::i;:::-;749:15;;;;:6;:15;;;;;:35;;:33;:35::i;:::-;742:42;;615:176;;;;:::o;2354:304:16:-;2478:7;664:15:6;;;:6;:15;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2501:20:16::1;2524:15:::0;;;:6:::1;:15;::::0;;;;:37;;;;2571:50;;;2524:37;-1:-1:-1;811:1:6::1;2354:304:16::0;;;;:::o;3033:494:13:-;3174:39;3184:7;3193;;-1:-1:-1;;;;;;3193:7:13;3202:10;3174:9;:39::i;:::-;3153:138;;;;-1:-1:-1;;;3153:138:13;;;;;;;:::i;:::-;3302:26;3331:15;;;:6;:15;;;;;;;:25;;:40;;-1:-1:-1;;;;;3382:60:13;;;-1:-1:-1;;;;;;3382:60:13;;;;;;3458:62;;3331:40;;;3458:62;;;;3338:7;;3331:40;;3425:17;;3458:62;:::i;:::-;;;;;;;;3033:494;;;:::o;3066:273:40:-;3234:7;3264:15;;;:6;:15;;;;;;:68;;-1:-1:-1;;;3264:68:40;;:57;;;;:68;;:15;3322:9;;3264:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3257:75;;3066:273;;;;;:::o;1194:397:6:-;1342:39;1352:7;1361;;-1:-1:-1;;;;;;1361:7:6;1370:10;1342:9;:39::i;:::-;1321:133;;;;-1:-1:-1;;;1321:133:6;;;;;;;:::i;:::-;1465:15;;;;1516:4;1465:15;;;;;;;;-1:-1:-1;;;;;;1465:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;1465:48:6;;;;;;;;;;;:55;;-1:-1:-1;;1465:55:6;;;;;;;1536:48;;1472:7;;1536:48;;;;1488:15;;1536:48;:::i;:::-;;;;;;;;1194:397;;;:::o;2741:280::-;2867:4;2908:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;2908:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2908:48:6;;;;;;;;;;;;;:96;;-1:-1:-1;2960:15:6;;;;:6;:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;2960:44:6;;;;;;;;;;;;2908:96;2887:127;;2741:280;;;;;;:::o;1681:158:8:-;1784:4;1811:15;;;:6;:15;;;;;:21;;;;1681:158::o;2834:190:16:-;2945:7;2975:15;;;:6;:15;;;;;:42;;;;2834:190::o;1924:805:13:-;2083:35;2121:15;;;:6;:15;;;;;:49;;;-1:-1:-1;;;;;2121:49:13;2202:41;2181:150;;;;-1:-1:-1;;;2181:150:13;;;;;;;:::i;:::-;2362:10;-1:-1:-1;;;;;2362:41:13;;;;:84;;;2407:39;2417:7;2426;;-1:-1:-1;;;;;;2426:7:13;2435:10;2407:9;:39::i;:::-;2341:192;;;;-1:-1:-1;;;2341:192:13;;;;;;;:::i;:::-;2544:15;;;;:6;:15;;;;;;;:49;;:78;;-1:-1:-1;;;;;;2544:78:13;-1:-1:-1;;;;;2544:78:13;;;;;2638:84;;;;;2544:15;;2666:27;;2544:78;;2638:84;:::i;931:194:19:-;1039:12;;:::i;:::-;1074:15;;;;:6;:15;;;;;:44;;:42;:44::i;1970:399:6:-;2119:39;2129:7;2138;;-1:-1:-1;;;;;;2138:7:6;2147:10;2119:9;:39::i;:::-;2098:133;;;;-1:-1:-1;;;2098:133:6;;;;;;;:::i;:::-;2293:5;2242:15;;;:6;:15;;;;;;;;-1:-1:-1;;;;;;2242:39:6;;;;:22;;:39;;;;;-1:-1:-1;;;;;2242:48:6;;;;;;;;;;;:56;;-1:-1:-1;;2242:56:6;;;2314:48;;2249:7;;2314:48;;;;2265:15;;2314:48;:::i;1767:186:16:-;1908:15;;;;:6;:15;;;;;1869:16;;1908:38;;:36;:38::i;4660:280:8:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;4791:18:8::1;4812:15:::0;;;:6:::1;:15;::::0;;;;;;:22;;-1:-1:-1;;;;;4844:31:8;;::::1;4812:22;4844:31:::0;;::::1;-1:-1:-1::0;;;;;;4844:31:8;::::1;;::::0;;;4891:42;;4812:22;;::::1;::::0;;;::::1;::::0;4819:7;;4891:42:::1;::::0;::::1;::::0;4812:22;;4869:6;;4891:42:::1;:::i;844:745:13:-:0;993:30;1026:15;;;:6;:15;;;;;:44;;;-1:-1:-1;;;;;1026:44:13;1102:36;1081:140;;;;-1:-1:-1;;;1081:140:13;;;;;;;:::i;:::-;1252:10;-1:-1:-1;;;;;1252:36:13;;;;:79;;;1292:39;1302:7;1311;;-1:-1:-1;;;;;;1311:7:13;1320:10;1292:9;:39::i;:::-;1231:182;;;;-1:-1:-1;;;1231:182:13;;;;;;;:::i;:::-;1424:15;;;;:6;:15;;;;;;;:44;;:68;;-1:-1:-1;;;;;;1424:68:13;-1:-1:-1;;;;;1424:68:13;;;;;1508:74;;;;;1424:15;;1536:22;;1424:68;;1508:74;:::i;1619:242:19:-;1756:7;1786:15;;;:6;:15;;;;;:68;;1844:9;1786:68;:57;:68;:::i;2566:264::-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2711:49:19::1;;;::::0;;::::1;::::0;::::1;2754:5:::0;2711:49:::1;:::i;:::-;:15;::::0;;;:6:::1;:15;::::0;;;;;:49:::1;:42;:49;:::i;:::-;2797:7;2775:48;2806:5;:16;;;2775:48;;;;;;:::i;:::-;;;;;;;;2566:264:::0;;;:::o;1618:186:40:-;1717:17;;:::i;:::-;1757:15;;;;:6;:15;;;;;;;:40;;-1:-1:-1;;;1757:40:40;;:38;;;;:40;;:15;:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3621:279::-;3791:9;;:::i;:::-;3823:15;;;;:6;:15;;;;;;;:70;;-1:-1:-1;;;3823:70:40;;:59;;;;:70;;:15;3883:9;;3823:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1689:145:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;1795:1:::1;1779:6:::0;;1758:40:::1;::::0;-1:-1:-1;;;;;1779:6:116;;::::1;::::0;1758:40:::1;::::0;1795:1;;1758:40:::1;1825:1;1808:19:::0;;-1:-1:-1;;;;;;1808:19:116::1;::::0;;1689:145::o;487:293:82:-;569:9;;;659:3;649:13;;;625:40;;;;;;;;603:62;-1:-1:-1;;698:32:82;;;;-1:-1:-1;487:293:82;;;:::o;3183:3322:16:-;3296:7;3319:44;;:::i;:::-;3366:74;3409:7;-1:-1:-1;;;3366:42:16;:74::i;:::-;3481:26;;3319:121;;-1:-1:-1;3481:40:16;;;;:98;;-1:-1:-1;3553:26:16;3525:19;:24;;;:54;;;;;;;;;3481:98;3477:2994;;;3623:26;;3716:27;;;;3834:65;;-1:-1:-1;;;3834:65:16;;-1:-1:-1;;;;;3834:46:16;;;;;:65;;3623:26;;3834:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3809:190;;;;-1:-1:-1;;;3809:190:16;;;;;;;:::i;:::-;4014:20;4037:54;4067:7;-1:-1:-1;;;4037:29:16;:54::i;:::-;4014:77;;4105:42;4170:64;4200:7;-1:-1:-1;;;4170:29:16;:64::i;:::-;4150:85;;;;;;;;;;4105:130;;4249:49;4336:18;-1:-1:-1;;;;;4321:64:16;;4386:17;4321:106;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4301:127;;;;;;;;;;4249:179;;4442:35;4495:18;-1:-1:-1;;;;;4480:64:16;;4545:17;4480:104;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4442:142;-1:-1:-1;4659:16:16;;4655:258;;4749:149;4782:13;4865:15;4749:11;:149::i;:::-;4742:156;;;;;;;;;;;4655:258;5075:22;5049;:48;;;;;;;;;;:123;;;;;5150:22;5117:55;;;;;;;;:29;:55;;;;;;;;;5049:123;5028:1433;;;5349:22;5316:29;:55;;;;;;;;;5312:1135;;;5402:124;5439:12;5477:27;5402:11;:124::i;5312:1135::-;5588:22;5555:29;:55;;;;;;;;;5551:896;;;5634:31;;:::i;:::-;5668:100;;-1:-1:-1;;;5668:100:16;;-1:-1:-1;;;;;5668:66:16;;;;;:100;;5735:17;;5668:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5634:134;;5797:171;5834:12;5872:74;5895:21;5918:27;5872:22;:74::i;5797:171::-;5790:178;;;;;;;;;;;;5551:896;6030:22;5997:29;:55;;;;;;;;;5993:454;;;6076:37;;:::i;:::-;6116:106;;-1:-1:-1;;;6116:106:16;;-1:-1:-1;;;;;6116:66:16;;;;;:106;;6183:17;;6116:106;;;:::i;5993:454::-;3477:2994;;;;;;;-1:-1:-1;6496:1:16;;3183:3322;-1:-1:-1;;3183:3322:16:o;2090:237:19:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2226:40:19::1;;;::::0;;::::1;::::0;::::1;2260:5:::0;2226:40:::1;:::i;:::-;:15;::::0;;;:6:::1;:15;::::0;;;;;:40:::1;:33;:40;:::i;:::-;2294:7;2281:39;2303:5;:16;;;2281:39;;;;;;:::i;956:145:82:-:0;1046:7;1084:9;1076:18;;;;;;;1005:473:40;1023:10:8;1008:26;;;;:14;:26;;;;;;;;987:125;;;;-1:-1:-1;;;987:125:8;;;;;;;:::i;:::-;1349:67:40::1;1358:7:::0;1349:67:::1;;::::0;;::::1;::::0;::::1;1367:5:::0;1349:67:::1;:::i;:::-;1374:8;;1349:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;1349:67:40::1;::::0;-1:-1:-1;;;1349:67:40::1;::::0;;::::1;::::0;::::1;1384:9:::0;1349:67:::1;:::i;:::-;1395:6;1403:5;1410;1349:8;:67::i;:::-;1426:15;::::0;;;:6:::1;:15;::::0;;;;;;:45;;-1:-1:-1;;;1426:45:40;;:38:::1;::::0;::::1;::::0;:45:::1;::::0;:15;1465:5;;1426:45:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1005:473:::0;;;;;;;;;:::o;1066:77:116:-;1104:7;1130:6;-1:-1:-1;;;;;1130:6:116;1066:77;:::o;1332:176:16:-;1440:7;1470:15;;;:6;:15;;;;;:31;;;;1332:176::o;971:196::-;1092:7;1122:15;;;:6;:15;;;;;;;;:38;;;:31;;;;:38;;;;;;971:196::o;3906:278:40:-;4075:10;;:::i;:::-;4108:15;;;;:6;:15;;;;;;;:69;;-1:-1:-1;;;4108:69:40;;:58;;;;:69;;:15;4167:9;;4108:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4264:157:8:-;4363:7;4393:15;;;:6;:15;;;;;;;;:21;;-1:-1:-1;;;;;4393:21:8;;4264:157::o;3345:270:40:-;3512:6;3541:15;;;:6;:15;;;;;;:67;;-1:-1:-1;;;3541:67:40;;:56;;;;:67;;:15;3598:9;;3541:67;;;:::i;6636:1153:16:-;6748:7;6793:15;;;:6;:15;;;;;6748:7;6844:27;6800:7;6844:18;:27::i;:::-;6931:32;;;;6881:25;6909:55;;;:21;;;:55;;;;;;6979:21;;;;6818:53;;-1:-1:-1;6909:55:16;6979:26;:59;;;;-1:-1:-1;7009:29:16;;6979:59;6975:82;;;-1:-1:-1;7055:1:16;;-1:-1:-1;7040:17:16;;-1:-1:-1;;7040:17:16;6975:82;7069:34;7105:35;7144:28;7156:15;7144:11;:28::i;:::-;7068:104;;;;7183:36;7221:37;7262:30;7274:17;7262:11;:30::i;:::-;7182:110;;;;7321:29;7354:1;7321:34;:135;;;-1:-1:-1;7360:32:16;;;;;:95;;;7426:29;7396:27;:59;7360:95;7320:350;;;;7522:29;7491:27;:60;:165;;;;;7614:42;7629:26;7614:14;:42::i;:::-;7571:40;7586:24;7571:14;:40::i;:::-;:85;7491:165;7303:480;;;7702:15;7695:22;;;;;;;;;;;7303:480;7755:17;7748:24;;;;;;;;;;;10335:286;10456:4;10505:15;;;:6;:15;;;;;;;;:34;;;:26;;;;:34;;;;:44;;10563:41;;;10505:44;;;;;10335:286::o;4190:313:40:-;4371:24;;:::i;:::-;4418:15;;;;:6;:15;;;;;;;:78;;-1:-1:-1;;;4418:78:40;;:67;;;;:78;;:15;4486:9;;4418:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3851:539:13:-;4002:39;4012:7;4021;;-1:-1:-1;;;;;;4021:7:13;4030:10;4002:9;:39::i;:::-;3981:143;;;;-1:-1:-1;;;3981:143:13;;;;;;;:::i;:::-;4135:31;4169:15;;;:6;:15;;;;;;;:45;;;;-1:-1:-1;;;;;4225:70:13;;;-1:-1:-1;;;;;;4225:70:13;;;;;;4311:72;;4169:45;;;4311:72;;;;4176:7;;4169:45;;4273:22;;4311:72;:::i;8059:2064:16:-;8189:7;664:15:6;;;:6;:15;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;8212:19:16::1;8234:15:::0;;;:6:::1;:15;::::0;;;;;8285:27:::1;8241:7:::0;8285:18:::1;:27::i;:::-;8372:32:::0;;;;8322:25:::1;8350:55:::0;;;:21;;;:55:::1;::::0;;;;;8420:21;;;;8259:53;;-1:-1:-1;8350:55:16;8420:26;:59;::::1;;;-1:-1:-1::0;8450:29:16;;8420:59:::1;8416:82;;;-1:-1:-1::0;8496:1:16::1;::::0;-1:-1:-1;8481:17:16::1;::::0;-1:-1:-1;;8481:17:16::1;8416:82;8510:34;8546:35:::0;8585:28:::1;8597:15;8585:11;:28::i;:::-;8509:104;;;;8624:36;8662:37:::0;8703:30:::1;8715:17;8703:11;:30::i;:::-;8623:110;;;;8853:17;8834:15;:36;8830:399;;;8959:27:::0;8886:14:::1;::::0;::::1;:44;8931:24:::0;8886:70:::1;::::0;::::1;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8886:70:16;:100;9040:21;;;;9004:32;;;;:57:::1;9000:80;;;-1:-1:-1::0;9078:1:16::1;::::0;-1:-1:-1;9063:17:16::1;::::0;-1:-1:-1;;;;;;9063:17:16::1;9000:80;-1:-1:-1::0;;;9094:32:16;;;;:37;;9130:1:::1;9094:37;::::0;;-1:-1:-1;9203:15:16;-1:-1:-1;9196:22:16::1;::::0;-1:-1:-1;9196:22:16::1;8830:399;9326:34:::0;;;:135:::1;;-1:-1:-1::0;9365:32:16;;;::::1;::::0;:95:::1;;;9431:29;9401:27;:59;9365:95;9325:350;;;;9527:29;9496:27;:60;:165;;;;;9619:42;9634:26;9619:14;:42::i;:::-;9576:40;9591:24;9576:14;:40::i;:::-;:85;9496:165;9308:809;;;9773:27:::0;9700:14:::1;::::0;::::1;:44;9745:24:::0;9700:70:::1;::::0;::::1;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;9700:70:16;:100;-1:-1:-1;9821:15:16;;-1:-1:-1;9814:22:16::1;::::0;-1:-1:-1;;;;;9814:22:16::1;9308:809;9871:34:::0;;;:95:::1;;-1:-1:-1::0;9945:21:16;;;;9909:32;;;;:57:::1;9871:95;9867:151;;;-1:-1:-1::0;10001:1:16::1;::::0;-1:-1:-1;9986:17:16::1;::::0;-1:-1:-1;;;;;;9986:17:16::1;9867:151;-1:-1:-1::0;;;10031:32:16;;;;:37;;10067:1:::1;10031:37;::::0;;10089:17;-1:-1:-1;10082:24:16::1;::::0;-1:-1:-1;;10082:24:16::1;895:46:8::0;;;;;;;;;;;;;;;:::o;1131:237:19:-;1268:5;1296:15;;;:6;:15;;;;;:65;;1351:9;1296:65;:54;:65;:::i;2781:279:40:-;2952:7;2982:15;;;:6;:15;;;;;;:71;;-1:-1:-1;;;2982:71:40;;:60;;;;:71;;:15;3043:9;;2982:71;;;:::i;2145:203:16:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;-1:-1:-1;2289:15:16::1;::::0;;;:6:::1;:15;::::0;;;;;:37;;:52;2145:203::o;10833:248::-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;-1:-1:-1;11026:48:16::1;::::0;;;;::::1;::::0;;11050:4:::1;11026:48:::0;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;10989:15:16;;;;;;;;;:34;;;:26:::1;::::0;;::::1;:34:::0;;;;;:85;;;;-1:-1:-1;;10989:85:16::1;::::0;::::1;;;::::0;;;;::::1;::::0;10833:248::o;234:247:82:-;343:7;451:12;425:3;409:9;403:16;;;;;;;;395:25;;387:41;;:77;;234:247;-1:-1:-1;;;234:247:82:o;4599:179:13:-;4702:21;;:::i;:::-;-1:-1:-1;4746:15:13;;;;:6;:15;;;;;;;;;4739:32;;;;;;;4746:25;;;4739:32;-1:-1:-1;;;;;4739:32:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:179::o;1411:101:8:-;1280:12:116;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;1477:21:8::1;;::::0;;;:14:::1;:21;::::0;;;;:28;;-1:-1:-1;;1477:28:8::1;1501:4;1477:28;::::0;;1411:101::o;3276:186:6:-;3382:4;3410:15;;;:6;:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;3410:44:6;;;;;;;;;;;;;;;3276:186::o;2496:279:40:-;2667:7;2697:15;;;:6;:15;;;;;;:71;;-1:-1:-1;;;2697:71:40;;:60;;;;:71;;:15;2758:9;;2697:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2222:268::-;2390:5;2418:15;;;:6;:15;;;;;;:65;;-1:-1:-1;;;2418:65:40;;:54;;;;:65;;:15;2473:9;;2418:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3904:159:8:-;4004:7;4034:15;;;:6;:15;;;;;:22;;;;-1:-1:-1;;;;;4034:22:8;;3904:159::o;1983:240:116:-;1280:12;:10;:12::i;:::-;1270:6;;-1:-1:-1;;;;;1270:6:116;;;:22;;;1262:67;;;;-1:-1:-1;;;1262:67:116;;;;;;;:::i;:::-;-1:-1:-1;;;;;2071:22:116;::::1;2063:73;;;;-1:-1:-1::0;;;2063:73:116::1;;;;;;;:::i;:::-;2172:6;::::0;;2151:38:::1;::::0;-1:-1:-1;;;;;2151:38:116;;::::1;::::0;2172:6;::::1;::::0;2151:38:::1;::::0;::::1;2199:6;:17:::0;;-1:-1:-1;;;;;;2199:17:116::1;-1:-1:-1::0;;;;;2199:17:116;;;::::1;::::0;;;::::1;::::0;;1983:240::o;1959:180:16:-;2065:7;2095:15;;;:6;:15;;;;;:37;;;;1959:180::o;1987:229:40:-;664:15:6;;;;:6;:15;;;;;;;;:21;;:15;;-1:-1:-1;;;;;664:21:6;650:10;:35;;:78;;;689:39;699:7;708;;-1:-1:-1;;;;;;708:7:6;717:10;689:9;:39::i;:::-;629:172;;;;-1:-1:-1;;;629:172:6;;;;;;;:::i;:::-;2128:15:40::1;::::0;;;:6:::1;:15;::::0;;;;;;:45;;-1:-1:-1;;;2128:45:40;;:38:::1;::::0;::::1;::::0;:45:::1;::::0;:15;2167:5;;2128:45:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2188:21:40::1;::::0;2201:7;;-1:-1:-1;2188:21:40::1;::::0;-1:-1:-1;2188:21:40;;::::1;1987:229:::0;;;:::o;4420:1363:18:-;4491:12;;:::i;:::-;4522:1254;;;;;;;;-1:-1:-1;;;;4575:40:18;;;:17;;;:40;;;;;;;4522:1254;;4619:3;4575:47;4541:84;;;;;;;;4522:1254;;;;;;;;;;-1:-1:-1;;;4647:31:18;;;;:17;;;4522:1254;4647:31;;;;;;;;4522:1254;;;;-1:-1:-1;;;4701:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4762:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4818:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4874:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;4934:34:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5003:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5063:36:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5121:31:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5174:40:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5236:46:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5304:46:18;;;;;;;;;4522:1254;;;;5372:51;;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5445:35:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5503:37:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5562:29:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5613:38:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5673:33:18;;;;;;;;;4522:1254;;;;-1:-1:-1;;;5728:37:18;;;;;;;;4522:1254;;;;;4515:1261;-1:-1:-1;4420:1363:18;;;:::o;5866:1400::-;5946:12;;:::i;:::-;5977:1282;;;;;;;;-1:-1:-1;;;;6030:42:18;;;:17;;;:42;;;;;;;5977:1282;;6076:3;6030:49;5996:86;;;;;;;;5977:1282;;;;;;;;;;-1:-1:-1;;;6104:33:18;;;;:17;;;5977:1282;6104:33;;;;;;;;5977:1282;;;;-1:-1:-1;;;6160:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6223:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6281:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6339:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6401:36:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6460:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6522:38:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6582:33:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6637:42:18;;;;;;;;;5977:1282;;;;6701:48;;;;;;;;;;5977:1282;;;;6771:48;;;;;;;;;;5977:1282;;;;6841:53;;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6916:37:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;6976:39:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7037:31:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7090:40:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7152:35:18;;;;;;;;;5977:1282;;;;-1:-1:-1;;;7209:39:18;;;;;;;;5977:1282;;;;;5970:1289;-1:-1:-1;5866:1400:18;;;:::o;448:324:15:-;522:16;550:25;592:5;:14;;:21;;;578:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;578:36:15;-1:-1:-1;550:64:15;-1:-1:-1;630:9:15;625:115;649:21;;;;645:25;;625:115;;;705:24;;;;:21;;;:24;;;;;;691:11;;:8;;727:1;;691:11;;;;;;;;;;;;;;;:38;672:3;;625:115;;;-1:-1:-1;757:8:15;448:324;-1:-1:-1;;448:324:15:o;7794:218:18:-;7935:7;7973:31;;;:17;;;;;:31;;;;;;;7794:218::o;2426:1921::-;2522:109;2541:5;-1:-1:-1;;;2627:3:18;2595:5;:25;;;2589:32;;;;;;;;2581:41;;2573:57;;2522:18;:109::i;:::-;2641:68;2660:5;-1:-1:-1;;;2691:5:18;:16;;;2683:25;;2641:18;:68::i;:::-;2719:82;2738:5;-1:-1:-1;;;2776:5:18;:23;;;2768:32;;2719:18;:82::i;:::-;2811:72;2830:5;-1:-1:-1;;;2863:5:18;:18;;;2855:27;;2811:18;:72::i;:::-;2893;2912:5;-1:-1:-1;;;2945:5:18;:18;;;2937:27;;2893:18;:72::i;:::-;2975:78;2994:5;-1:-1:-1;;;3030:5:18;:21;;;3022:30;;2975:18;:78::i;:::-;3063:82;3082:5;-1:-1:-1;;;3120:5:18;:23;;;3112:32;;3063:18;:82::i;:::-;3155:78;3174:5;-1:-1:-1;;;3210:5:18;:21;;;3202:30;;3155:18;:78::i;:::-;3243:68;3262:5;-1:-1:-1;;;3293:5:18;:16;;;3285:25;;3243:18;:68::i;:::-;3321:86;3340:5;-1:-1:-1;;;3380:5:18;:25;;;3372:34;;3321:18;:86::i;:::-;3417:98;3436:5;3417:98;3482:5;:31;;;3474:40;;3417:18;:98::i;:::-;3525;3544:5;3525:98;3590:5;:31;;;3582:40;;3525:18;:98::i;:::-;3633:108;3652:5;3633:108;3703:5;:36;;;3695:45;;3633:18;:108::i;:::-;3751:76;3770:5;-1:-1:-1;;;3805:5:18;:20;;;3797:29;;3751:18;:76::i;:::-;3838:80;3857:5;-1:-1:-1;;;3894:5:18;:22;;;3886:31;;3838:18;:80::i;:::-;3928:64;3947:5;-1:-1:-1;;;3976:5:18;:14;;;3968:23;;3928:18;:64::i;:::-;4002:82;4021:5;-1:-1:-1;;;4059:5:18;:23;;;4051:32;;4002:18;:82::i;:::-;4094:72;4113:5;-1:-1:-1;;;4146:5:18;:18;;;4138:27;;4094:18;:72::i;:::-;4176:80;4195:5;-1:-1:-1;;;4232:5:18;:22;;;4224:31;;4176:18;:80::i;:::-;4266:74;4285:5;-1:-1:-1;;;4319:5:18;:19;;;4311:28;;4266:18;:74::i;:::-;2426:1921;;:::o;768:104:115:-;855:10;768:104;:::o;443:879:83:-;559:7;;;617:6;:8;;;:15;;;;;;;;;613:673;;;681:8;;663:27;;:9;;:27;:17;:27;:::i;:::-;648:42;;613:673;;;723:3;711:6;:8;;;:15;;;;;;;;;707:579;;;775:8;;757:31;;:9;;786:1;775:12;757:31;:17;:31;:::i;707:579::-;821:3;809:6;:8;;;:15;;;;;;;;;805:481;;;875:8;;855:29;;:9;;:29;:19;:29;:::i;805:481::-;917:3;905:6;:8;;;:15;;;;;;;;;901:385;;;971:8;;951:33;;:9;;982:1;971:12;951:33;:19;:33;:::i;901:385::-;1017:3;1005:6;:8;;;:15;;;;;;;;;1001:285;;;1071:8;;1051:33;;:9;;1082:1;1071:12;1051:33;:19;:33;:::i;1001:285::-;1117:3;1105:6;:8;;;:15;;;;;;;;;1101:185;;;1170:8;;1151:28;;:9;;:28;:18;:28;:::i;1101:185::-;1210:65;;-1:-1:-1;;;1210:65:83;;;;;;;:::i;481:1872:18:-;568:107;587:5;-1:-1:-1;;;671:3:18;639:5;:25;;;633:32;;;;;;;568:107;685:66;704:5;-1:-1:-1;;;733:5:18;:16;;;725:25;;685:18;:66::i;:::-;761:80;780:5;-1:-1:-1;;;816:5:18;:23;;;808:32;;761:18;:80::i;:::-;851:70;870:5;-1:-1:-1;;;901:5:18;:18;;;893:27;;851:18;:70::i;:::-;931;950:5;-1:-1:-1;;;981:5:18;:18;;;973:27;;931:18;:70::i;:::-;1011:76;1030:5;-1:-1:-1;;;1064:5:18;:21;;;1056:30;;1011:18;:76::i;:::-;1097:80;1116:5;-1:-1:-1;;;1152:5:18;:23;;;1144:32;;1097:18;:80::i;:::-;1187:76;1206:5;-1:-1:-1;;;1240:5:18;:21;;;1232:30;;1187:18;:76::i;:::-;1273:66;1292:5;-1:-1:-1;;;1321:5:18;:16;;;1313:25;;1273:18;:66::i;:::-;1349:84;1368:5;-1:-1:-1;;;1406:5:18;:25;;;1398:34;;1349:18;:84::i;:::-;1443:96;1462:5;-1:-1:-1;;;1506:5:18;:31;;;1498:40;;1443:18;:96::i;:::-;1549;1568:5;-1:-1:-1;;;1612:5:18;:31;;;1604:40;;1549:18;:96::i;:::-;1655:106;1674:5;1655:106;1723:5;:36;;;1715:45;;1655:18;:106::i;:::-;1771:74;1790:5;-1:-1:-1;;;1823:5:18;:20;;;1815:29;;1771:18;:74::i;:::-;1856:78;1875:5;-1:-1:-1;;;1910:5:18;:22;;;1902:31;;1856:18;:78::i;:::-;1944:62;1963:5;-1:-1:-1;;;1990:5:18;:14;;;1982:23;;1944:18;:62::i;:::-;2016:80;2035:5;-1:-1:-1;;;2071:5:18;:23;;;2063:32;;2016:18;:80::i;:::-;2106:70;2125:5;-1:-1:-1;;;2156:5:18;:18;;;2148:27;;2106:18;:70::i;:::-;2186:78;2205:5;-1:-1:-1;;;2240:5:18;:22;;;2232:31;;2186:18;:78::i;:::-;2274:72;2293:5;-1:-1:-1;;;2325:5:18;:19;;;2317:28;;2274:18;:72::i;2593:1097:8:-;2847:19;2869:15;;;:6;:15;;;;;2988:11;;;;:20;2967:110;;;;-1:-1:-1;;;2967:110:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;3176:21:8;;;;;;:14;:21;;;;;;;;:29;;:21;:29;3155:117;;;;-1:-1:-1;;;3155:117:8;;;;;;;:::i;:::-;3283:18;;3311:27;;:15;;;:27;;-1:-1:-1;;;;;;3311:27:8;;;-1:-1:-1;;;;;3311:27:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3283:18:8;;;-1:-1:-1;3283:18:8;;;-1:-1:-1;;;;;;3348:21:8;3283:18;3348:21;;;;;;;3379:11;;:19;;;;;;;;;;;3409:30;3283:18;3433:5;3409:23;:30::i;:::-;3449:39;:5;3482;3449:39;:32;:39;:::i;:::-;3498:36;:5;3525:8;3498:36;:26;:36;:::i;:::-;-1:-1:-1;;;;;3592:19:8;;;3588:55;;3613:30;3628:7;3637:5;3613:14;:30::i;:::-;3659:24;3675:7;3659:24;;;;;;:::i;:::-;;;;;;;;2593:1097;;;;;;;;:::o;4509:4147:40:-;4633:7;4678:15;;;:6;:15;;;;;4703:23;;:::i;:::-;4729:30;;-1:-1:-1;;;4729:30:40;;:28;;;;:30;;:5;;:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4950:12;;4703:56;;-1:-1:-1;4770:23:40;;;;;;;;4925:207;;4950:12;;;-1:-1:-1;;;;;4950:12:40;4937:49;4703:56;5027:14;;;4770:23;5072:13;5027:59;;;;;;;;;;;;5104:13;4937:194;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4925:207::-;4873:259;;;;5169:22;5195:1;5169:27;5168:94;;;;5239:22;5218:18;:43;5168:94;:221;;;;5309:18;5283:22;:44;:105;;;;;5359:29;5374:13;5359:14;:29::i;:::-;5331:25;5346:9;5331:14;:25::i;:::-;:57;5283:105;5147:376;;;5447:18;5422:43;;5499:9;5483:25;;5147:376;-1:-1:-1;;5657:12:40;;5779:13;5581:19;5734:59;;;:14;;;:59;;;;;;;5644:194;;-1:-1:-1;;;5644:194:40;;5581:19;;;;5632:207;;5657:12;;;;-1:-1:-1;;;;;5657:12:40;;5644:49;;:194;;5711:5;;5734:59;5644:194;;;:::i;5632:207::-;5580:259;;;;5876:22;5902:1;5876:27;5875:121;;;-1:-1:-1;5925:23:40;;;;;:70;;;5973:22;5952:18;:43;5925:70;5875:275;;;-1:-1:-1;6017:23:40;;;;;:71;;;6070:18;6044:22;:44;6017:71;:132;;;;;6120:29;6135:13;6120:14;:29::i;:::-;6092:25;6107:9;6092:14;:25::i;:::-;:57;6017:132;5854:430;;;6208:18;6183:43;;6260:9;6244:25;;5854:430;-1:-1:-1;;6418:12:40;;6540:13;6342:19;6495:59;;;:14;;;:59;;;;;;;6405:194;;-1:-1:-1;;;6405:194:40;;6342:19;;;;6393:207;;6418:12;;;;-1:-1:-1;;;;;6418:12:40;;6405:49;;:194;;6472:5;;6495:59;6405:194;;;:::i;6393:207::-;6341:259;;;;6637:22;6663:1;6637:27;6636:121;;;-1:-1:-1;6686:23:40;;;;;:70;;;6734:22;6713:18;:43;6686:70;6636:275;;;-1:-1:-1;6778:23:40;;;;;:71;;;6831:18;6805:22;:44;6778:71;:132;;;;;6881:29;6896:13;6881:14;:29::i;:::-;6853:25;6868:9;6853:14;:25::i;:::-;:57;6778:132;6615:430;;;6969:18;6944:43;;7021:9;7005:25;;6615:430;-1:-1:-1;;7179:12:40;;7301:13;7103:19;7256:59;;;:14;;;:59;;;;;;;7166:194;;-1:-1:-1;;;7166:194:40;;7103:19;;;;7154:207;;7179:12;;;;-1:-1:-1;;;;;7179:12:40;;7166:49;;:194;;7233:5;;7256:59;7166:194;;;:::i;7154:207::-;7102:259;;;;7398:22;7424:1;7398:27;7397:121;;;-1:-1:-1;7447:23:40;;;;;:70;;;7495:22;7474:18;:43;7447:70;7397:275;;;-1:-1:-1;7539:23:40;;;;;:71;;;7592:18;7566:22;:44;7539:71;:132;;;;;7642:29;7657:13;7642:14;:29::i;:::-;7614:25;7629:9;7614:14;:25::i;:::-;:57;7539:132;7376:430;;;7730:18;7705:43;;7782:9;7766:25;;7376:430;-1:-1:-1;;7939:12:40;;8061;7863:19;8016:58;;;:14;;;:58;;;;;;;7926:192;;-1:-1:-1;;;7926:192:40;;7863:19;;;;7914:205;;7939:12;;;;-1:-1:-1;;;;;7939:12:40;;7926:49;;:192;;7993:5;;8016:58;7926:192;;;:::i;7914:205::-;7862:257;;;;8156:22;8182:1;8156:27;8155:121;;;-1:-1:-1;8205:23:40;;;;;:70;;;8253:22;8232:18;:43;8205:70;8155:275;;;-1:-1:-1;8297:23:40;;;;;:71;;;8350:18;8324:22;:44;8297:71;:132;;;;;8400:29;8415:13;8400:14;:29::i;:::-;8372:25;8387:9;8372:14;:25::i;:::-;:57;8297:132;8134:430;;;8488:18;8463:43;;8540:9;8524:25;;8134:430;4509:4147;;8599:50;8611:13;8626:22;8599:11;:50::i;:::-;8592:57;4509:4147;-1:-1:-1;;;;;;4509:4147:40:o;7273:515:18:-;7411:5;-1:-1:-1;;;7436:12:18;:46;7432:350;;;-1:-1:-1;;;;7519:40:18;;;;:17;;;:40;;;;;;7563:3;7519:47;7498:70;;7432:350;-1:-1:-1;;;7589:12:18;:48;7585:197;;;-1:-1:-1;;;;7674:42:18;;;;:17;;;:42;;;;;;7720:3;7674:49;7653:72;;7585:197;-1:-1:-1;7769:1:18;7756:15;;166:252;314:31;;;;:17;;;:31;;;;;;:40;;310:53;;;356:7;;310:53;372:31;;;;:17;;;:31;;;;;:39;;;166:252;;;;:::o;9033:198:106:-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;8467:561;8539:17;;;;8604:40;1020:12;8616:9;:27;;8604:11;:40::i;:::-;8702:2;8654:16;;;-1:-1:-1;;8689:9:106;;8688:16;;;8680:24;;;;;-1:-1:-1;8654:16:106;-1:-1:-1;8568:76:106;-1:-1:-1;8702:2:106;8722:16;8741:1;8722:20;8714:28;;8752:16;8771:28;8787:4;8793:5;8771:15;:28::i;:::-;8752:47;;8819:11;8813:3;:17;8809:65;;;8852:11;8846:17;;8809:65;1020:12;8950:9;:27;1020:12;8898:31;8912:4;8918:5;8925:3;8898:13;:31::i;:::-;:49;:79;8883:94;;9011:9;8995:12;:25;;8987:34;;;;;;8467:561;;;;;;;;:::o;7977:485::-;8047:17;;;;8112:40;1020:12;8124:9;:27;;8112:40;8162:14;;;;-1:-1:-1;8076:76:106;-1:-1:-1;8076:76:106;-1:-1:-1;8186:16:106;8205:28;8162:14;8076:76;8205:15;:28::i;137:305:15:-;239:9;234:202;258:8;:15;254:1;:19;234:202;;;321:1;313:10;;298:8;307:1;298:11;;;;;;;;;;;;;;:25;294:36;;;325:5;;294:36;371:8;380:1;371:11;;;;;;;;;;;;;;;;;;;344:24;;;;:21;;;:24;;;;;;;:38;:21;420:5;396:21;;;:29;;;234:202;;3721:194:6;3798:15;;;;3845:4;3798:15;;;;;;;;:35;;;:22;;:35;;;;;-1:-1:-1;;;;;3798:44:6;;;;;;;;;;:51;;-1:-1:-1;;3798:51:6;;;;;;;3864:44;;3798;;3805:7;;3864:44;;;;;:::i;:::-;;;;;;;;3721:194;;:::o;3309:605:106:-;3365:9;;;3425:5;3450:31;;;3365:9;3507:6;3499:1;:5;;:14;;-1:-1:-1;3550:1:106;3545;3532:6;:10;;:14;3531:20;3527:24;;;;3561:9;3590:7;3573:4;3585:1;3581:5;;3573:14;:24;;-1:-1:-1;3630:1:106;3615:4;:12;;:16;3611:1;:20;3634:2;3611:25;3607:29;;3646:10;3668:4;3664:1;3659:2;:6;:13;;;;;;;-1:-1:-1;3682:8:106;3713:2;3697:4;:13;;:18;3693:22;;;-1:-1:-1;3738:2:106;3729:6;:11;-1:-1:-1;;3803:6:106;;;;3796:3;:14;:22;;;;:26;;;3768:1;3772:2;:6;;;3759:19;;;;;;;;-1:-1:-1;3729:11:106;-1:-1:-1;3796:26:106;-1:-1:-1;;;;3309:605:106:o;6480:383::-;6551:16;6583:5;6592:1;6583:10;:24;;;;6597:5;6606:1;6597:10;6583:24;:38;;;;6611:5;6620:1;6611:10;6583:38;:52;;;;6625:5;6634:1;6625:10;6583:52;:66;;;;6639:5;6648:1;6639:10;6583:66;:81;;;;6653:5;6662:2;6653:11;6583:81;:96;;;;6668:5;6677:2;6668:11;6583:96;6579:278;;;-1:-1:-1;6709:2:106;6579:278;;;6732:5;6741:1;6732:10;6728:129;;-1:-1:-1;6772:2:106;6728:129;;;6819:17;6831:4;6819:11;:17::i;:::-;:27;;6844:2;6819:27;;;6839:2;6819:27;6805:41;;;6480:383;-1:-1:-1;;;6480:383:106:o;2045:511::-;2124:10;2162:4;2154;:12;;2146:21;;;;;;2193:4;2225:5;2256:3;2177:9;1157:7;2490:1;2440;2483:3;2454:4;2477:2;-1:-1:-1;;2462:11:106;;2461:18;2446:33;;;2445:41;2440:47;:51;2425:2;;-1:-1:-1;;2399:11:106;;2398:18;2419:2;2398:23;2394:1;2385:6;:10;:36;2378:3;:44;:49;;;;;;2364:1;2319:4;2358:2;-1:-1:-1;;2343:11:106;;2342:18;2327:33;;2335:4;2327:33;2319:42;:46;2301:5;2284:4;:22;:81;:143;:207;:234;2271:247;;2542:6;2529:20;;2045:511;;;;;;;;;:::o;5820:157::-;5875:13;5920:1;5913:4;:8;:13;5912:36;;;;-1:-1:-1;5939:3:106;5932:4;:10;:15;;5912:36;5911:59;;;-1:-1:-1;;5961:3:106;5954:10;;:15;;5820:157::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;97:33;72:20;97:33;:::i;142:134::-;220:13;;238:33;220:13;238:33;:::i;1531:188::-;1636:13;;1654:60;1636:13;1654:60;:::i;1891:162::-;1983:13;;2001:47;1983:13;2001:47;:::i;2060:180::-;2152:20;;2177:58;2152:20;2177:58;:::i;3192:170::-;3288:13;;3306:51;3288:13;3306:51;:::i;3369:166::-;3454:20;;3479:51;3454:20;3479:51;:::i;3542:170::-;3638:13;;3656:51;3638:13;3656:51;:::i;3888:166::-;3982:13;;4000:49;3982:13;4000:49;:::i;4246:182::-;4348:13;;4366:57;4348:13;4366:57;:::i;5900:166::-;;6018:3;6009:6;6004:3;6000:16;5996:26;5993:2;;;-1:-1;;6025:12;6954:164;;7069:4;7060:6;7055:3;7051:16;7047:27;7044:2;;;-1:-1;;7077:12;13164:881;;13300:4;13288:9;13283:3;13279:19;13275:30;13272:2;;;-1:-1;;13308:12;13272:2;13336:20;13300:4;13336:20;:::i;:::-;13327:29;;1148:6;1142:13;13422:16;13415:86;13565:2;13634:9;13630:22;1142:13;13565:2;13584:5;13580:16;13573:86;13721:2;13817:9;13813:22;2543:13;2561:60;2615:5;2561:60;:::i;:::-;13721:2;13736:16;;13729:113;13903:2;13995:22;;2543:13;2561:60;2543:13;2561:60;:::i;:::-;13903:2;13918:16;;13911:113;13922:5;13266:779;-1:-1;;13266:779::o;14069:810::-;;14191:4;14179:9;14174:3;14170:19;14166:30;14163:2;;;-1:-1;;14199:12;14163:2;14227:20;14191:4;14227:20;:::i;:::-;14218:29;;19348:6;19342:13;14308:16;14301:86;14445:2;14521:9;14517:22;4348:13;4366:57;4417:5;4366:57;:::i;:::-;14445:2;14460:16;;14453:93;14604:2;14676:22;;1983:13;2001:47;1983:13;2001:47;:::i;:::-;14604:2;14619:16;;14612:93;14767:2;14829:22;;867:13;885:30;867:13;885:30;:::i;14902:650::-;;15023:4;15011:9;15006:3;15002:19;14998:30;14995:2;;;-1:-1;;15031:12;14995:2;15059:20;15023:4;15059:20;:::i;:::-;15050:29;;19348:6;19342:13;15140:16;15133:86;15277:2;15353:9;15349:22;4348:13;4366:57;4417:5;4366:57;:::i;:::-;15277:2;15292:16;;15285:93;15440:2;15502:22;;867:13;885:30;867:13;885:30;:::i;:::-;15440:2;15455:16;;15448:83;15459:5;14989:563;-1:-1;;14989:563::o;15580:158::-;;15690:3;15681:6;15676:3;15672:16;15668:26;15665:2;;;-1:-1;;15697:12;19542:241;;19646:2;19634:9;19625:7;19621:23;19617:32;19614:2;;;-1:-1;;19652:12;19614:2;85:6;72:20;97:33;124:5;97:33;:::i;19790:263::-;;19905:2;19893:9;19884:7;19880:23;19876:32;19873:2;;;-1:-1;;19911:12;19873:2;226:6;220:13;238:33;265:5;238:33;:::i;20060:257::-;;20172:2;20160:9;20151:7;20147:23;20143:32;20140:2;;;-1:-1;;20178:12;20140:2;873:6;867:13;885:30;909:5;885:30;:::i;20324:241::-;;20428:2;20416:9;20407:7;20403:23;20399:32;20396:2;;;-1:-1;;20434:12;20396:2;-1:-1;994:20;;20390:175;-1:-1;20390:175::o;20572:263::-;;20687:2;20675:9;20666:7;20662:23;20658:32;20655:2;;;-1:-1;;20693:12;20655:2;-1:-1;1142:13;;20649:186;-1:-1;20649:186::o;20842:366::-;;;20963:2;20951:9;20942:7;20938:23;20934:32;20931:2;;;-1:-1;;20969:12;20931:2;1007:6;994:20;21021:63;;21121:2;21164:9;21160:22;72:20;97:33;124:5;97:33;:::i;:::-;21129:63;;;;20925:283;;;;;:::o;21215:366::-;;;21336:2;21324:9;21315:7;21311:23;21307:32;21304:2;;;-1:-1;;21342:12;21304:2;-1:-1;;994:20;;;21494:2;21533:22;;;994:20;;-1:-1;21298:283::o;21588:489::-;;;;21725:2;21713:9;21704:7;21700:23;21696:32;21693:2;;;-1:-1;;21731:12;21693:2;-1:-1;;994:20;;;21883:2;21922:22;;994:20;;-1:-1;21991:2;22029:22;;;5662:20;;21687:390;-1:-1;21687:390::o;22084:489::-;;;;22221:2;22209:9;22200:7;22196:23;22192:32;22189:2;;;-1:-1;;22227:12;22189:2;994:20;;;-1:-1;22379:2;22417:22;;1271:20;-1:-1;;;;;;88137:78;;94494:34;;94484:2;;-1:-1;;94532:12;94484:2;22387:62;-1:-1;22486:2;22525:22;;72:20;97:33;72:20;97:33;:::i;:::-;22494:63;;;;22183:390;;;;;:::o;22580:430::-;;;22732:4;22720:9;22711:7;22707:23;22703:34;22700:2;;;-1:-1;;22740:12;22700:2;1007:6;994:20;22792:63;;22910:84;22986:7;22892:2;22966:9;22962:22;22910:84;:::i;:::-;22900:94;;22694:316;;;;;:::o;23017:1468::-;;;;;;;;;;23366:4;23354:9;23345:7;23341:23;23337:34;23334:2;;;-1:-1;;23374:12;23334:2;1007:6;994:20;23426:63;;23544:84;23620:7;23526:2;23600:9;23596:22;23544:84;:::i;:::-;23534:94;;23685:79;23756:7;23665:4;23736:9;23732:22;23685:79;:::i;:::-;23675:89;;23829:4;23818:9;23814:20;23801:34;23855:18;;23847:6;23844:30;23841:2;;;-1:-1;;23877:12;23841:2;23978:6;23967:9;23963:22;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;482:6;469:20;459:30;;23855:18;501:6;498:30;495:2;;;-1:-1;;531:12;495:2;626:3;23526:2;;610:6;606:17;567:6;592:32;;589:41;586:2;;;-1:-1;;633:12;586:2;23526;563:17;;-1:-1;23897:98;;-1:-1;24052:87;;-1:-1;24131:7;24032:4;24107:22;;24052:87;:::i;:::-;24042:97;;24196:53;24241:7;24176:4;24221:9;24217:22;24196:53;:::i;:::-;24186:63;;24306:53;24351:7;24286:4;24331:9;24327:22;24306:53;:::i;:::-;24296:63;;24416:53;24461:7;24396:4;24441:9;24437:22;24416:53;:::i;:::-;24406:63;;23328:1157;;;;;;;;;;;:::o;24492:419::-;;;24639:3;24627:9;24618:7;24614:23;24610:33;24607:2;;;-1:-1;;24646:12;24607:2;1007:6;994:20;24698:63;;24816:79;24887:7;24798:2;24867:9;24863:22;24816:79;:::i;25291:271::-;;25410:2;25398:9;25389:7;25385:23;25381:32;25378:2;;;-1:-1;;25416:12;25378:2;4912:6;4899:20;4924:48;4966:5;4924:48;:::i;25569:396::-;;;25705:2;25693:9;25684:7;25680:23;25676:32;25673:2;;;-1:-1;;25711:12;25673:2;4912:6;4899:20;4924:48;4966:5;4924:48;:::i;:::-;25763:78;25878:2;25917:22;;;;19194:20;;-1:-1;;;25667:298::o;26240:306::-;;26376:3;26364:9;26355:7;26351:23;26347:33;26344:2;;;-1:-1;;26383:12;26344:2;6258:20;26376:3;6258:20;:::i;:::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6345:75;;6495:2;6549:22;;72:20;97:33;72:20;97:33;:::i;:::-;6495:2;6510:16;;6503:75;6654:2;6708:22;;72:20;97:33;72:20;97:33;:::i;:::-;6654:2;6669:16;;6662:75;6817:2;6871:22;;72:20;97:33;72:20;97:33;:::i;:::-;6817:2;6832:16;;6825:75;6836:5;26338:208;-1:-1;;;26338:208::o;26553:323::-;;26697:4;26685:9;26676:7;26672:23;26668:34;26665:2;;;-1:-1;;26705:12;26665:2;7316:22;7331:6;7316:22;:::i;:::-;7428:78;7502:3;7478:22;7428:78;:::i;:::-;7410:16;7403:104;7605:74;7675:3;7572:2;7655:9;7651:22;7605:74;:::i;:::-;7572:2;7591:5;7587:16;7580:100;7782:78;7856:3;7749:2;7836:9;7832:22;7782:78;:::i;:::-;7749:2;7768:5;7764:16;7757:104;7969:84;8049:3;7936:2;8029:9;8025:22;7969:84;:::i;:::-;7936:2;7955:5;7951:16;7944:110;8166:87;8249:3;8132;8229:9;8225:22;8166:87;:::i;:::-;8132:3;8152:5;8148:16;8141:113;8365:86;8447:3;8331;8427:9;8423:22;8365:86;:::i;:::-;8331:3;8351:5;8347:16;8340:112;8553:76;8625:3;8519;8605:9;8601:22;8553:76;:::i;:::-;8519:3;8539:5;8535:16;8528:102;8729:60;8785:3;8695;8765:9;8761:22;8729:60;:::i;:::-;8695:3;8715:5;8711:16;8704:86;8865:3;8901:60;8957:3;8865;8937:9;8933:22;8901:60;:::i;:::-;8881:18;;;8874:88;9035:3;9103:22;;;19342:13;9051:18;;;9044:88;9199:3;9267:22;;;19342:13;9215:18;;;9208:88;9372:3;9440:22;;;19342:13;9388:18;;;9381:88;9538:3;9606:22;;;19342:13;9554:18;;;9547:88;9701:3;9769:22;;;19342:13;9717:18;;;9710:88;9882:3;9950:22;;;19342:13;9898:18;;;9891:88;10064:3;10132:22;;;19342:13;10080:18;;;10073:88;10241:3;10309:22;;;19342:13;10257:18;;;10250:88;10407:3;10474:22;;;5808:13;10423:18;;;10416:87;10570:3;10637:22;;;5808:13;10586:18;;;10579:87;10731:3;10798:22;;;5808:13;10747:18;;;10740:87;10901:3;10968:22;;;5808:13;10917:18;;;10910:87;11064:3;11131:22;;;5808:13;11080:18;;;11073:87;11228:3;11264:81;11341:3;11317:22;;;11264:81;:::i;:::-;11244:18;;;11237:109;11420:3;11456:81;11533:3;11509:22;;;11456:81;:::i;:::-;11447:6;11440:5;11436:18;11429:109;11611:3;11647:81;11724:3;11611;11704:9;11700:22;11647:81;:::i;:::-;11638:6;11631:5;11627:18;11620:109;11798:3;11834:81;11911:3;11798;11891:9;11887:22;11834:81;:::i;:::-;11420:3;11818:5;11814:18;11807:109;12024:81;12101:3;11987:4;12081:9;12077:22;12024:81;:::i;:::-;12015:6;12008:5;12004:18;11997:109;12217:82;12295:3;12180:4;12275:9;12271:22;12217:82;:::i;:::-;12208:6;12201:5;12197:18;12190:110;12412:82;12490:3;12375:4;12470:9;12466:22;12412:82;:::i;:::-;11611:3;12396:5;12392:18;12385:110;12602:82;12680:3;12565:4;12660:9;12656:22;12602:82;:::i;:::-;12593:6;12586:5;12582:18;12575:110;12798:96;12890:3;12761:4;12870:9;12866:22;12798:96;:::i;:::-;12789:6;12782:5;12778:18;12771:124;13008:96;13100:3;12971:4;13080:9;13076:22;13008:96;:::i;:::-;12988:18;;;12981:124;-1:-1;12992:5;;26659:217;-1:-1;;;;26659:217::o;26883:336::-;;27034:3;27022:9;27013:7;27009:23;27005:33;27002:2;;;-1:-1;;27041:12;27002:2;27103:100;27195:7;27171:22;27103:100;:::i;27226:308::-;;27363:3;27351:9;27342:7;27338:23;27334:33;27331:2;;;-1:-1;;27370:12;27331:2;27432:86;27510:7;27486:22;27432:86;:::i;27541:305::-;;27677:2;27665:9;27656:7;27652:23;27648:32;27645:2;;;-1:-1;;27683:12;27645:2;27745:85;27822:7;27798:22;27745:85;:::i;27853:290::-;;27981:3;;27969:9;27960:7;27956:23;27952:33;27949:2;;;-1:-1;;27988:12;27949:2;15915:22;27981:3;15915:22;:::i;:::-;16034:74;16104:3;16080:22;16034:74;:::i;:::-;16009:100;;16176:2;16230:22;;;19194:20;16191:16;;;16184:75;16333:2;16387:22;;;19194:20;16348:16;;;16341:75;16485:2;16539:22;;;19194:20;16500:16;;;16493:75;16637:3;16692:22;;;19194:20;16653:16;;;16646:75;16793:3;16848:22;;;19194:20;16809:16;;;16802:75;16947:3;17002:22;;;19194:20;16963:16;;;16956:75;17105:3;17159:22;;;5662:20;17121:16;;;17114:74;17260:3;17316:22;;;5662:20;17276:18;;;17269:76;17412:3;17468:22;;;5662:20;17428:18;;;17421:76;17573:3;17629:22;;;5662:20;17589:18;;;17582:76;17740:3;17796:22;;;5662:20;17756:18;;;17749:76;17907:3;17963:22;;;5662:20;17923:18;;;17916:76;18079:3;18135:22;;;5662:20;18095:18;;;18088:76;18235:3;18291:22;;;5662:20;18251:18;;;18244:76;18393:3;18449:22;;;5662:20;18409:18;;;18402:76;18543:3;18599:22;;;5662:20;18559:18;;;18552:76;18702:3;18758:22;;;5662:20;18718:18;;;18711:76;18856:3;18912:22;;;5662:20;18872:18;;;18865:76;19014:3;19070:22;;;5662:20;19030:18;;;19023:76;;;;-1:-1;16016:16;;27943:200;-1:-1;;27943:200::o;28420:259::-;;28533:2;28521:9;28512:7;28508:23;28504:32;28501:2;;;-1:-1;;28539:12;28501:2;19487:6;19481:13;90554:4;96454:5;90543:16;96431:5;96428:33;96418:2;;-1:-1;;96465:12;28868:103;-1:-1;;;;;90338:54;28929:37;;28923:48::o;30859:166::-;92638:1;92631:5;92628:12;92618:2;;92644:9;92618:2;30945:75;;30939:86::o;31213:140::-;88476:47;88517:5;88476:47;:::i;31515:162::-;88628:58;88680:5;88628:58;:::i;32392:148::-;93239:2;93232:5;93229:13;93219:2;;93246:9;32710:148;93356:2;93349:5;93346:13;93336:2;;93363:9;33028:144;93471:1;93464:5;93461:12;93451:2;;93477:9;50620:6163;50876:79;50940:14;50853:16;50847:23;50876:79;:::i;:::-;51038:4;51031:5;51027:16;51021:23;51050:75;51038:4;51114:3;51110:14;51096:12;51050:75;:::i;:::-;;51212:4;51205:5;51201:16;51195:23;51224:79;51212:4;51292:3;51288:14;51274:12;51224:79;:::i;:::-;;51396:4;51389:5;51385:16;51379:23;51408:85;51396:4;51482:3;51478:14;51464:12;51408:85;:::i;:::-;;51589:4;51582:5;51578:16;51572:23;51601:88;51589:4;51678:3;51674:14;51660:12;51601:88;:::i;:::-;;51784:4;51777:5;51773:16;51767:23;51796:87;51784:4;51872:3;51868:14;51854:12;51796:87;:::i;:::-;;51968:4;51961:5;51957:16;51951:23;51980:77;51968:4;52046:3;52042:14;52028:12;51980:77;:::i;:::-;;52140:4;52133:5;52129:16;52123:23;52152:63;52140:4;52204:3;52200:14;52186:12;52152:63;:::i;:::-;;52308:6;;52301:5;52297:18;52291:25;52322:65;52308:6;52374:3;52370:16;52356:12;52322:65;:::i;:::-;-1:-1;;52478:6;52467:18;;;52461:25;52540:16;;;30327:37;52642:6;52631:18;;;52625:25;52704:16;;;30327:37;52815:6;52804:18;;;52798:25;52877:16;;;30327:37;52981:6;52970:18;;;52964:25;53043:16;;;30327:37;53144:6;53133:18;;;53127:25;53206:16;;;30327:37;53325:6;53314:18;;;53308:25;53387:16;;;30327:37;53507:6;53496:18;;;53490:25;53569:16;;;30327:37;53684:6;53673:18;;;53667:25;53746:16;;;30327:37;53850:6;53839:18;;;53833:25;53910:16;;;30327:37;54012:6;54001:18;;;53995:25;54072:16;;;30327:37;54172:6;54161:18;;;54155:25;54232:16;;;30327:37;54341:6;54330:18;;;54324:25;54401:16;;;30327:37;54503:6;54492:18;;;54486:25;54563:16;;;30327:37;54666:6;54655:18;;;54649:25;54680:107;54770:16;;;54649:25;54680:107;:::i;:::-;;;54879:6;54872:5;54868:18;54862:25;54992:6;54893:107;54992:6;54987:3;54983:16;54969:12;54893:107;:::i;:::-;55091:6;55084:5;55080:18;55074:25;55054:45;;55204:6;55105:107;55204:6;55199:3;55195:16;55181:12;55105:107;:::i;:::-;55288:18;;;55282:25;;-1:-1;55412:6;;55313:107;55403:16;;;55282:25;55313:107;:::i;:::-;55509:6;55502:5;55498:18;55492:25;55472:45;;55523:107;55622:6;55617:3;55613:16;55599:12;55523:107;:::i;:::-;55722:6;55715:5;55711:18;55705:25;55685:45;;55736:109;55837:6;55832:3;55828:16;55814:12;55736:109;:::i;:::-;55927:18;;55921:25;;-1:-1;55952:109;56053:6;56044:16;;55921:25;55952:109;:::i;:::-;56149:6;56142:5;56138:18;56132:25;56112:45;;56163:109;56264:6;56259:3;56255:16;56241:12;56163:109;:::i;:::-;56366:6;56359:5;56355:18;56349:25;56329:45;;56380:137;56509:6;56504:3;56500:16;56486:12;56380:137;:::i;:::-;56600:18;;56594:25;;-1:-1;56625:137;56754:6;56745:16;;56594:25;56625:137;:::i;56849:1056::-;1007:6;994:20;30334:3;30327:37;85344:2;57115:16;85335:12;994:20;85344:2;57390:3;57386:14;30327:37;57535:4;57528:5;57524:16;2341:20;2366:60;2420:5;2366:60;:::i;:::-;88793;88847:5;88793:60;:::i;:::-;57535:4;57628:14;;32124:75;57776:4;57765:16;;2341:20;2366:60;2341:20;2366:60;:::i;:::-;88793;88847:5;88793:60;:::i;:::-;91146:51;57776:4;57873:3;57869:14;31770:75;;56987:918;;:::o;57971:852::-;58200:16;58194:23;30334:3;30327:37;58368:4;58361:5;58357:16;58351:23;58368:4;58432:3;58428:14;30327:37;58523:4;58516:5;58512:16;58506:23;88793:60;88847:5;88793:60;:::i;:::-;58523:4;58608:14;;32124:75;58702:4;58691:16;;58685:23;88793:60;58685:23;88793:60;:::i;59789:925::-;19207:6;19194:20;30334:3;30327:37;87789:2;60022:16;87780:12;2152:20;2177:58;2229:5;2177:58;:::i;:::-;88628;88680:5;88628:58;:::i;:::-;87789:2;60299:14;;34255:55;87023:12;;;1807:20;1832:47;1807:20;1832:47;:::i;:::-;88476;88517:5;88476:47;:::i;:::-;87023:12;60497:14;;34529:55;87165:12;;;725:20;750:30;725:20;750:30;:::i;:::-;30027:5;87971:13;87964:21;87165:12;60682:3;60678:14;30000:34;;59899:815;;:::o;60752:764::-;60948:16;60942:23;30334:3;30327:37;61110:4;61103:5;61099:16;61093:23;88628:58;88680:5;88628:58;:::i;:::-;61110:4;61175:14;;34255:55;61266:4;61255:16;;61249:23;88476:47;61249:23;88476:47;:::i;:::-;61266:4;61331:14;;34529:55;61426:4;61415:16;;;61409:23;87971:13;87964:21;61480:14;;30000:34;60852:664::o;62364:725::-;19207:6;19194:20;30334:3;30327:37;87789:2;62595:16;87780:12;2152:20;2177:58;2229:5;2177:58;:::i;:::-;88628;88680:5;88628:58;:::i;:::-;87789:2;62872:14;;34255:55;87023:12;;;725:20;750:30;725:20;750:30;:::i;:::-;30027:5;87971:13;87964:21;87023:12;63057:3;63053:14;30000:34;;62472:617;;:::o;63125:606::-;63319:16;63313:23;30334:3;30327:37;63481:4;63474:5;63470:16;63464:23;88628:58;88680:5;88628:58;:::i;:::-;63481:4;63546:14;;34255:55;63641:4;63630:16;;;63624:23;87971:13;87964:21;63695:14;;30000:34;63223:508::o;68429:222::-;-1:-1;;;;;90338:54;;;;28929:37;;68556:2;68541:18;;68527:124::o;68658:333::-;-1:-1;;;;;90338:54;;;28929:37;;90338:54;;68977:2;68962:18;;28929:37;68813:2;68798:18;;68784:207::o;68998:370::-;69175:2;69189:47;;;84469:12;;69160:18;;;84744:19;;;68998:370;;69175:2;84323:14;;;;84784;;;;68998:370;29655:260;29680:6;29677:1;29674:13;29655:260;;;29741:13;;30327:37;;84599:14;;;;28840;;;;29702:1;29695:9;29655:260;;;-1:-1;69242:116;;69146:222;-1:-1;;;;;;69146:222::o;69375:210::-;87971:13;;87964:21;30000:34;;69496:2;69481:18;;69467:118::o;69592:317::-;87971:13;;87964:21;30000:34;;69895:2;69880:18;;30327:37;69739:2;69724:18;;69710:199::o;69916:222::-;30327:37;;;70043:2;70028:18;;70014:124::o;70145:444::-;30327:37;;;-1:-1;;;;;90338:54;;;70492:2;70477:18;;28929:37;90338:54;70575:2;70560:18;;28929:37;70328:2;70313:18;;70299:290::o;70596:459::-;30327:37;;;-1:-1;;;71041:2;71026:18;;35621:26;70814:2;70799:18;;70785:270::o;71062:459::-;30327:37;;;-1:-1;;;71507:2;71492:18;;37774:32;71280:2;71265:18;;71251:270::o;71528:459::-;30327:37;;;-1:-1;;;71973:2;71958:18;;39485:32;71746:2;71731:18;;71717:270::o;71994:459::-;30327:37;;;-1:-1;;;72439:2;72424:18;;39668:34;72212:2;72197:18;;72183:270::o;72460:218::-;-1:-1;;;;;;88137:78;;;;30811:36;;72585:2;72570:18;;72556:122::o;72685:359::-;72853:2;72838:18;;92237:39;34170:5;92237:39;:::i;:::-;34121:3;34114:63;30357:5;73030:2;73019:9;73015:18;30327:37;72824:220;;;;;:::o;73276:416::-;73476:2;73490:47;;;35301:2;73461:18;;;84744:19;35337:34;84784:14;;;35317:55;35406:32;35392:12;;;35385:54;35458:12;;;73447:245::o;73699:416::-;73899:2;73913:47;;;35886:2;73884:18;;;84744:19;35922:34;84784:14;;;35902:55;35991:31;35977:12;;;35970:53;36042:12;;;73870:245::o;74122:416::-;74322:2;74336:47;;;36293:2;74307:18;;;84744:19;36329:34;84784:14;;;36309:55;-1:-1;;;36384:12;;;36377:30;36426:12;;;74293:245::o;74545:416::-;74745:2;74759:47;;;36677:2;74730:18;;;84744:19;36713:34;84784:14;;;36693:55;36782:27;36768:12;;;36761:49;36829:12;;;74716:245::o;74968:416::-;75168:2;75182:47;;;37080:2;75153:18;;;84744:19;37116:34;84784:14;;;37096:55;-1:-1;;;37171:12;;;37164:39;37222:12;;;75139:245::o;75391:416::-;75591:2;75605:47;;;37473:2;75576:18;;;84744:19;37509:34;84784:14;;;37489:55;-1:-1;;;37564:12;;;37557:35;37611:12;;;75562:245::o;75814:416::-;76014:2;76028:47;;;38045:2;75999:18;;;84744:19;38081:34;84784:14;;;38061:55;-1:-1;;;38136:12;;;38129:44;38192:12;;;75985:245::o;76237:416::-;76437:2;76451:47;;;38443:2;76422:18;;;84744:19;38479:34;84784:14;;;38459:55;38548:26;38534:12;;;38527:48;38594:12;;;76408:245::o;76660:416::-;76860:2;76874:47;;;38845:2;76845:18;;;84744:19;38881:34;84784:14;;;38861:55;-1:-1;;;38936:12;;;38929:33;38981:12;;;76831:245::o;77083:416::-;77283:2;77297:47;;;77268:18;;;84744:19;39268:34;84784:14;;;39248:55;39322:12;;;77254:245::o;77506:416::-;77706:2;77720:47;;;39941:2;77691:18;;;84744:19;39977:34;84784:14;;;39957:55;40046:25;40032:12;;;40025:47;40091:12;;;77677:245::o;77929:416::-;78129:2;78143:47;;;40342:2;78114:18;;;84744:19;40378:34;84784:14;;;40358:55;40447:27;40433:12;;;40426:49;40494:12;;;78100:245::o;78352:416::-;78552:2;78566:47;;;40745:2;78537:18;;;84744:19;40781:34;84784:14;;;40761:55;-1:-1;;;40836:12;;;40829:39;40887:12;;;78523:245::o;78775:416::-;78975:2;78989:47;;;41138:2;78960:18;;;84744:19;41174:34;84784:14;;;41154:55;-1:-1;;;41229:12;;;41222:44;41285:12;;;78946:245::o;79198:416::-;79398:2;79412:47;;;41536:2;79383:18;;;84744:19;41572:34;84784:14;;;41552:55;41641:34;41627:12;;;41620:56;-1:-1;;;41696:12;;;41689:26;41734:12;;;79369:245::o;79621:351::-;42046:23;;-1:-1;;;;;90338:54;;;28929:37;;42231:4;42220:16;;;42214:23;90338:54;;42291:14;;;28929:37;42400:4;42389:16;;;42383:23;90338:54;;42460:14;;;28929:37;42573:4;42562:16;;;42556:23;90338:54;42633:14;;;28929:37;;;;79812:3;79797:19;;79783:189::o;80272:405::-;30327:37;;;80663:2;80648:18;;30327:37;80459:2;80444:18;;80430:247::o;80684:527::-;30327:37;;;80931:4;80916:20;;81197:2;86365:12;;;;43165:87;;81182:18;;86321:57;86365:12;43142:16;86321:57;:::i;:::-;43165:87;:::i;:::-;43318:64;43365:16;43358:5;43318:64;:::i;:::-;43388:83;43456:14;81186:9;43456:14;43442:12;43388:83;:::i;:::-;;;43541:68;43456:14;43596:5;43592:16;43585:5;43541:68;:::i;:::-;43615:87;43687:14;81186:9;43687:14;43673:12;43615:87;:::i;:::-;;43778:74;43687:14;43839:5;43835:16;43828:5;43778:74;:::i;:::-;43858:93;43936:14;81186:9;43936:14;43922:12;43858:93;:::i;:::-;;44030:77;43936:14;44094:5;44090:16;44083:5;44030:77;:::i;:::-;44113:96;44194:14;81186:9;44194:14;44180:12;44113:96;:::i;:::-;;44287:76;44194:14;44350:5;44346:16;44339:5;44287:76;:::i;:::-;44369:95;44449:14;81186:9;44449:14;44435:12;44369:95;:::i;:::-;;44532:66;44449:14;44585:5;44581:16;44574:5;44532:66;:::i;:::-;44604:85;44674:14;81186:9;44674:14;44660:12;44604:85;:::i;:::-;;44755:50;44674:14;44792:5;44788:16;44781:5;44755:50;:::i;:::-;44867:14;44811:71;44867:14;81186:9;44867:14;44853:12;44811:71;:::i;:::-;44958:52;44867:14;44995:5;44991:18;44984:5;44958:52;:::i;:::-;44938:72;;;45072:16;45016:73;45072:16;81186:9;45072:16;45058:12;45016:73;:::i;:::-;45277:16;;;45072;45200:5;45196:18;19194:20;45277:16;81186:9;45277:16;30327:37;;45476:16;45277;45399:5;45395:18;19194:20;45476:16;81186:9;45476:16;30327:37;45684:16;;;45476;45607:5;45603:18;19194:20;45684:16;81186:9;45684:16;30327:37;;45885:16;45684;45808:5;45804:18;19194:20;45885:16;81186:9;45885:16;30327:37;46083:16;;;45885;46006:5;46002:18;19194:20;46083:16;81186:9;46083:16;30327:37;;46299:16;46083;46222:5;46218:18;19194:20;46299:16;81186:9;46299:16;30327:37;46516:16;;;46299;46439:5;46435:18;19194:20;46516:16;81186:9;46516:16;30327:37;;46728:16;46516;46651:5;46647:18;19194:20;46728:16;81186:9;46728:16;30327:37;46926:16;;;46728;46851:5;46847:18;5662:20;46926:16;81186:9;46926:16;30327:37;;47122:16;46926;47047:5;47043:18;5662:20;47122:16;81186:9;47122:16;30327:37;47316:16;;;47122;47241:5;47237:18;5662:20;47316:16;81186:9;47316:16;30327:37;;47519:16;47316;47444:5;47440:18;5662:20;47519:16;81186:9;47519:16;30327:37;47715:16;;;47519;47640:5;47636:18;5662:20;47715:16;81186:9;47715:16;30327:37;;47882:117;47982:16;81186:9;47982:16;47715;47861:5;47857:18;47882:117;:::i;:::-;;48155;48255:16;81186:9;48255:16;48141:6;48134:5;48130:18;48155:117;:::i;:::-;48427;48527:16;81186:9;48527:16;48413:6;48406:5;48402:18;48427:117;:::i;:::-;48695;48795:16;81186:9;48795:16;48681:6;48674:5;48670:18;48695:117;:::i;:::-;48965;49065:16;81186:9;49065:16;48951:6;48944:5;48940:18;48965:117;:::i;:::-;49239:119;49341:16;81186:9;49341:16;49225:6;49218:5;49214:18;49239:119;:::i;:::-;49516;49618:16;81186:9;49618:16;49502:6;49495:5;49491:18;49516:119;:::i;:::-;49788;49890:16;81186:9;49890:16;49774:6;49767:5;49763:18;49788:119;:::i;:::-;50080:147;50210:16;81186:9;50210:16;50066:6;50059:5;50055:18;50080:147;:::i;:::-;50400;50530:16;81186:9;50530:16;50386:6;50379:5;50375:18;50400:147;:::i;81218:340::-;81403:4;81388:20;;81419:129;81392:9;81521:6;81419:129;:::i;81565:592::-;81819:4;81804:20;;81835:129;81808:9;81937:6;81835:129;:::i;:::-;30357:5;82043:4;82032:9;82028:20;30327:37;92237:39;34170:5;92237:39;:::i;:::-;82141:4;82130:9;82126:20;34114:63;81790:367;;;;;;:::o;82164:::-;82363:3;82348:19;;82378:143;82352:9;82494:6;82378:143;:::i;82538:311::-;82709:3;82694:19;;82724:115;82698:9;82812:6;82724:115;:::i;82856:306::-;83025:2;83010:18;;83039:113;83014:9;83125:6;83039:113;:::i;83169:319::-;;83344:3;83333:9;83329:19;83321:27;;64678:86;64749:14;64655:16;64649:23;64678:86;:::i;:::-;64849:4;64838:16;;;64832:23;64909:14;;;30327:37;65016:4;65005:16;;;64999:23;65076:14;;;30327:37;65178:4;65167:16;;;65161:23;65238:14;;;30327:37;65340:4;65329:16;;;65323:23;65400:14;;;30327:37;65505:4;65494:16;;;65488:23;65565:14;;;30327:37;65668:4;65657:16;;;65651:23;65728:14;;;30327:37;65835:4;65824:16;;;65818:23;65893:14;;;30327:37;65998:6;65987:18;;;65981:25;66058:16;;;30327:37;66160:6;66149:18;;;66143:25;66220:16;;;30327:37;66331:6;66320:18;;;66314:25;66391:16;;;30327:37;66508:6;66497:18;;;66491:25;66568:16;;;30327:37;66685:6;66674:18;;;66668:25;66745:16;;;30327:37;66867:6;66856:18;;;66850:25;66927:16;;;30327:37;67033:6;67022:18;;;67016:25;67093:16;;;30327:37;67201:6;67190:18;;;67184:25;67261:16;;;30327:37;67361:6;67350:18;;;67344:25;67421:16;;;30327:37;67530:6;67519:18;;;67513:25;67590:16;;;30327:37;67694:6;67683:18;;;67677:25;67754:16;;;30327:37;67862:6;67851:18;;;67845:25;67922:16;;;;30327:37;;;;83315:173;:::o;83724:214::-;90554:4;90543:16;;;;68382:35;;83847:2;83832:18;;83818:120::o;83945:256::-;84007:2;84001:9;84033:17;;;84108:18;84093:34;;84129:22;;;84090:62;84087:2;;;84165:1;;84155:12;84087:2;84007;84174:22;83985:216;;-1:-1;83985:216::o;84985:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;85363:173::-;;1447:6;1434:20;1459:60;1513:5;1459:60;:::i;85545:147::-;;1820:6;1807:20;1832:47;1873:5;1832:47;:::i;86065:155::-;;3117:6;3104:20;3129:51;3174:5;3129:51;:::i;86393:151::-;;3815:6;3802:20;3827:49;3870:5;3827:49;:::i;86553:167::-;;2165:6;2152:20;2177:58;2229:5;2177:58;:::i;89801:136::-;89867:16;93830:2;93820:13;;93810:2;;93837:9;92667:105;92750:1;92743:5;92740:12;92730:2;;92756:9;92730:2;92724:48;:::o;92779:116::-;92873:1;92866:5;92863:12;92853:2;;92879:9;92902:118;92998:1;92991:5;92988:12;92978:2;;93004:9;94070:117;-1:-1;;;;;90338:54;;94129:35;;94119:2;;94178:1;;94168:12;94194:111;94275:5;87971:13;87964:21;94253:5;94250:32;94240:2;;94296:1;;94286:12;94558:121;94654:1;94647:5;94644:12;94634:2;;94670:1;;94660:12;94686:108;94769:1;94762:5;94759:12;94749:2;;94785:1;;94775:12;94801:119;94895:1;94888:5;94885:12;94875:2;;94911:1;;94901:12;94927:121;95023:1;95016:5;95013:12;95003:2;;95039:1;;95029:12;95183:113;95270:2;95263:5;95260:13;95250:2;;95287:1;;95277:12;95303:113;95390:2;95383:5;95380:13;95370:2;;95407:1;;95397:12;95423:110;95508:1;95501:5;95498:12;95488:2;;95524:1;;95514:12;95792:110;95876:2;95869:5;95866:13;95856:2;;95893:1;;95883:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@atpar/actus-solidity/contracts/Engines/CERTF/ICERTFEngine.sol\";\n\nimport \"../Base/SharedTypes.sol\";\nimport \"../Base/AssetRegistry/BaseRegistry.sol\";\nimport \"./CERTFEncoder.sol\";\nimport \"./ICERTFRegistry.sol\";\n\n\n/**\n * @title CERTFRegistry\n * @notice Registry for ACTUS Protocol assets\n */\ncontract CERTFRegistry is BaseRegistry, ICERTFRegistry {\n\n    using CERTFEncoder for Asset;\n\n    \n    constructor()\n        public\n        BaseRegistry()\n    {}\n\n    /**\n     * @notice\n     * @param assetId id of the asset\n     * @param terms asset specific terms (CERTFTerms)\n     * @param state initial state of the asset\n     * @param schedule schedule of the asset\n     * @param ownership ownership of the asset\n     * @param engine ACTUS Engine of the asset\n     * @param actor account which is allowed to update the asset state\n     * @param admin account which as admin rights (optional)\n     */\n    function registerAsset(\n        bytes32 assetId,\n        CERTFTerms calldata terms,\n        State calldata state,\n        bytes32[] calldata schedule,\n        AssetOwnership calldata ownership,\n        address engine,\n        address actor,\n        address admin\n    )\n        external\n        override\n        onlyApprovedActors\n    {\n        setAsset(assetId, state, schedule, ownership, engine, actor, admin);\n        assets[assetId].encodeAndSetCERTFTerms(terms);\n    }\n\n    /**\n     * @notice Returns the terms of an asset.\n     * @param assetId id of the asset\n     * @return terms of the asset\n     */\n    function getTerms(bytes32 assetId)\n        external\n        view\n        override\n        returns (CERTFTerms memory)\n    {\n        return assets[assetId].decodeAndGetCERTFTerms();\n    }\n\n    /**\n     * @notice Set the terms of the asset\n     * @dev Can only be set by authorized account.\n     * @param assetId id of the asset\n     * @param terms new terms\n     */\n    function setTerms(bytes32 assetId, CERTFTerms calldata terms)\n        external\n        override\n        isAuthorized (assetId)\n    {\n        assets[assetId].encodeAndSetCERTFTerms(terms);\n        emit UpdatedTerms(assetId);\n    }\n\n    function getEnumValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (uint8)\n    {\n        return assets[assetId].decodeAndGetEnumValueForCERTFAttribute(attribute);\n    }\n\n    function getAddressValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (address)\n    {\n        return assets[assetId].decodeAndGetAddressValueForForCERTFAttribute(attribute);\n    }\n\n    function getBytes32ValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (bytes32)\n    {\n        return assets[assetId].decodeAndGetBytes32ValueForForCERTFAttribute(attribute);\n    }\n\n    function getUIntValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (uint256)\n    {\n        return assets[assetId].decodeAndGetUIntValueForForCERTFAttribute(attribute);\n    }\n\n    function getIntValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (int256)\n    {\n        return assets[assetId].decodeAndGetIntValueForForCERTFAttribute(attribute);\n    }\n\n    function getPeriodValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (IP memory)\n    {\n        return assets[assetId].decodeAndGetPeriodValueForForCERTFAttribute(attribute);\n    }\n\n    function getCycleValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (IPS memory)\n    {\n        return assets[assetId].decodeAndGetCycleValueForForCERTFAttribute(attribute);\n    }\n\n    function getContractReferenceValueForTermsAttribute(bytes32 assetId, bytes32 attribute)\n        public\n        view\n        override(ITermsRegistry, TermsRegistry)\n        returns (ContractReference memory)\n    {\n        return assets[assetId].decodeAndGetContractReferenceValueForCERTFAttribute(attribute);\n    }\n\n    function getNextCyclicEvent(bytes32 assetId)\n        internal\n        view\n        override(TermsRegistry)\n        returns (bytes32)\n    {\n        Asset storage asset = assets[assetId];\n        CERTFTerms memory terms = asset.decodeAndGetCERTFTerms();\n\n        EventType nextEventType;\n        uint256 nextScheduleTimeOffset;\n\n        // CFD\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(ICERTFEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.CFD],\n                EventType.CFD\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset < nextScheduleTimeOffset)\n                || (nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        // CPD\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(ICERTFEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.CPD],\n                EventType.CPD\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        // RFD\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(ICERTFEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.RFD],\n                EventType.RFD\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        // RPD\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(ICERTFEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.RPD],\n                EventType.RPD\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        // XD\n        {\n            (EventType eventType, uint256 scheduleTimeOffset) = decodeEvent(ICERTFEngine(asset.engine).computeNextCyclicEvent(\n                terms,\n                asset.schedule.lastScheduleTimeOfCyclicEvent[EventType.XD],\n                EventType.XD\n            ));\n\n            if (\n                (nextScheduleTimeOffset == 0)\n                || (scheduleTimeOffset != 0 && scheduleTimeOffset < nextScheduleTimeOffset)\n                || (scheduleTimeOffset != 0 && nextScheduleTimeOffset == scheduleTimeOffset && getEpochOffset(eventType) < getEpochOffset(nextEventType))\n            ) {\n                nextScheduleTimeOffset = scheduleTimeOffset;\n                nextEventType = eventType;\n            }        \n        }\n\n        return encodeEvent(nextEventType, nextScheduleTimeOffset);\n    }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/CERTFRegistry.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/CERTFRegistry.sol",
    "exportedSymbols": {
      "CERTFRegistry": [
        14636
      ]
    },
    "id": 14637,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14033,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:40"
      },
      {
        "id": 14034,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:40"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/ICERTFEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/CERTF/ICERTFEngine.sol",
        "id": 14035,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 32424,
        "src": "101:72:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 14036,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 7865,
        "src": "175:33:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol",
        "file": "../Base/AssetRegistry/BaseRegistry.sol",
        "id": 14037,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 4422,
        "src": "209:48:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/CERTFEncoder.sol",
        "file": "./CERTFEncoder.sol",
        "id": 14038,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 14032,
        "src": "258:28:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/ICERTFRegistry.sol",
        "file": "./ICERTFRegistry.sol",
        "id": 14039,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 14679,
        "src": "287:30:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14041,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "424:12:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 14042,
            "nodeType": "InheritanceSpecifier",
            "src": "424:12:40"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14043,
              "name": "ICERTFRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14678,
              "src": "438:14:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICERTFRegistry_$14678",
                "typeString": "contract ICERTFRegistry"
              }
            },
            "id": 14044,
            "nodeType": "InheritanceSpecifier",
            "src": "438:14:40"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          14678,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 14040,
          "nodeType": "StructuredDocumentation",
          "src": "320:77:40",
          "text": " @title CERTFRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 14636,
        "linearizedBaseContracts": [
          14636,
          14678,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "CERTFRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 14047,
            "libraryName": {
              "contractScope": null,
              "id": 14045,
              "name": "CERTFEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14031,
              "src": "466:12:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CERTFEncoder_$14031",
                "typeString": "library CERTFEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "460:29:40",
            "typeName": {
              "contractScope": null,
              "id": 14046,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "483:5:40",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 14052,
              "nodeType": "Block",
              "src": "556:2:40",
              "statements": []
            },
            "documentation": null,
            "id": 14053,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 14050,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14049,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "537:12:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "537:14:40"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14048,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "511:2:40"
            },
            "returnParameters": {
              "id": 14051,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "556:0:40"
            },
            "scope": 14636,
            "src": "500:58:40",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              14663
            ],
            "body": {
              "id": 14094,
              "nodeType": "Block",
              "src": "1339:139:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14078,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14056,
                        "src": "1358:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14079,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14060,
                        "src": "1367:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14080,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14063,
                        "src": "1374:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14081,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14065,
                        "src": "1384:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14082,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14067,
                        "src": "1395:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14083,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14069,
                        "src": "1403:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14084,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14071,
                        "src": "1410:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 14077,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1349:8:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address)"
                      }
                    },
                    "id": 14085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1349:67:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14086,
                  "nodeType": "ExpressionStatement",
                  "src": "1349:67:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14091,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14058,
                        "src": "1465:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14087,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1426:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14089,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14088,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14056,
                          "src": "1433:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1426:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14090,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCERTFTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12664,
                      "src": "1426:38:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CERTFTerms_$22917_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CERTFTerms memory)"
                      }
                    },
                    "id": 14092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1426:45:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14093,
                  "nodeType": "ExpressionStatement",
                  "src": "1426:45:40"
                }
              ]
            },
            "documentation": {
              "id": 14054,
              "nodeType": "StructuredDocumentation",
              "src": "564:436:40",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (CERTFTerms)\n @param state initial state of the asset\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine ACTUS Engine of the asset\n @param actor account which is allowed to update the asset state\n @param admin account which as admin rights (optional)"
            },
            "functionSelector": "8c81ed92",
            "id": 14095,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 14075,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14074,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1316:18:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1316:18:40"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14073,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1299:8:40"
            },
            "parameters": {
              "id": 14072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14056,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1037:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14055,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1037:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14058,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1062:25:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14057,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "1062:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14060,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1097:20:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14059,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1097:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14063,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1127:27:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14061,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1127:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 14062,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1127:9:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14065,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1164:33:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14064,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1164:14:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14067,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1207:14:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14066,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1207:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14069,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1231:13:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14068,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1231:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14071,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1254:13:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14070,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1254:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1027:246:40"
            },
            "returnParameters": {
              "id": 14076,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1339:0:40"
            },
            "scope": 14636,
            "src": "1005:473:40",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14670
            ],
            "body": {
              "id": 14110,
              "nodeType": "Block",
              "src": "1740:64:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14104,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1757:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14106,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14105,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14098,
                          "src": "1764:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1757:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14107,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCERTFTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13415,
                      "src": "1757:38:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CERTFTerms_$22917_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CERTFTerms memory)"
                      }
                    },
                    "id": 14108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1757:40:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                      "typeString": "struct CERTFTerms memory"
                    }
                  },
                  "functionReturnParameters": 14103,
                  "id": 14109,
                  "nodeType": "Return",
                  "src": "1750:47:40"
                }
              ]
            },
            "documentation": {
              "id": 14096,
              "nodeType": "StructuredDocumentation",
              "src": "1484:129:40",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 14111,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14100,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1691:8:40"
            },
            "parameters": {
              "id": 14099,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14098,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14111,
                  "src": "1636:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14097,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1636:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1635:17:40"
            },
            "returnParameters": {
              "id": 14103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14102,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14111,
                  "src": "1717:17:40",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14101,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "1717:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1716:19:40"
            },
            "scope": 14636,
            "src": "1618:186:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14677
            ],
            "body": {
              "id": 14134,
              "nodeType": "Block",
              "src": "2118:98:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14127,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14116,
                        "src": "2167:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14123,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2128:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14125,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14124,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14114,
                          "src": "2135:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2128:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14126,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCERTFTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12664,
                      "src": "2128:38:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CERTFTerms_$22917_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CERTFTerms memory)"
                      }
                    },
                    "id": 14128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2128:45:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14129,
                  "nodeType": "ExpressionStatement",
                  "src": "2128:45:40"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14131,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14114,
                        "src": "2201:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14130,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2188:12:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 14132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2188:21:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14133,
                  "nodeType": "EmitStatement",
                  "src": "2183:26:40"
                }
              ]
            },
            "documentation": {
              "id": 14112,
              "nodeType": "StructuredDocumentation",
              "src": "1810:172:40",
              "text": " @notice Set the terms of the asset\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param terms new terms"
            },
            "functionSelector": "f7f729ad",
            "id": 14135,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14120,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14114,
                    "src": "2105:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 14121,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14119,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2091:12:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2091:22:40"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14118,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2074:8:40"
            },
            "parameters": {
              "id": 14117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14114,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14135,
                  "src": "2005:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14113,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2005:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14116,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14135,
                  "src": "2022:25:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14115,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "2022:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2004:44:40"
            },
            "returnParameters": {
              "id": 14122,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2118:0:40"
            },
            "scope": 14636,
            "src": "1987:229:40",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 14154,
              "nodeType": "Block",
              "src": "2401:89:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14151,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14139,
                        "src": "2473:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14147,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2418:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14149,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14148,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14137,
                          "src": "2425:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2418:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14150,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13578,
                      "src": "2418:54:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 14152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2418:65:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 14146,
                  "id": 14153,
                  "nodeType": "Return",
                  "src": "2411:72:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 14155,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14143,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14141,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2342:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14142,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2358:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2333:39:40"
            },
            "parameters": {
              "id": 14140,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14137,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14155,
                  "src": "2261:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14136,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2261:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14139,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14155,
                  "src": "2278:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14138,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2278:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2260:36:40"
            },
            "returnParameters": {
              "id": 14146,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14145,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14155,
                  "src": "2390:5:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 14144,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2390:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2389:7:40"
            },
            "scope": 14636,
            "src": "2222:268:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 14174,
              "nodeType": "Block",
              "src": "2680:95:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14171,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14159,
                        "src": "2758:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14167,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2697:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14169,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14168,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14157,
                          "src": "2704:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2697:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14170,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13642,
                      "src": "2697:60:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_address_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (address)"
                      }
                    },
                    "id": 14172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2697:71:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 14166,
                  "id": 14173,
                  "nodeType": "Return",
                  "src": "2690:78:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 14175,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14163,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14161,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2619:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14162,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2635:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2610:39:40"
            },
            "parameters": {
              "id": 14160,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14157,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14175,
                  "src": "2538:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14156,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2538:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14159,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14175,
                  "src": "2555:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14158,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2555:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2537:36:40"
            },
            "returnParameters": {
              "id": 14166,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14165,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14175,
                  "src": "2667:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14164,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2667:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2666:9:40"
            },
            "scope": 14636,
            "src": "2496:279:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 14194,
              "nodeType": "Block",
              "src": "2965:95:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14191,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14179,
                        "src": "3043:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14187,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2982:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14189,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14188,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14177,
                          "src": "2989:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2982:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14190,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13657,
                      "src": "2982:60:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 14192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2982:71:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 14186,
                  "id": 14193,
                  "nodeType": "Return",
                  "src": "2975:78:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 14195,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14183,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14181,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2904:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14182,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2920:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2895:39:40"
            },
            "parameters": {
              "id": 14180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14177,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14195,
                  "src": "2823:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14176,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2823:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14179,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14195,
                  "src": "2840:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14178,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2840:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2822:36:40"
            },
            "returnParameters": {
              "id": 14186,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14185,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14195,
                  "src": "2952:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14184,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2952:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2951:9:40"
            },
            "scope": 14636,
            "src": "2781:279:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 14214,
              "nodeType": "Block",
              "src": "3247:92:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14211,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14199,
                        "src": "3322:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14207,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3264:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14209,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14208,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14197,
                          "src": "3271:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3264:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14210,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13675,
                      "src": "3264:57:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 14212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3264:68:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14206,
                  "id": 14213,
                  "nodeType": "Return",
                  "src": "3257:75:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 14215,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14203,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14201,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3186:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14202,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3202:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3177:39:40"
            },
            "parameters": {
              "id": 14200,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14197,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14215,
                  "src": "3105:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14196,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3105:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14199,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14215,
                  "src": "3122:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14198,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3122:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3104:36:40"
            },
            "returnParameters": {
              "id": 14206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14205,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14215,
                  "src": "3234:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14204,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3234:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3233:9:40"
            },
            "scope": 14636,
            "src": "3066:273:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 14234,
              "nodeType": "Block",
              "src": "3524:91:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14231,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14219,
                        "src": "3598:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14227,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3541:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14229,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14228,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14217,
                          "src": "3548:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3541:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14230,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13693,
                      "src": "3541:56:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 14232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3541:67:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 14226,
                  "id": 14233,
                  "nodeType": "Return",
                  "src": "3534:74:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 14235,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14223,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14221,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3464:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14222,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3480:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3455:39:40"
            },
            "parameters": {
              "id": 14220,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14217,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14235,
                  "src": "3383:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14216,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3383:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14219,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14235,
                  "src": "3400:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14218,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3400:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3382:36:40"
            },
            "returnParameters": {
              "id": 14226,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14225,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14235,
                  "src": "3512:6:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 14224,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3512:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3511:8:40"
            },
            "scope": 14636,
            "src": "3345:270:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 14254,
              "nodeType": "Block",
              "src": "3806:94:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14251,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14239,
                        "src": "3883:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14247,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3823:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14249,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14248,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14237,
                          "src": "3830:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3823:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14250,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13800,
                      "src": "3823:59:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IP memory)"
                      }
                    },
                    "id": 14252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3823:70:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 14246,
                  "id": 14253,
                  "nodeType": "Return",
                  "src": "3816:77:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 14255,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14243,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14241,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3743:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14242,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3759:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3734:39:40"
            },
            "parameters": {
              "id": 14240,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14237,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14255,
                  "src": "3662:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14236,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3662:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14239,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14255,
                  "src": "3679:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14238,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3679:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3661:36:40"
            },
            "returnParameters": {
              "id": 14246,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14245,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14255,
                  "src": "3791:9:40",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14244,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3791:2:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3790:11:40"
            },
            "scope": 14636,
            "src": "3621:279:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 14274,
              "nodeType": "Block",
              "src": "4091:93:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14271,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14259,
                        "src": "4167:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14267,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4108:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14269,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14268,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14257,
                          "src": "4115:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4108:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14270,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13908,
                      "src": "4108:58:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IPS_$22486_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IPS memory)"
                      }
                    },
                    "id": 14272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4108:69:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 14266,
                  "id": 14273,
                  "nodeType": "Return",
                  "src": "4101:76:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 14275,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14263,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14261,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4027:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14262,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4043:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4018:39:40"
            },
            "parameters": {
              "id": 14260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14257,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14275,
                  "src": "3946:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14256,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3946:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14259,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14275,
                  "src": "3963:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14258,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3963:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3945:36:40"
            },
            "returnParameters": {
              "id": 14266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14265,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14275,
                  "src": "4075:10:40",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14264,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "4075:3:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4074:12:40"
            },
            "scope": 14636,
            "src": "3906:278:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 14294,
              "nodeType": "Block",
              "src": "4401:102:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14291,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14279,
                        "src": "4486:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14287,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4418:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14289,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14288,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14277,
                          "src": "4425:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4418:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14290,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14030,
                      "src": "4418:67:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct ContractReference memory)"
                      }
                    },
                    "id": 14292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4418:78:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 14286,
                  "id": 14293,
                  "nodeType": "Return",
                  "src": "4411:85:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 14295,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14283,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14281,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4323:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14282,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4339:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4314:39:40"
            },
            "parameters": {
              "id": 14280,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14277,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14295,
                  "src": "4242:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14276,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4242:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14279,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14295,
                  "src": "4259:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14278,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4259:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4241:36:40"
            },
            "returnParameters": {
              "id": 14286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14285,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14295,
                  "src": "4371:24:40",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14284,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4371:17:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4370:26:40"
            },
            "scope": 14636,
            "src": "4190:313:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 14634,
              "nodeType": "Block",
              "src": "4646:4010:40",
              "statements": [
                {
                  "assignments": [
                    14305
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14305,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14634,
                      "src": "4656:19:40",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14304,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "4656:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14309,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14306,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "4678:6:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 14308,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14307,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14297,
                      "src": "4685:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4678:15:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4656:37:40"
                },
                {
                  "assignments": [
                    14311
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14311,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14634,
                      "src": "4703:23:40",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                        "typeString": "struct CERTFTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14310,
                        "name": "CERTFTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22917,
                        "src": "4703:10:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                          "typeString": "struct CERTFTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14315,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 14312,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14305,
                        "src": "4729:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset storage pointer"
                        }
                      },
                      "id": 14313,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCERTFTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13415,
                      "src": "4729:28:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CERTFTerms_$22917_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CERTFTerms memory)"
                      }
                    },
                    "id": 14314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4729:30:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                      "typeString": "struct CERTFTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4703:56:40"
                },
                {
                  "assignments": [
                    14317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14317,
                      "mutability": "mutable",
                      "name": "nextEventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14634,
                      "src": "4770:23:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14316,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "4770:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14318,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4770:23:40"
                },
                {
                  "assignments": [
                    14320
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14320,
                      "mutability": "mutable",
                      "name": "nextScheduleTimeOffset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14634,
                      "src": "4803:30:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14319,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4803:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14321,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4803:30:40"
                },
                {
                  "id": 14376,
                  "nodeType": "Block",
                  "src": "4859:682:40",
                  "statements": [
                    {
                      "assignments": [
                        14323,
                        14325
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14323,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14376,
                          "src": "4874:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14322,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "4874:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14325,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14376,
                          "src": "4895:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14324,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4895:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14343,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14332,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "5004:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14333,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "5027:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14334,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "5027:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14335,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "5027:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14338,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14336,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5072:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14337,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "CFD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5072:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5027:59:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14339,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5104:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "CFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5104:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14328,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "4950:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14329,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "4950:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14327,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "4937:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4937:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "4937:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4937:194:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14326,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "4925:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4925:207:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4873:259:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14344,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "5169:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5195:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5169:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14347,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5168:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14348,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14325,
                                  "src": "5218:18:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 14349,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "5239:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5218:43:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14351,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5217:45:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5168:94:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14353,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "5283:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 14354,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14325,
                                  "src": "5309:18:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5283:44:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14357,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14323,
                                      "src": "5346:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14356,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5331:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5331:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14360,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "5374:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14359,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5359:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14361,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5359:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5331:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5283:105:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14364,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5282:107:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5168:221:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14375,
                      "nodeType": "IfStatement",
                      "src": "5147:376:40",
                      "trueBody": {
                        "id": 14374,
                        "nodeType": "Block",
                        "src": "5404:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14366,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "5422:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14367,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14325,
                                "src": "5447:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5422:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14369,
                            "nodeType": "ExpressionStatement",
                            "src": "5422:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14370,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "5483:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14371,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14323,
                                "src": "5499:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5483:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14373,
                            "nodeType": "ExpressionStatement",
                            "src": "5483:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 14439,
                  "nodeType": "Block",
                  "src": "5566:736:40",
                  "statements": [
                    {
                      "assignments": [
                        14378,
                        14380
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14378,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14439,
                          "src": "5581:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14377,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "5581:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14380,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14439,
                          "src": "5602:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14379,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5602:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14398,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14387,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "5711:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14388,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "5734:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14389,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "5734:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14390,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "5734:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14393,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14391,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5779:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14392,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "CPD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5779:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5734:59:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14394,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5811:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "CPD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5811:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14383,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "5657:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14384,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "5657:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14382,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "5644:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5644:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "5644:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14396,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5644:194:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14381,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "5632:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14397,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5632:207:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5580:259:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14399,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "5876:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5902:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5876:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14402,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5875:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14403,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14380,
                                    "src": "5925:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14404,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5947:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5925:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14408,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14406,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14380,
                                    "src": "5952:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14407,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "5973:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5952:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5925:70:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14410,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5924:72:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5875:121:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14412,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14380,
                                    "src": "6017:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6039:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6017:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14415,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "6044:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14416,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14380,
                                    "src": "6070:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6044:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6017:71:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14420,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14378,
                                      "src": "6107:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14419,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6092:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14421,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6092:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14423,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "6135:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14422,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6120:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6120:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6092:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6017:132:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14427,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6016:134:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5875:275:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14438,
                      "nodeType": "IfStatement",
                      "src": "5854:430:40",
                      "trueBody": {
                        "id": 14437,
                        "nodeType": "Block",
                        "src": "6165:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14429,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "6183:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14430,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14380,
                                "src": "6208:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6183:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14432,
                            "nodeType": "ExpressionStatement",
                            "src": "6183:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14433,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "6244:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14434,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14378,
                                "src": "6260:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6244:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14436,
                            "nodeType": "ExpressionStatement",
                            "src": "6244:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 14502,
                  "nodeType": "Block",
                  "src": "6327:736:40",
                  "statements": [
                    {
                      "assignments": [
                        14441,
                        14443
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14441,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14502,
                          "src": "6342:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14440,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "6342:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14443,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14502,
                          "src": "6363:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14442,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6363:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14461,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14450,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "6472:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14451,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "6495:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14452,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "6495:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14453,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "6495:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14456,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14454,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "6540:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "RFD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6540:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6495:59:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14457,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "6572:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6572:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14446,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "6418:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14447,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "6418:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14445,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "6405:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6405:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "6405:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6405:194:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14444,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "6393:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6393:207:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6341:259:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14462,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "6637:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14463,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6663:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6637:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14465,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6636:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14468,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14466,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14443,
                                    "src": "6686:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14467,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6708:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6686:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14469,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14443,
                                    "src": "6713:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14470,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "6734:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6713:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6686:70:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14473,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6685:72:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6636:121:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14481,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14475,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14443,
                                    "src": "6778:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14476,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6800:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6778:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14480,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14478,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "6805:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14479,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14443,
                                    "src": "6831:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6805:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6778:71:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14488,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14483,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14441,
                                      "src": "6868:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14482,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6853:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6853:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14486,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "6896:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14485,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6881:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14487,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6881:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6853:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6778:132:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14490,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6777:134:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6636:275:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14501,
                      "nodeType": "IfStatement",
                      "src": "6615:430:40",
                      "trueBody": {
                        "id": 14500,
                        "nodeType": "Block",
                        "src": "6926:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14494,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14492,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "6944:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14493,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14443,
                                "src": "6969:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6944:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14495,
                            "nodeType": "ExpressionStatement",
                            "src": "6944:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14496,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "7005:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14497,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14441,
                                "src": "7021:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "7005:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14499,
                            "nodeType": "ExpressionStatement",
                            "src": "7005:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 14565,
                  "nodeType": "Block",
                  "src": "7088:736:40",
                  "statements": [
                    {
                      "assignments": [
                        14504,
                        14506
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14504,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14565,
                          "src": "7103:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14503,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "7103:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14506,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14565,
                          "src": "7124:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14505,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7124:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14524,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14513,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "7233:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14514,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "7256:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14515,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "7256:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14516,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "7256:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14519,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14517,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "7301:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "RPD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7301:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7256:59:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14520,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "7333:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RPD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7333:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14509,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "7179:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14510,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "7179:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14508,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "7166:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7166:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "7166:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7166:194:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14507,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "7154:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7154:207:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7102:259:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14525,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "7398:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14526,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7424:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7398:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14528,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7397:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14529,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14506,
                                    "src": "7447:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14530,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7469:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7447:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14534,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14532,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14506,
                                    "src": "7474:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14533,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "7495:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7474:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7447:70:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14536,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7446:72:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7397:121:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14538,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14506,
                                    "src": "7539:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14539,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7561:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7539:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14543,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14541,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "7566:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14542,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14506,
                                    "src": "7592:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7566:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7539:71:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14546,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14504,
                                      "src": "7629:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14545,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7614:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7614:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14549,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "7657:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14548,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7642:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7642:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7614:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7539:132:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14553,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7538:134:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7397:275:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14564,
                      "nodeType": "IfStatement",
                      "src": "7376:430:40",
                      "trueBody": {
                        "id": 14563,
                        "nodeType": "Block",
                        "src": "7687:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14555,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "7705:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14556,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14506,
                                "src": "7730:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7705:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14558,
                            "nodeType": "ExpressionStatement",
                            "src": "7705:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14559,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "7766:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14560,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14504,
                                "src": "7782:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "7766:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14562,
                            "nodeType": "ExpressionStatement",
                            "src": "7766:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 14628,
                  "nodeType": "Block",
                  "src": "7848:734:40",
                  "statements": [
                    {
                      "assignments": [
                        14567,
                        14569
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14567,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14628,
                          "src": "7863:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14566,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "7863:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14569,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14628,
                          "src": "7884:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14568,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7884:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14587,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14576,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "7993:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14577,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "8016:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14578,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "8016:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14579,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "8016:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14582,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14580,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "8061:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "XD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8061:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8016:58:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14583,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "8092:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "XD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8092:12:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14572,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "7939:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14573,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "7939:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14571,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "7926:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7926:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "7926:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7926:192:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14570,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "7914:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7914:205:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7862:257:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14588,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "8156:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14589,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8182:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8156:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14591,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8155:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14592,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14569,
                                    "src": "8205:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14593,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8227:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "8205:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14595,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14569,
                                    "src": "8232:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14596,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "8253:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8232:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8205:70:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14599,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8204:72:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8155:121:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14603,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14601,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14569,
                                    "src": "8297:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8319:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "8297:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14606,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14604,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "8324:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14605,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14569,
                                    "src": "8350:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8324:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8297:71:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14609,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14567,
                                      "src": "8387:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14608,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "8372:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8372:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14612,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "8415:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14611,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "8400:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8400:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8372:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8297:132:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14616,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8296:134:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "8155:275:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14627,
                      "nodeType": "IfStatement",
                      "src": "8134:430:40",
                      "trueBody": {
                        "id": 14626,
                        "nodeType": "Block",
                        "src": "8445:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14618,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "8463:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14619,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14569,
                                "src": "8488:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8463:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14621,
                            "nodeType": "ExpressionStatement",
                            "src": "8463:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14622,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "8524:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14623,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14567,
                                "src": "8540:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "8524:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14625,
                            "nodeType": "ExpressionStatement",
                            "src": "8524:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14630,
                        "name": "nextEventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14317,
                        "src": "8611:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14631,
                        "name": "nextScheduleTimeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14320,
                        "src": "8626:22:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14629,
                      "name": "encodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24702,
                      "src": "8599:11:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                      }
                    },
                    "id": 14632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8599:50:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 14303,
                  "id": 14633,
                  "nodeType": "Return",
                  "src": "8592:57:40"
                }
              ]
            },
            "documentation": null,
            "id": 14635,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14300,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14299,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4601:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4592:23:40"
            },
            "parameters": {
              "id": 14298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14297,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14635,
                  "src": "4537:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14296,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4537:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4536:17:40"
            },
            "returnParameters": {
              "id": 14303,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14302,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14635,
                  "src": "4633:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14301,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4633:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4632:9:40"
            },
            "scope": 14636,
            "src": "4509:4147:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 14637,
        "src": "398:8260:40"
      }
    ],
    "src": "41:8618:40"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/CERTFRegistry.sol",
    "exportedSymbols": {
      "CERTFRegistry": [
        14636
      ]
    },
    "id": 14637,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14033,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:40"
      },
      {
        "id": 14034,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:40"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/CERTF/ICERTFEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/CERTF/ICERTFEngine.sol",
        "id": 14035,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 32424,
        "src": "101:72:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol",
        "file": "../Base/SharedTypes.sol",
        "id": 14036,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 7865,
        "src": "175:33:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/BaseRegistry.sol",
        "file": "../Base/AssetRegistry/BaseRegistry.sol",
        "id": 14037,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 4422,
        "src": "209:48:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/CERTFEncoder.sol",
        "file": "./CERTFEncoder.sol",
        "id": 14038,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 14032,
        "src": "258:28:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CERTF/ICERTFRegistry.sol",
        "file": "./ICERTFRegistry.sol",
        "id": 14039,
        "nodeType": "ImportDirective",
        "scope": 14637,
        "sourceUnit": 14679,
        "src": "287:30:40",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14041,
              "name": "BaseRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4421,
              "src": "424:12:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseRegistry_$4421",
                "typeString": "contract BaseRegistry"
              }
            },
            "id": 14042,
            "nodeType": "InheritanceSpecifier",
            "src": "424:12:40"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14043,
              "name": "ICERTFRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14678,
              "src": "438:14:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICERTFRegistry_$14678",
                "typeString": "contract ICERTFRegistry"
              }
            },
            "id": 14044,
            "nodeType": "InheritanceSpecifier",
            "src": "438:14:40"
          }
        ],
        "contractDependencies": [
          4083,
          4125,
          4421,
          4478,
          4500,
          4539,
          4579,
          4826,
          4924,
          5716,
          5776,
          6817,
          6894,
          6982,
          14678,
          24758,
          24885,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 14040,
          "nodeType": "StructuredDocumentation",
          "src": "320:77:40",
          "text": " @title CERTFRegistry\n @notice Registry for ACTUS Protocol assets"
        },
        "fullyImplemented": true,
        "id": 14636,
        "linearizedBaseContracts": [
          14636,
          14678,
          4500,
          4421,
          4539,
          4826,
          4579,
          5716,
          24885,
          24758,
          4924,
          6817,
          5776,
          6894,
          6982,
          4083,
          4125,
          4478,
          38485,
          38376
        ],
        "name": "CERTFRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 14047,
            "libraryName": {
              "contractScope": null,
              "id": 14045,
              "name": "CERTFEncoder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 14031,
              "src": "466:12:40",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_CERTFEncoder_$14031",
                "typeString": "library CERTFEncoder"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "460:29:40",
            "typeName": {
              "contractScope": null,
              "id": 14046,
              "name": "Asset",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4466,
              "src": "483:5:40",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                "typeString": "struct Asset"
              }
            }
          },
          {
            "body": {
              "id": 14052,
              "nodeType": "Block",
              "src": "556:2:40",
              "statements": []
            },
            "documentation": null,
            "id": 14053,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [],
                "id": 14050,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14049,
                  "name": "BaseRegistry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4421,
                  "src": "537:12:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseRegistry_$4421_$",
                    "typeString": "type(contract BaseRegistry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "537:14:40"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14048,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "511:2:40"
            },
            "returnParameters": {
              "id": 14051,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "556:0:40"
            },
            "scope": 14636,
            "src": "500:58:40",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              14663
            ],
            "body": {
              "id": 14094,
              "nodeType": "Block",
              "src": "1339:139:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14078,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14056,
                        "src": "1358:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14079,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14060,
                        "src": "1367:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14080,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14063,
                        "src": "1374:8:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14081,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14065,
                        "src": "1384:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14082,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14067,
                        "src": "1395:6:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14083,
                        "name": "actor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14069,
                        "src": "1403:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14084,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14071,
                        "src": "1410:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                          "typeString": "struct State calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 14077,
                      "name": "setAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4324,
                      "src": "1349:8:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_struct$_State_$22673_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_AssetOwnership_$7849_memory_ptr_$_t_address_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address)"
                      }
                    },
                    "id": 14085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1349:67:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14086,
                  "nodeType": "ExpressionStatement",
                  "src": "1349:67:40"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14091,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14058,
                        "src": "1465:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14087,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1426:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14089,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14088,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14056,
                          "src": "1433:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1426:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14090,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCERTFTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12664,
                      "src": "1426:38:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CERTFTerms_$22917_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CERTFTerms memory)"
                      }
                    },
                    "id": 14092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1426:45:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14093,
                  "nodeType": "ExpressionStatement",
                  "src": "1426:45:40"
                }
              ]
            },
            "documentation": {
              "id": 14054,
              "nodeType": "StructuredDocumentation",
              "src": "564:436:40",
              "text": " @notice\n @param assetId id of the asset\n @param terms asset specific terms (CERTFTerms)\n @param state initial state of the asset\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine ACTUS Engine of the asset\n @param actor account which is allowed to update the asset state\n @param admin account which as admin rights (optional)"
            },
            "functionSelector": "8c81ed92",
            "id": 14095,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 14075,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14074,
                  "name": "onlyApprovedActors",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4187,
                  "src": "1316:18:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1316:18:40"
              }
            ],
            "name": "registerAsset",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14073,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1299:8:40"
            },
            "parameters": {
              "id": 14072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14056,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1037:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14055,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1037:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14058,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1062:25:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14057,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "1062:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14060,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1097:20:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_calldata_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14059,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "1097:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14063,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1127:27:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14061,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1127:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 14062,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1127:9:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14065,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1164:33:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14064,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1164:14:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14067,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1207:14:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14066,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1207:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14069,
                  "mutability": "mutable",
                  "name": "actor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1231:13:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14068,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1231:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14071,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14095,
                  "src": "1254:13:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14070,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1254:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1027:246:40"
            },
            "returnParameters": {
              "id": 14076,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1339:0:40"
            },
            "scope": 14636,
            "src": "1005:473:40",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14670
            ],
            "body": {
              "id": 14110,
              "nodeType": "Block",
              "src": "1740:64:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14104,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "1757:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14106,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14105,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14098,
                          "src": "1764:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1757:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14107,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCERTFTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13415,
                      "src": "1757:38:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CERTFTerms_$22917_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CERTFTerms memory)"
                      }
                    },
                    "id": 14108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1757:40:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                      "typeString": "struct CERTFTerms memory"
                    }
                  },
                  "functionReturnParameters": 14103,
                  "id": 14109,
                  "nodeType": "Return",
                  "src": "1750:47:40"
                }
              ]
            },
            "documentation": {
              "id": 14096,
              "nodeType": "StructuredDocumentation",
              "src": "1484:129:40",
              "text": " @notice Returns the terms of an asset.\n @param assetId id of the asset\n @return terms of the asset"
            },
            "functionSelector": "6be39bda",
            "id": 14111,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14100,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1691:8:40"
            },
            "parameters": {
              "id": 14099,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14098,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14111,
                  "src": "1636:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14097,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1636:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1635:17:40"
            },
            "returnParameters": {
              "id": 14103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14102,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14111,
                  "src": "1717:17:40",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14101,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "1717:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1716:19:40"
            },
            "scope": 14636,
            "src": "1618:186:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              14677
            ],
            "body": {
              "id": 14134,
              "nodeType": "Block",
              "src": "2118:98:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14127,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14116,
                        "src": "2167:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                          "typeString": "struct CERTFTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14123,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2128:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14125,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14124,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14114,
                          "src": "2135:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2128:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14126,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeAndSetCERTFTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 12664,
                      "src": "2128:38:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Asset_$4466_storage_ptr_$_t_struct$_CERTFTerms_$22917_memory_ptr_$returns$__$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,struct CERTFTerms memory)"
                      }
                    },
                    "id": 14128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2128:45:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14129,
                  "nodeType": "ExpressionStatement",
                  "src": "2128:45:40"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14131,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14114,
                        "src": "2201:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14130,
                      "name": "UpdatedTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6902,
                      "src": "2188:12:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 14132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2188:21:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14133,
                  "nodeType": "EmitStatement",
                  "src": "2183:26:40"
                }
              ]
            },
            "documentation": {
              "id": 14112,
              "nodeType": "StructuredDocumentation",
              "src": "1810:172:40",
              "text": " @notice Set the terms of the asset\n @dev Can only be set by authorized account.\n @param assetId id of the asset\n @param terms new terms"
            },
            "functionSelector": "f7f729ad",
            "id": 14135,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14120,
                    "name": "assetId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14114,
                    "src": "2105:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 14121,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14119,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3921,
                  "src": "2091:12:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2091:22:40"
              }
            ],
            "name": "setTerms",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14118,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2074:8:40"
            },
            "parameters": {
              "id": 14117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14114,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14135,
                  "src": "2005:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14113,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2005:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14116,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14135,
                  "src": "2022:25:40",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CERTFTerms_$22917_calldata_ptr",
                    "typeString": "struct CERTFTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14115,
                    "name": "CERTFTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22917,
                    "src": "2022:10:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                      "typeString": "struct CERTFTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2004:44:40"
            },
            "returnParameters": {
              "id": 14122,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2118:0:40"
            },
            "scope": 14636,
            "src": "1987:229:40",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              6830,
              6911
            ],
            "body": {
              "id": 14154,
              "nodeType": "Block",
              "src": "2401:89:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14151,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14139,
                        "src": "2473:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14147,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2418:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14149,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14148,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14137,
                          "src": "2425:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2418:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14150,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetEnumValueForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13578,
                      "src": "2418:54:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint8_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint8)"
                      }
                    },
                    "id": 14152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2418:65:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "functionReturnParameters": 14146,
                  "id": 14153,
                  "nodeType": "Return",
                  "src": "2411:72:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ecef5577",
            "id": 14155,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getEnumValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14143,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14141,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2342:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14142,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2358:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2333:39:40"
            },
            "parameters": {
              "id": 14140,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14137,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14155,
                  "src": "2261:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14136,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2261:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14139,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14155,
                  "src": "2278:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14138,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2278:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2260:36:40"
            },
            "returnParameters": {
              "id": 14146,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14145,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14155,
                  "src": "2390:5:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 14144,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2390:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2389:7:40"
            },
            "scope": 14636,
            "src": "2222:268:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6839,
              6920
            ],
            "body": {
              "id": 14174,
              "nodeType": "Block",
              "src": "2680:95:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14171,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14159,
                        "src": "2758:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14167,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2697:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14169,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14168,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14157,
                          "src": "2704:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2697:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14170,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetAddressValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13642,
                      "src": "2697:60:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_address_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (address)"
                      }
                    },
                    "id": 14172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2697:71:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 14166,
                  "id": 14173,
                  "nodeType": "Return",
                  "src": "2690:78:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "eb012559",
            "id": 14175,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAddressValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14163,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14161,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2619:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14162,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2635:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2610:39:40"
            },
            "parameters": {
              "id": 14160,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14157,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14175,
                  "src": "2538:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14156,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2538:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14159,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14175,
                  "src": "2555:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14158,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2555:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2537:36:40"
            },
            "returnParameters": {
              "id": 14166,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14165,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14175,
                  "src": "2667:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14164,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2667:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2666:9:40"
            },
            "scope": 14636,
            "src": "2496:279:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6848,
              6929
            ],
            "body": {
              "id": 14194,
              "nodeType": "Block",
              "src": "2965:95:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14191,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14179,
                        "src": "3043:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14187,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "2982:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14189,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14188,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14177,
                          "src": "2989:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2982:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14190,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetBytes32ValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13657,
                      "src": "2982:60:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 14192,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2982:71:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 14186,
                  "id": 14193,
                  "nodeType": "Return",
                  "src": "2975:78:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "d51dc3dc",
            "id": 14195,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getBytes32ValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14183,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14181,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "2904:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14182,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "2920:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "2895:39:40"
            },
            "parameters": {
              "id": 14180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14177,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14195,
                  "src": "2823:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14176,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2823:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14179,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14195,
                  "src": "2840:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14178,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2840:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2822:36:40"
            },
            "returnParameters": {
              "id": 14186,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14185,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14195,
                  "src": "2952:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14184,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2952:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2951:9:40"
            },
            "scope": 14636,
            "src": "2781:279:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6857,
              6938
            ],
            "body": {
              "id": 14214,
              "nodeType": "Block",
              "src": "3247:92:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14211,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14199,
                        "src": "3322:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14207,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3264:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14209,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14208,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14197,
                          "src": "3271:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3264:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14210,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetUIntValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13675,
                      "src": "3264:57:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_uint256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (uint256)"
                      }
                    },
                    "id": 14212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3264:68:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 14206,
                  "id": 14213,
                  "nodeType": "Return",
                  "src": "3257:75:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "135b9f4d",
            "id": 14215,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getUIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14203,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14201,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3186:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14202,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3202:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3177:39:40"
            },
            "parameters": {
              "id": 14200,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14197,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14215,
                  "src": "3105:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14196,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3105:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14199,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14215,
                  "src": "3122:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14198,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3122:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3104:36:40"
            },
            "returnParameters": {
              "id": 14206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14205,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14215,
                  "src": "3234:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14204,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3234:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3233:9:40"
            },
            "scope": 14636,
            "src": "3066:273:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6866,
              6947
            ],
            "body": {
              "id": 14234,
              "nodeType": "Block",
              "src": "3524:91:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14231,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14219,
                        "src": "3598:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14227,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3541:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14229,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14228,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14217,
                          "src": "3548:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3541:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14230,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetIntValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13693,
                      "src": "3541:56:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_int256_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (int256)"
                      }
                    },
                    "id": 14232,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3541:67:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "functionReturnParameters": 14226,
                  "id": 14233,
                  "nodeType": "Return",
                  "src": "3534:74:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b461dd4f",
            "id": 14235,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getIntValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14223,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14221,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3464:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14222,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3480:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3455:39:40"
            },
            "parameters": {
              "id": 14220,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14217,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14235,
                  "src": "3383:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14216,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3383:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14219,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14235,
                  "src": "3400:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14218,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3400:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3382:36:40"
            },
            "returnParameters": {
              "id": 14226,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14225,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14235,
                  "src": "3512:6:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 14224,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3512:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3511:8:40"
            },
            "scope": 14636,
            "src": "3345:270:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6875,
              6956
            ],
            "body": {
              "id": 14254,
              "nodeType": "Block",
              "src": "3806:94:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14251,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14239,
                        "src": "3883:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14247,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "3823:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14249,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14248,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14237,
                          "src": "3830:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3823:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14250,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetPeriodValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13800,
                      "src": "3823:59:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IP memory)"
                      }
                    },
                    "id": 14252,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3823:70:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                      "typeString": "struct IP memory"
                    }
                  },
                  "functionReturnParameters": 14246,
                  "id": 14253,
                  "nodeType": "Return",
                  "src": "3816:77:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6fe55baa",
            "id": 14255,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPeriodValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14243,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14241,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "3743:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14242,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "3759:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "3734:39:40"
            },
            "parameters": {
              "id": 14240,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14237,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14255,
                  "src": "3662:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14236,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3662:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14239,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14255,
                  "src": "3679:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14238,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3679:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3661:36:40"
            },
            "returnParameters": {
              "id": 14246,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14245,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14255,
                  "src": "3791:9:40",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                    "typeString": "struct IP"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14244,
                    "name": "IP",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22493,
                    "src": "3791:2:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IP_$22493_storage_ptr",
                      "typeString": "struct IP"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3790:11:40"
            },
            "scope": 14636,
            "src": "3621:279:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6884,
              6965
            ],
            "body": {
              "id": 14274,
              "nodeType": "Block",
              "src": "4091:93:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14271,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14259,
                        "src": "4167:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14267,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4108:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14269,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14268,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14257,
                          "src": "4115:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4108:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14270,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCycleValueForForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13908,
                      "src": "4108:58:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_IPS_$22486_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct IPS memory)"
                      }
                    },
                    "id": 14272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4108:69:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                      "typeString": "struct IPS memory"
                    }
                  },
                  "functionReturnParameters": 14266,
                  "id": 14273,
                  "nodeType": "Return",
                  "src": "4101:76:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b0b4888f",
            "id": 14275,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCycleValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14263,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14261,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4027:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14262,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4043:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4018:39:40"
            },
            "parameters": {
              "id": 14260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14257,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14275,
                  "src": "3946:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14256,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3946:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14259,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14275,
                  "src": "3963:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14258,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3963:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3945:36:40"
            },
            "returnParameters": {
              "id": 14266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14265,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14275,
                  "src": "4075:10:40",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_IPS_$22486_memory_ptr",
                    "typeString": "struct IPS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14264,
                    "name": "IPS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22486,
                    "src": "4075:3:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_IPS_$22486_storage_ptr",
                      "typeString": "struct IPS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4074:12:40"
            },
            "scope": 14636,
            "src": "3906:278:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6893,
              6974
            ],
            "body": {
              "id": 14294,
              "nodeType": "Block",
              "src": "4401:102:40",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14291,
                        "name": "attribute",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14279,
                        "src": "4486:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 14287,
                          "name": "assets",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4477,
                          "src": "4418:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                            "typeString": "mapping(bytes32 => struct Asset storage ref)"
                          }
                        },
                        "id": 14289,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 14288,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14277,
                          "src": "4425:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4418:15:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage",
                          "typeString": "struct Asset storage ref"
                        }
                      },
                      "id": 14290,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetContractReferenceValueForCERTFAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14030,
                      "src": "4418:67:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$_t_bytes32_$returns$_t_struct$_ContractReference_$22632_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer,bytes32) view returns (struct ContractReference memory)"
                      }
                    },
                    "id": 14292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4418:78:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                      "typeString": "struct ContractReference memory"
                    }
                  },
                  "functionReturnParameters": 14286,
                  "id": 14293,
                  "nodeType": "Return",
                  "src": "4411:85:40"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "bc6a7d76",
            "id": 14295,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getContractReferenceValueForTermsAttribute",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14283,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14281,
                  "name": "ITermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6894,
                  "src": "4323:14:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ITermsRegistry_$6894",
                    "typeString": "contract ITermsRegistry"
                  }
                },
                {
                  "contractScope": null,
                  "id": 14282,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4339:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4314:39:40"
            },
            "parameters": {
              "id": 14280,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14277,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14295,
                  "src": "4242:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14276,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4242:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14279,
                  "mutability": "mutable",
                  "name": "attribute",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14295,
                  "src": "4259:17:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14278,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4259:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4241:36:40"
            },
            "returnParameters": {
              "id": 14286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14285,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14295,
                  "src": "4371:24:40",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ContractReference_$22632_memory_ptr",
                    "typeString": "struct ContractReference"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14284,
                    "name": "ContractReference",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22632,
                    "src": "4371:17:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ContractReference_$22632_storage_ptr",
                      "typeString": "struct ContractReference"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4370:26:40"
            },
            "scope": 14636,
            "src": "4190:313:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              6981
            ],
            "body": {
              "id": 14634,
              "nodeType": "Block",
              "src": "4646:4010:40",
              "statements": [
                {
                  "assignments": [
                    14305
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14305,
                      "mutability": "mutable",
                      "name": "asset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14634,
                      "src": "4656:19:40",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                        "typeString": "struct Asset"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14304,
                        "name": "Asset",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4466,
                        "src": "4656:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14309,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 14306,
                      "name": "assets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4477,
                      "src": "4678:6:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Asset_$4466_storage_$",
                        "typeString": "mapping(bytes32 => struct Asset storage ref)"
                      }
                    },
                    "id": 14308,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 14307,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14297,
                      "src": "4685:7:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4678:15:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Asset_$4466_storage",
                      "typeString": "struct Asset storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4656:37:40"
                },
                {
                  "assignments": [
                    14311
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14311,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14634,
                      "src": "4703:23:40",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                        "typeString": "struct CERTFTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14310,
                        "name": "CERTFTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22917,
                        "src": "4703:10:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CERTFTerms_$22917_storage_ptr",
                          "typeString": "struct CERTFTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14315,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 14312,
                        "name": "asset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14305,
                        "src": "4729:5:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                          "typeString": "struct Asset storage pointer"
                        }
                      },
                      "id": 14313,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "decodeAndGetCERTFTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 13415,
                      "src": "4729:28:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Asset_$4466_storage_ptr_$returns$_t_struct$_CERTFTerms_$22917_memory_ptr_$bound_to$_t_struct$_Asset_$4466_storage_ptr_$",
                        "typeString": "function (struct Asset storage pointer) view returns (struct CERTFTerms memory)"
                      }
                    },
                    "id": 14314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4729:30:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                      "typeString": "struct CERTFTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4703:56:40"
                },
                {
                  "assignments": [
                    14317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14317,
                      "mutability": "mutable",
                      "name": "nextEventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14634,
                      "src": "4770:23:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14316,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "4770:9:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14318,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4770:23:40"
                },
                {
                  "assignments": [
                    14320
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14320,
                      "mutability": "mutable",
                      "name": "nextScheduleTimeOffset",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14634,
                      "src": "4803:30:40",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14319,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4803:7:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14321,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4803:30:40"
                },
                {
                  "id": 14376,
                  "nodeType": "Block",
                  "src": "4859:682:40",
                  "statements": [
                    {
                      "assignments": [
                        14323,
                        14325
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14323,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14376,
                          "src": "4874:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14322,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "4874:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14325,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14376,
                          "src": "4895:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14324,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4895:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14343,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14332,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "5004:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14333,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "5027:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14334,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "5027:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14335,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "5027:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14338,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14336,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5072:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14337,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "CFD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5072:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5027:59:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14339,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5104:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "CFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5104:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14328,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "4950:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14329,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "4950:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14327,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "4937:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4937:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "4937:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4937:194:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14326,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "4925:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4925:207:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4873:259:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14344,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "5169:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5195:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5169:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14347,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5168:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14350,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14348,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14325,
                                  "src": "5218:18:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 14349,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "5239:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5218:43:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14351,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5217:45:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5168:94:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14353,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "5283:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 14354,
                                  "name": "scheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14325,
                                  "src": "5309:18:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5283:44:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14357,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14323,
                                      "src": "5346:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14356,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5331:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5331:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14360,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "5374:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14359,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "5359:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14361,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5359:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5331:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5283:105:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14364,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5282:107:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5168:221:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14375,
                      "nodeType": "IfStatement",
                      "src": "5147:376:40",
                      "trueBody": {
                        "id": 14374,
                        "nodeType": "Block",
                        "src": "5404:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14366,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "5422:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14367,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14325,
                                "src": "5447:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5422:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14369,
                            "nodeType": "ExpressionStatement",
                            "src": "5422:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14370,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "5483:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14371,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14323,
                                "src": "5499:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5483:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14373,
                            "nodeType": "ExpressionStatement",
                            "src": "5483:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 14439,
                  "nodeType": "Block",
                  "src": "5566:736:40",
                  "statements": [
                    {
                      "assignments": [
                        14378,
                        14380
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14378,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14439,
                          "src": "5581:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14377,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "5581:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14380,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14439,
                          "src": "5602:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14379,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5602:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14398,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14387,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "5711:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14388,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "5734:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14389,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "5734:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14390,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "5734:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14393,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14391,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "5779:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14392,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "CPD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5779:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5734:59:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14394,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5811:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "CPD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5811:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14383,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "5657:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14384,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "5657:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14382,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "5644:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5644:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "5644:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14396,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5644:194:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14381,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "5632:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14397,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5632:207:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5580:259:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14399,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "5876:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5902:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5876:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14402,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5875:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14403,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14380,
                                    "src": "5925:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14404,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5947:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "5925:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14408,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14406,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14380,
                                    "src": "5952:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14407,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "5973:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5952:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5925:70:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14410,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5924:72:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5875:121:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14412,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14380,
                                    "src": "6017:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6039:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6017:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14415,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "6044:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14416,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14380,
                                    "src": "6070:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6044:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6017:71:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14420,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14378,
                                      "src": "6107:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14419,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6092:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14421,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6092:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14423,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "6135:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14422,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6120:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14424,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6120:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6092:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6017:132:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14427,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6016:134:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5875:275:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14438,
                      "nodeType": "IfStatement",
                      "src": "5854:430:40",
                      "trueBody": {
                        "id": 14437,
                        "nodeType": "Block",
                        "src": "6165:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14429,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "6183:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14430,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14380,
                                "src": "6208:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6183:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14432,
                            "nodeType": "ExpressionStatement",
                            "src": "6183:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14433,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "6244:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14434,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14378,
                                "src": "6260:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6244:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14436,
                            "nodeType": "ExpressionStatement",
                            "src": "6244:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 14502,
                  "nodeType": "Block",
                  "src": "6327:736:40",
                  "statements": [
                    {
                      "assignments": [
                        14441,
                        14443
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14441,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14502,
                          "src": "6342:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14440,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "6342:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14443,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14502,
                          "src": "6363:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14442,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6363:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14461,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14450,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "6472:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14451,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "6495:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14452,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "6495:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14453,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "6495:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14456,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14454,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "6540:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "RFD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6540:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6495:59:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14457,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "6572:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6572:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14446,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "6418:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14447,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "6418:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14445,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "6405:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6405:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "6405:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6405:194:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14444,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "6393:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6393:207:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6341:259:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14491,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14462,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "6637:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14463,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6663:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6637:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14465,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6636:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14468,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14466,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14443,
                                    "src": "6686:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14467,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6708:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6686:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14469,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14443,
                                    "src": "6713:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14470,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "6734:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6713:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6686:70:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14473,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6685:72:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6636:121:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14481,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14475,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14443,
                                    "src": "6778:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14476,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6800:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "6778:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14480,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14478,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "6805:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14479,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14443,
                                    "src": "6831:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6805:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "6778:71:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14488,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14483,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14441,
                                      "src": "6868:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14482,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6853:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6853:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14486,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "6896:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14485,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "6881:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14487,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6881:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6853:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6778:132:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14490,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6777:134:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6636:275:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14501,
                      "nodeType": "IfStatement",
                      "src": "6615:430:40",
                      "trueBody": {
                        "id": 14500,
                        "nodeType": "Block",
                        "src": "6926:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14494,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14492,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "6944:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14493,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14443,
                                "src": "6969:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6944:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14495,
                            "nodeType": "ExpressionStatement",
                            "src": "6944:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14496,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "7005:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14497,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14441,
                                "src": "7021:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "7005:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14499,
                            "nodeType": "ExpressionStatement",
                            "src": "7005:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 14565,
                  "nodeType": "Block",
                  "src": "7088:736:40",
                  "statements": [
                    {
                      "assignments": [
                        14504,
                        14506
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14504,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14565,
                          "src": "7103:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14503,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "7103:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14506,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14565,
                          "src": "7124:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14505,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7124:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14524,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14513,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "7233:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14514,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "7256:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14515,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "7256:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14516,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "7256:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14519,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14517,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "7301:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "RPD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7301:13:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7256:59:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14520,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "7333:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RPD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "7333:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14509,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "7179:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14510,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "7179:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14508,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "7166:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7166:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "7166:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7166:194:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14507,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "7154:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7154:207:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7102:259:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14525,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "7398:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14526,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7424:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7398:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14528,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7397:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14529,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14506,
                                    "src": "7447:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14530,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7469:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7447:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14534,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14532,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14506,
                                    "src": "7474:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14533,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "7495:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7474:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7447:70:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14536,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7446:72:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7397:121:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14538,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14506,
                                    "src": "7539:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14539,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7561:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7539:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14543,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14541,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "7566:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14542,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14506,
                                    "src": "7592:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7566:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7539:71:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14546,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14504,
                                      "src": "7629:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14545,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7614:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14547,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7614:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14549,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "7657:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14548,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "7642:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7642:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7614:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7539:132:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14553,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7538:134:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7397:275:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14564,
                      "nodeType": "IfStatement",
                      "src": "7376:430:40",
                      "trueBody": {
                        "id": 14563,
                        "nodeType": "Block",
                        "src": "7687:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14555,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "7705:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14556,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14506,
                                "src": "7730:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7705:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14558,
                            "nodeType": "ExpressionStatement",
                            "src": "7705:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14559,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "7766:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14560,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14504,
                                "src": "7782:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "7766:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14562,
                            "nodeType": "ExpressionStatement",
                            "src": "7766:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "id": 14628,
                  "nodeType": "Block",
                  "src": "7848:734:40",
                  "statements": [
                    {
                      "assignments": [
                        14567,
                        14569
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 14567,
                          "mutability": "mutable",
                          "name": "eventType",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14628,
                          "src": "7863:19:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 14566,
                            "name": "EventType",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 22610,
                            "src": "7863:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 14569,
                          "mutability": "mutable",
                          "name": "scheduleTimeOffset",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 14628,
                          "src": "7884:26:40",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 14568,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7884:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 14587,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14576,
                                "name": "terms",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14311,
                                "src": "7993:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14577,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "8016:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14578,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "schedule",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4441,
                                    "src": "8016:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Schedule_$7864_storage",
                                      "typeString": "struct Schedule storage ref"
                                    }
                                  },
                                  "id": 14579,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lastScheduleTimeOfCyclicEvent",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7853,
                                  "src": "8016:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_enum$_EventType_$22610_$_t_uint256_$",
                                    "typeString": "mapping(enum EventType => uint256)"
                                  }
                                },
                                "id": 14582,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14580,
                                    "name": "EventType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22610,
                                    "src": "8061:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                      "typeString": "type(enum EventType)"
                                    }
                                  },
                                  "id": 14581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "XD",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8061:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_EventType_$22610",
                                    "typeString": "enum EventType"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8016:58:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14583,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "8092:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 14584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "XD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "8092:12:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_CERTFTerms_$22917_memory_ptr",
                                  "typeString": "struct CERTFTerms memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 14572,
                                      "name": "asset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14305,
                                      "src": "7939:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Asset_$4466_storage_ptr",
                                        "typeString": "struct Asset storage pointer"
                                      }
                                    },
                                    "id": 14573,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "engine",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4437,
                                    "src": "7939:12:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14571,
                                  "name": "ICERTFEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32423,
                                  "src": "7926:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ICERTFEngine_$32423_$",
                                    "typeString": "type(contract ICERTFEngine)"
                                  }
                                },
                                "id": 14574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7926:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ICERTFEngine_$32423",
                                  "typeString": "contract ICERTFEngine"
                                }
                              },
                              "id": 14575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "computeNextCyclicEvent",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32406,
                              "src": "7926:49:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_struct$_CERTFTerms_$22917_memory_ptr_$_t_uint256_$_t_enum$_EventType_$22610_$returns$_t_bytes32_$",
                                "typeString": "function (struct CERTFTerms memory,uint256,enum EventType) pure external returns (bytes32)"
                              }
                            },
                            "id": 14585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7926:192:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 14570,
                          "name": "decodeEvent",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24743,
                          "src": "7914:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                            "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                          }
                        },
                        "id": 14586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7914:205:40",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                          "typeString": "tuple(enum EventType,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7862:257:40"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 14600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 14588,
                                  "name": "nextScheduleTimeOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14320,
                                  "src": "8156:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 14589,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8182:1:40",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8156:27:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14591,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8155:29:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14592,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14569,
                                    "src": "8205:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14593,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8227:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "8205:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14595,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14569,
                                    "src": "8232:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14596,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "8253:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8232:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8205:70:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 14599,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "8204:72:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8155:121:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 14615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 14607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14603,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14601,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14569,
                                    "src": "8297:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 14602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8319:1:40",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "8297:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14606,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 14604,
                                    "name": "nextScheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14320,
                                    "src": "8324:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 14605,
                                    "name": "scheduleTimeOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14569,
                                    "src": "8350:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8324:44:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "8297:71:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14609,
                                      "name": "eventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14567,
                                      "src": "8387:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14608,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "8372:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8372:25:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 14612,
                                      "name": "nextEventType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14317,
                                      "src": "8415:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_EventType_$22610",
                                        "typeString": "enum EventType"
                                      }
                                    ],
                                    "id": 14611,
                                    "name": "getEpochOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24757,
                                    "src": "8400:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$returns$_t_uint256_$",
                                      "typeString": "function (enum EventType) pure returns (uint256)"
                                    }
                                  },
                                  "id": 14613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8400:29:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8372:57:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8297:132:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 14616,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8296:134:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "8155:275:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 14627,
                      "nodeType": "IfStatement",
                      "src": "8134:430:40",
                      "trueBody": {
                        "id": 14626,
                        "nodeType": "Block",
                        "src": "8445:119:40",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14618,
                                "name": "nextScheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14320,
                                "src": "8463:22:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14619,
                                "name": "scheduleTimeOffset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14569,
                                "src": "8488:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8463:43:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 14621,
                            "nodeType": "ExpressionStatement",
                            "src": "8463:43:40"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 14624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 14622,
                                "name": "nextEventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14317,
                                "src": "8524:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 14623,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14567,
                                "src": "8540:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "8524:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "id": 14625,
                            "nodeType": "ExpressionStatement",
                            "src": "8524:25:40"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14630,
                        "name": "nextEventType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14317,
                        "src": "8611:13:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14631,
                        "name": "nextScheduleTimeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14320,
                        "src": "8626:22:40",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 14629,
                      "name": "encodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24702,
                      "src": "8599:11:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                      }
                    },
                    "id": 14632,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8599:50:40",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 14303,
                  "id": 14633,
                  "nodeType": "Return",
                  "src": "8592:57:40"
                }
              ]
            },
            "documentation": null,
            "id": 14635,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNextCyclicEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14300,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "contractScope": null,
                  "id": 14299,
                  "name": "TermsRegistry",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6982,
                  "src": "4601:13:40",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TermsRegistry_$6982",
                    "typeString": "contract TermsRegistry"
                  }
                }
              ],
              "src": "4592:23:40"
            },
            "parameters": {
              "id": 14298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14297,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14635,
                  "src": "4537:15:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14296,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4537:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4536:17:40"
            },
            "returnParameters": {
              "id": 14303,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14302,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14635,
                  "src": "4633:7:40",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14301,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4633:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4632:9:40"
            },
            "scope": 14636,
            "src": "4509:4147:40",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 14637,
        "src": "398:8260:40"
      }
    ],
    "src": "41:8618:40"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        }
      },
      "links": {
        "CERTFEncoder": "0xe38AeBA132ED798D0B3035b3E4955588df4cEfEA"
      },
      "address": "0x8f12a7B4d25f5d67f5f7d6B8E11067Fa3A40B806",
      "transactionHash": "0x08c14054bd781b203b0fa139e1938f8370072b9f67d8eab4605707203451b296"
    },
    "5": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        }
      },
      "links": {
        "CERTFEncoder": "0x169618EF13e186eF4871F5C19864b2472b155857"
      },
      "address": "0xDB533868716b5A3B461aC7CB835Dd71c88fda86E",
      "transactionHash": "0xcb0ad78cf70662ace038b43bc4cb094086cb05af870e044f141c6454ba675556"
    },
    "1994": {
      "events": {
        "0xace25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb47865": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "GrantedAccess",
          "type": "event"
        },
        "0x5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd89646": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "RegisteredAsset",
          "type": "event"
        },
        "0x42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "account",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "bytes4",
              "name": "methodSignature",
              "type": "bytes4"
            }
          ],
          "name": "RevokedAccess",
          "type": "event"
        },
        "0x6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a20": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevActor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newActor",
              "type": "address"
            }
          ],
          "name": "UpdatedActor",
          "type": "event"
        },
        "0x66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevBeneficiary",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newBeneficiary",
              "type": "address"
            }
          ],
          "name": "UpdatedBeneficiary",
          "type": "event"
        },
        "0xdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevEngine",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newEngine",
              "type": "address"
            }
          ],
          "name": "UpdatedEngine",
          "type": "event"
        },
        "0x0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedFinalizedState",
          "type": "event"
        },
        "0xa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e25": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "prevObligor",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newObligor",
              "type": "address"
            }
          ],
          "name": "UpdatedObligor",
          "type": "event"
        },
        "0xad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            }
          ],
          "name": "UpdatedState",
          "type": "event"
        },
        "0xb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            }
          ],
          "name": "UpdatedTerms",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        }
      },
      "links": {
        "CERTFEncoder": "0x54aF1553Ea0D564E1B45FFe3EB1Bca85F0703331"
      },
      "address": "0x77A94244ED2F9137ee2BB6A71D79C3188f86c3Cd",
      "transactionHash": "0xe1508fdc265ced33c8f0a3eef42dab3852c0161c5fd93877d707ba7f930e8861"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.975Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "approveActor(address)": {
        "details": "Can only be called by the owner of the contract.",
        "params": {
          "actor": "address of the actor"
        }
      },
      "getActor(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "address of the asset actor"
        }
      },
      "getEngine(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "address of the engine of the asset"
        }
      },
      "getEventAtIndex(bytes32,uint256)": {
        "params": {
          "assetId": "id of the asset",
          "index": "index of the event to return"
        },
        "returns": {
          "_0": "Event"
        }
      },
      "getFinalizedState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getNextScheduleIndex(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Index"
        }
      },
      "getNextScheduledEvent(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "event"
        }
      },
      "getOwnership(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "addresses of all owners of the asset"
        }
      },
      "getSchedule(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "the schedule"
        }
      },
      "getScheduleLength(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "Length of the schedule"
        }
      },
      "getState(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "state of the asset"
        }
      },
      "getTerms(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "terms of the asset"
        }
      },
      "grantAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to grant access to",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "hasAccess(bytes32,bytes4,address)": {
        "params": {
          "account": "address of the account for which to check access",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        },
        "returns": {
          "_0": "true if allowed access"
        }
      },
      "hasRootAccess(bytes32,address)": {
        "params": {
          "account": "address of the account for which to check root acccess",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if has root access"
        }
      },
      "isEventSettled(bytes32,bytes32)": {
        "params": {
          "_event": "event (encoded)",
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if event was settled"
        }
      },
      "isRegistered(bytes32)": {
        "params": {
          "assetId": "id of the asset"
        },
        "returns": {
          "_0": "true if asset exist"
        }
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "details": "Can only be set by authorized account.",
        "params": {
          "_event": "event (encoded) to be marked as settled",
          "assetId": "id of the asset"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "popNextScheduledEvent(bytes32)": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset"
        }
      },
      "registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)": {
        "params": {
          "actor": "account which is allowed to update the asset state",
          "admin": "account which as admin rights (optional)",
          "engine": "ACTUS Engine of the asset",
          "ownership": "ownership of the asset",
          "schedule": "schedule of the asset",
          "state": "initial state of the asset",
          "terms": "asset specific terms (CERTFTerms)"
        }
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "details": "Can only be called by an authorized account.",
        "params": {
          "account": "address of the account to revoke access for",
          "assetId": "id of the asset",
          "methodSignature": "function / method signature (4 byte keccak256 hash of the method selector)"
        }
      },
      "setActor(bytes32,address)": {
        "params": {
          "actor": "address of the Actor contract",
          "assetId": "id of the asset"
        }
      },
      "setCounterpartyBeneficiary(bytes32,address)": {
        "details": "Can only be updated by the current counterparty beneficiary or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCounterpartyBeneficiary": "address of the new beneficiary"
        }
      },
      "setCounterpartyObligor(bytes32,address)": {
        "details": "Can only be updated by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCounterpartyObligor": "address of the new counterparty obligor"
        }
      },
      "setCreatorBeneficiary(bytes32,address)": {
        "details": "Can only be updated by the current creator beneficiary or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCreatorBeneficiary": "address of the new beneficiary"
        }
      },
      "setCreatorObligor(bytes32,address)": {
        "details": "Can only be updated by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "newCreatorObligor": "address of the new creator obligor"
        }
      },
      "setEngine(bytes32,address)": {
        "details": "Can only be set by authorized account.",
        "params": {
          "assetId": "id of the asset",
          "engine": "new engine address"
        }
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "details": "Can only be updated by the assets actor or by an authorized account.",
        "params": {
          "assetId": "id of the asset",
          "state": "next state of the asset"
        }
      },
      "setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))": {
        "details": "Can only be set by authorized account.",
        "params": {
          "assetId": "id of the asset",
          "terms": "new terms"
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "CERTFRegistry",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "approveActor(address)": {
        "notice": "Approves the address of an actor contract e.g. for registering assets."
      },
      "getActor(bytes32)": {
        "notice": "Returns the address of the actor which is allowed to update the state of the asset."
      },
      "getEngine(bytes32)": {
        "notice": "Returns the address of a the ACTUS engine corresponding to the ContractType of an asset."
      },
      "getEpochOffset(uint8)": {
        "notice": "Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp"
      },
      "getEventAtIndex(bytes32,uint256)": {
        "notice": "Returns an event for a given position (index) in a schedule of a given asset."
      },
      "getFinalizedState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getNextScheduleIndex(bytes32)": {
        "notice": "Returns the index of the next event to be processed for a schedule of an asset."
      },
      "getNextScheduledEvent(bytes32)": {
        "notice": "Returns the next event to process."
      },
      "getNextUnderlyingEvent(bytes32)": {
        "notice": "If the underlying of the asset changes in performance to a covered performance, it returns the exerciseDate event."
      },
      "getOwnership(bytes32)": {
        "notice": "Retrieves the registered addresses of owners (creator, counterparty) of an asset."
      },
      "getSchedule(bytes32)": {
        "notice": "Convenience method for retrieving the entire schedule Not recommended to execute method on-chain (if schedule is too long the tx may run out of gas)"
      },
      "getScheduleLength(bytes32)": {
        "notice": "Returns the length of a schedule of a given asset."
      },
      "getState(bytes32)": {
        "notice": "Returns the state of an asset."
      },
      "getTerms(bytes32)": {
        "notice": "Returns the terms of an asset."
      },
      "grantAccess(bytes32,bytes4,address)": {
        "notice": "Grant access to an account to call a specific method on a specific asset."
      },
      "hasAccess(bytes32,bytes4,address)": {
        "notice": "Check whether an account is allowed to call a specific method on a specific asset."
      },
      "hasRootAccess(bytes32,address)": {
        "notice": "Check whether an account has root access for a specific asset."
      },
      "isEventSettled(bytes32,bytes32)": {
        "notice": "Returns true if an event of an assets schedule was settled"
      },
      "isRegistered(bytes32)": {
        "notice": "Returns if there is an asset registerd for a given assetId"
      },
      "markEventAsSettled(bytes32,bytes32,int256)": {
        "notice": "Mark an event as settled"
      },
      "popNextScheduledEvent(bytes32)": {
        "notice": "Increments the index of a schedule of an asset. (if max index is reached the index will be left unchanged)"
      },
      "registerAsset(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256),bytes32[],(address,address,address,address),address,address,address)": {
        "notice": "@param assetId id of the asset"
      },
      "revokeAccess(bytes32,bytes4,address)": {
        "notice": "Revoke access for an account to call a specific method on a specific asset."
      },
      "setActor(bytes32,address)": {
        "notice": "Set the address of the Actor contract which should be going forward."
      },
      "setCounterpartyBeneficiary(bytes32,address)": {
        "notice": "Updates the address of the default beneficiary of cashflows going to the counterparty."
      },
      "setCounterpartyObligor(bytes32,address)": {
        "notice": "Update the address of the counterparty which has to fulfill obligations for the counterparty of the asset."
      },
      "setCreatorBeneficiary(bytes32,address)": {
        "notice": "Update the address of the default beneficiary of cashflows going to the creator."
      },
      "setCreatorObligor(bytes32,address)": {
        "notice": "Update the address of the obligor which has to fulfill obligations for the creator of the asset."
      },
      "setEngine(bytes32,address)": {
        "notice": "Set the engine address which should be used for the asset going forward."
      },
      "setFinalizedState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next finalized state of an asset."
      },
      "setState(bytes32,(uint8,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256))": {
        "notice": "Sets next state of an asset."
      },
      "setTerms(bytes32,(uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)))": {
        "notice": "Set the terms of the asset"
      }
    },
    "notice": "Registry for ACTUS Protocol assets",
    "version": 1
  }
}