{
  "contractName": "PAMActor",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "assetRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IDataRegistry",
          "name": "dataRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum ContractType",
          "name": "contractType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "counterparty",
          "type": "address"
        }
      ],
      "name": "InitializedAsset",
      "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": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "payoff",
          "type": "int256"
        }
      ],
      "name": "ProgressedAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "statusMessage",
          "type": "bytes32"
        }
      ],
      "name": "Status",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "assetRegistry",
      "outputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dataRegistry",
      "outputs": [
        {
          "internalType": "contract IDataRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "object",
          "type": "bytes32"
        }
      ],
      "name": "decodeCollateralObject",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "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": "address",
          "name": "collateralToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "collateralAmount",
          "type": "uint256"
        }
      ],
      "name": "encodeCollateralAsObject",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "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": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "progress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "progressWith",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftCalcTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftEventTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "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 ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "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": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "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": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "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": "cycleOfRateReset",
              "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": "cycleOfScalingIndex",
              "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": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "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": "admin",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"assetRegistry\",\"type\":\"address\"},{\"internalType\":\"contract IDataRegistry\",\"name\":\"dataRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum ContractType\",\"name\":\"contractType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"counterparty\",\"type\":\"address\"}],\"name\":\"InitializedAsset\",\"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\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"payoff\",\"type\":\"int256\"}],\"name\":\"ProgressedAsset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"statusMessage\",\"type\":\"bytes32\"}],\"name\":\"Status\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"assetRegistry\",\"outputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dataRegistry\",\"outputs\":[{\"internalType\":\"contract IDataRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"}],\"name\":\"decodeCollateralObject\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"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\":\"address\",\"name\":\"collateralToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"}],\"name\":\"encodeCollateralAsObject\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"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 ScalingEffect\",\"name\":\"scalingEffect\",\"type\":\"uint8\"},{\"internalType\":\"enum PenaltyType\",\"name\":\"penaltyType\",\"type\":\"uint8\"},{\"internalType\":\"enum FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"marketObjectCodeRateReset\",\"type\":\"bytes32\"},{\"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\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"capitalizationEndDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfInterestPayment\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfRateReset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfScalingIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nominalInterestRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"accruedInterest\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateMultiplier\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"rateSpread\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"nextResetRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"penaltyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"premiumDiscountAtIED\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"lifeFloor\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodCap\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"periodFloor\",\"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\":\"enum S\",\"name\":\"s\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isSet\",\"type\":\"bool\"}],\"internalType\":\"struct IPS\",\"name\":\"cycleOfInterestPayment\",\"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\":\"cycleOfRateReset\",\"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\":\"cycleOfScalingIndex\",\"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\":\"cycleOfFee\",\"type\":\"tuple\"}],\"internalType\":\"struct PAMTerms\",\"name\":\"terms\",\"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\":\"admin\",\"type\":\"address\"}],\"name\":\"initialize\",\"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\":\"progress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"assetId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"progressWith\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftCalcTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftEventTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),bytes32[],(address,address,address,address),address,address)\":{\"params\":{\"admin\":\"address of the admin of the asset (optional)\",\"engine\":\"address of the ACTUS engine used for the spec. ContractType\",\"ownership\":\"ownership of the asset\",\"schedule\":\"schedule of the asset\",\"terms\":\"asset specific terms\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"progress(bytes32)\":{\"details\":\"Emits ProgressedAsset if the state of the asset was updated.\",\"params\":{\"assetId\":\"id of the asset\"}},\"progressWith(bytes32,bytes32)\":{\"details\":\"Emits ProgressedAsset if the state of the asset was updated.\",\"params\":{\"_event\":\"the unscheduled event\",\"assetId\":\"id of the asset\"}},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"PAMActor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"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\"},\"initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),bytes32[],(address,address,address,address),address,address)\":{\"notice\":\"Derives initial state of the asset terms and stores together with terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\"},\"progress(bytes32)\":{\"notice\":\"Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from either a prev. pending event, an event generated based on the current state of an underlying asset or the assets schedule.\"},\"progressWith(bytes32,bytes32)\":{\"notice\":\"Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from a provided (unscheduled) event Reverts if the provided event violates the order of events.\"},\"shiftCalcTime(uint256,uint8,uint8,uint256)\":{\"notice\":\"Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided.\"}},\"notice\":\"TODO\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMActor.sol\":\"PAMActor\"},\"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/AssetActor/BaseActor.sol\":{\"keccak256\":\"0x92a8ff9c2c11b86fec0bc0ca7969bdf7860bbc5c4724522f9c55f06dc82d1c56\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://636bf06c13797d2217fa00ac597d8f22772645300e62b88cbefa341055bc33a0\",\"dweb:/ipfs/QmfNTGqmdXWQb1uZBggzURfDR5fzMSGGJqEk8PEq5JCSQ7\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/IAssetActor.sol\":{\"keccak256\":\"0xe7607bac7335711a3aec25570695955cec318f24285291e1fda899389680ff92\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b26cc5b3081d8187958b3fc9b06aa6dfa46b5bea39f2c74f918a1e80263e4fc1\",\"dweb:/ipfs/QmSVLpWnLAjCMoThwi88ACGC8FnUMhiaw1zmnuDBGycTJH\"]},\"/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/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/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/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/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/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/DataRegistry/DataRegistryStorage.sol\":{\"keccak256\":\"0xb33c89925a9e7c267d96d1461fce5839c6cef7f0365bf62a507a839b9cd925e7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7ea1957775722da928f53d4263162ebb94ffb5148d6e75dd815a2906a62e1e46\",\"dweb:/ipfs/QmXTRFKAC24PR9pqfHW2W73jsHaFqXdjjahqPJjKpZSLRk\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol\":{\"keccak256\":\"0x303e7925666252d8394929acfd8d32013b2225b202bb2fb873a4b9a257d324db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://982d93073ffd66715b02953f989744ac3acc9556c9b41cf522914ec0e552b7b0\",\"dweb:/ipfs/QmdNoYVj3yQfkWGXNcueKmQgDs6kVyPvNzGduJvQscxAoR\"]},\"/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/PAM/IPAMRegistry.sol\":{\"keccak256\":\"0x6320f224fb4c17adec2801d55d3cf59fc02a6d321d6636b00fcc01e35a032b6a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e09fa73760ff5cb5add8784722d8f0c599fd5a2ee7e3a7487583799c868af3c6\",\"dweb:/ipfs/QmQUGXfsktqRud2XmrJ5UW2CHSbPq2TwTs6HsWqrdnVpNn\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMActor.sol\":{\"keccak256\":\"0xd30f667f98ff8aae06dbe92513ec49191159c0d41004d4d84fc59ce6ed563c4d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7d03476f454423bfd54cfa8440f3e01013db0ec15e275569a4919d61639dee7d\",\"dweb:/ipfs/QmV4VoB3WXPFK7CKMJMy73rcWpukhEfzuuiunyfWgqJKCA\"]},\"@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/Conventions/BusinessDayConventions.sol\":{\"keccak256\":\"0xb67309595d06a957324467896ed9ece5db6c064a40733528d2405593d083f358\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a77e96b548901c4ee87943de5a7093d178bffe1daa72b6e303ddc1fac93f5173\",\"dweb:/ipfs/QmctKP5Hp7B4YtzzC5q3cRJJiiPS4a5US6vpHDb94paaFT\"]},\"@atpar/actus-solidity/contracts/Core/SignedMath.sol\":{\"keccak256\":\"0x179745be164f4540d848a50eeb8aea4ec3a0ddabc50f4c122c41ec0463e849c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e1088b178902de60c611c2dffd2c8943cc7b68988c9083936b760864775db7da\",\"dweb:/ipfs/QmV9XYTU6a8nPzoJv9FjRV4Z2rfbymGGARmzka57ydD1FG\"]},\"@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/Engines/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol\":{\"keccak256\":\"0xa33328cd3ebdafc5ecc46fb2dc6cacd94f2282e45092b4719c423cd9fa7ed02a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b2325d41367ace1e94ccf5d732440fa522899f23fe8b24f0d968b9f9e92d56d\",\"dweb:/ipfs/QmbPYatSMUZ3K8bnUKYYQtDkbg53Y6BNNFen8GJ6ZhVrfC\"]},\"@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\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620041f4380380620041f48339810160408190526200003491620000ce565b818160006200004b6001600160e01b03620000ca16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905550620001259050565b3390565b60008060408385031215620000e1578182fd5b8251620000ee816200010c565b602084015190925062000101816200010c565b809150509250929050565b6001600160a01b03811681146200012257600080fd5b50565b6140bf80620001356000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063811322fb11610097578063e05a66e011610066578063e05a66e0146101e0578063e726d680146101f3578063f2fde38b14610206578063f5586e0514610219576100f5565b8063811322fb146101a85780638da5cb5b146101bb578063979d7e86146101d0578063a39c1d6b146101d8576100f5565b80636b6ba664116100d35780636b6ba66414610159578063715018a61461016c57806372540003146101745780637aebd2a814610195576100f5565b80633f8ffc9c146100fa578063645a26bd1461010f5780636778e0e914610139575b600080fd5b61010d610108366004612add565b61022c565b005b61012261011d366004612956565b61046e565b6040516101309291906134a8565b60405180910390f35b61014c61014736600461290f565b610487565b60405161013091906134c1565b61010d610167366004612986565b6104b2565b61010d61075e565b610187610182366004612956565b6107dd565b60405161013092919061378c565b61010d6101a3366004612956565b610806565b61014c6101b63660046129c3565b610a64565b6101c3610a72565b6040516101309190613456565b6101c3610a81565b6101c3610a90565b61014c6101ee3660046129df565b610a9f565b61014c610201366004612f1e565b610abd565b61010d6102143660046128d7565b610c12565b61014c610227366004612f1e565b610cc8565b6001600160a01b038216158015906102bf57506000826001600160a01b031663cb2ef6f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561027a57600080fd5b505afa15801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906129a7565b60128111156102bd57fe5b145b6102e45760405162461bcd60e51b81526004016102db906137c6565b60405180910390fd5b600086426040516020016102f9929190613cb4565b60405160208183030381529060405280519060200120905061031961250a565b60405163263e1feb60e11b81526001600160a01b03851690634c7c3fd690610345908b90600401613ca5565b6102806040518083038186803b15801561035e57600080fd5b505afa158015610372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103969190612e21565b60015460405163d939943160e01b81529192506001600160a01b03169063d9399431906103d79085908c9086908d908d908d908d9030908e90600401613659565b600060405180830381600087803b1580156103f157600080fd5b505af1158015610405573d6000803e3d6000fd5b508492507fc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a91506000905061043d60208901896128d7565b61044d60608a0160408b016128d7565b60405161045c93929190613760565b60405180910390a25050505050505050565b606081901c6bffffffffffffffffffffffff8216915091565b6bffffffffffffffffffffffff19606083901b166bffffffffffffffffffffffff8216175b92915050565b60015460405163747be51f60e11b81526001600160a01b039091169063e8f7ca3e906104e490859033906004016134ca565b602060405180830381600087803b1580156104fe57600080fd5b505af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610536919061293a565b6105525760405162461bcd60e51b81526004016102db906139b6565b60015460405163f52f84e160e01b81526000916001600160a01b03169063f52f84e1906105839086906004016134c1565b60206040518083038186803b15801561059b57600080fd5b505afa1580156105af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d3919061296e565b146105f05760405162461bcd60e51b81526004016102db90613bc5565b600154604051631d7a1ab960e21b81526000916001600160a01b0316906375e86ae4906106219086906004016134c1565b60206040518083038186803b15801561063957600080fd5b505afa15801561064d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610671919061296e565b1461068e5760405162461bcd60e51b81526004016102db90613968565b60015460405163b828204160e01b8152600091610715916001600160a01b039091169063b8282041906106c59087906004016134c1565b60206040518083038186803b1580156106dd57600080fd5b505afa1580156106f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610182919061296e565b9150506000610723836107dd565b91505081158061073257508181105b61074e5760405162461bcd60e51b81526004016102db90613823565b6107588484610d3c565b50505050565b6107666112d3565b6000546001600160a01b039081169116146107935760405162461bcd60e51b81526004016102db90613af7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156107f157fe5b92505067ffffffffffffffff83169050915091565b600154604051631392c59160e11b81526001600160a01b03909116906327258b22906108369084906004016134c1565b60206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610886919061293a565b6108a25760405162461bcd60e51b81526004016102db90613a01565b600154604051630316dd6960e21b81526000916001600160a01b031690630c5b75a4906108d39085906004016134c1565b602060405180830381600087803b1580156108ed57600080fd5b505af1158015610901573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610925919061296e565b9050806109af57600154604051631d7a1ab960e21b81526001600160a01b03909116906375e86ae49061095c9085906004016134c1565b60206040518083038186803b15801561097457600080fd5b505afa158015610988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac919061296e565b90505b80610a39576001546040516361db73e160e11b81526001600160a01b039091169063c3b6e7c2906109e49085906004016134c1565b602060405180830381600087803b1580156109fe57600080fd5b505af1158015610a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a36919061296e565b90505b80610a565760405162461bcd60e51b81526004016102db906138d2565b610a608282610d3c565b5050565b600081601c8111156104ac57fe5b6000546001600160a01b031690565b6001546001600160a01b031681565b6002546001600160a01b031681565b60008160f884601c811115610ab057fe5b60ff16901b179392505050565b600081851415610ace575083610c0a565b6001846008811115610adc57fe5b1480610af357506003846008811115610af157fe5b145b15610b0957610b0285846112d7565b9050610c0a565b6002846008811115610b1757fe5b1480610b2e57506004846008811115610b2c57fe5b145b15610b72576000610b3f86856112d7565b9050610b4a86611333565b610b5382611333565b1415610b60579050610c0a565b610b6a868561134b565b915050610c0a565b6005846008811115610b8057fe5b1480610b9757506007846008811115610b9557fe5b145b15610ba657610b02858461134b565b6006846008811115610bb457fe5b1480610bcb57506008846008811115610bc957fe5b145b15610c07576000610bdc868561134b565b9050610be786611333565b610bf082611333565b1415610bfd579050610c0a565b610b6a86856112d7565b50835b949350505050565b610c1a6112d3565b6000546001600160a01b03908116911614610c475760405162461bcd60e51b81526004016102db90613af7565b6001600160a01b038116610c6d5760405162461bcd60e51b81526004016102db9061386e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006003846008811115610cd857fe5b1480610cef57506004846008811115610ced57fe5b145b80610d0557506007846008811115610d0357fe5b145b80610d1b57506008846008811115610d1957fe5b145b15610d27575083610c0a565b610d3385858585610abd565b95945050505050565b610d4461250a565b6001546040516309648a9d60e01b81526001600160a01b03909116906309648a9d90610d749086906004016134c1565b6102806040518083038186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190612e21565b9050600081516005811115610dd657fe5b1480610dee5750600181516005811115610dec57fe5b145b80610e055750600281516005811115610e0357fe5b145b610e215760405162461bcd60e51b81526004016102db90613c10565b600081516005811115610e3057fe5b14610eb957600154604051631ba316dd60e11b81526001600160a01b03909116906337462dba90610e659086906004016134c1565b6102806040518083038186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190612e21565b90505b600080610ec5846107dd565b60015460405163ecef557760e01b8152929450909250429161106f9184916001600160a01b039091169063ecef557790610f03908b906004016135b2565b60206040518083038186803b158015610f1b57600080fd5b505afa158015610f2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f539190612f65565b60ff166008811115610f6157fe5b60015460405163ecef557760e01b81526001600160a01b039091169063ecef557790610f91908c9060040161361a565b60206040518083038186803b158015610fa957600080fd5b505afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190612f65565b60ff166001811115610fef57fe5b60015460405163135b9f4d60e01b81526001600160a01b039091169063135b9f4d9061101f908d906004016135d9565b60206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610201919061296e565b111561108d5760405162461bcd60e51b81526004016102db90613b72565b61109561250a565b60006110a2878688611399565b9150915060006110b388888461161f565b9050806111b7576000865160058111156110c957fe5b14156111345760015460405163067fe5d760e41b81526001600160a01b03909116906367fe5d7090611101908b908a9060040161374b565b600060405180830381600087803b15801561111b57600080fd5b505af115801561112f573d6000803e3d6000fd5b505050505b60015460405163d981e77360e01b81526001600160a01b039091169063d981e77390611166908b908b906004016134e1565b600060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b5050505060006111a5600b86610a9f565b90506111b2898583611399565b509350505b600154604051631f61c37560e21b81526001600160a01b0390911690637d870dd4906111e9908b90879060040161374b565b600060405180830381600087803b15801561120357600080fd5b505af1158015611217573d6000803e3d6000fd5b505050508015156001141561128d5760015460405163de07a17360e01b81526001600160a01b039091169063de07a1739061125a908b908b9087906004016134ef565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505050505b877fd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e96001831515146112c057600b6112c2565b865b868560405161045c939291906137a4565b3390565b600060018260018111156112e757fe5b141561132c576112f683611a55565b6006141561131057611309836002611a68565b90506104ac565b61131983611a55565b6007141561132c57611309836001611a68565b5090919050565b6000611343620151808304611a7d565b509392505050565b6000600182600181111561135b57fe5b141561132c5761136a83611a55565b6006141561137d57611309836001611b13565b61138683611a55565b6007141561132c57611309836002611b13565b6113a161250a565b60015460405163ee43eda160e01b815260009182916001600160a01b039091169063ee43eda1906113d69089906004016134c1565b60206040518083038186803b1580156113ee57600080fd5b505afa158015611402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142691906128f3565b90506114306125a4565b6001546040516335f1cded60e11b81526001600160a01b0390911690636be39bda90611460908a906004016134c1565b6107806040518083038186803b15801561147957600080fd5b505afa15801561148d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b19190612b9b565b90506000806114bf876107dd565b915091506000846001600160a01b0316635ada17d8858b8b6114fa8f896114f58a8d608001518e602001518f6101e00151610cc8565b611b28565b6040518563ffffffff1660e01b81526004016115199493929190613cd1565b60206040518083038186803b15801561153157600080fd5b505afa158015611545573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611569919061296e565b9050846001600160a01b0316636942d1a8858b8b6115a08f8961159b8a8d608001518e602001518f6101e00151610cc8565b611d1f565b6040518563ffffffff1660e01b81526004016115bf9493929190613cd1565b6102806040518083038186803b1580156115d857600080fd5b505afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612e21565b9a909950975050505050505050565b6000831580159061162f57508215155b61164b5760405162461bcd60e51b81526004016102db90613a9a565b8161165857506001611a4e565b60015460405163eb01255960e01b81526000916001600160a01b03169063eb0125599061168990889060040161352a565b60206040518083038186803b1580156116a157600080fd5b505afa1580156116b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d991906128f3565b90506116e361271e565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611713908990600401613505565b60806040518083038186803b15801561172b57600080fd5b505afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117639190612a93565b905060048160600151600481111561177757fe5b141561178c5780516117889061046e565b5091505b611794612745565b60015460405163e50e0ef760e01b81526001600160a01b039091169063e50e0ef7906117c4908a906004016134c1565b60806040518083038186803b1580156117dc57600080fd5b505afa1580156117f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118149190612a2b565b90506000806000871315611843575060408201516001600160a01b03821661183e57826020015191505b61185c565b5081516001600160a01b03821661185c57826060015191505b600080881361186f578760001902611871565b875b905080866001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b81526004016118a292919061346a565b60206040518083038186803b1580156118ba57600080fd5b505afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f2919061296e565b108061197957506040516370a0823160e01b815281906001600160a01b038816906370a0823190611927908690600401613456565b60206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611977919061296e565b105b156119c357897f4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c6040516119ac906138b4565b60405180910390a260009650505050505050611a4e565b6040516323b872dd60e01b81526001600160a01b038716906323b872dd906119f390859087908690600401613484565b602060405180830381600087803b158015611a0d57600080fd5b505af1158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a45919061293a565b96505050505050505b9392505050565b6007620151809091046003010660010190565b6201518081028201828110156104ac57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611ad457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6201518081028203828111156104ac57600080fd5b60015460405163eb01255960e01b815260009182916001600160a01b039091169063eb01255990611b5d90889060040161352a565b60206040518083038186803b158015611b7557600080fd5b505afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128f3565b60015460405163eb01255960e01b81529192506000916001600160a01b039091169063eb01255990611be390899060040161358e565b60206040518083038186803b158015611bfb57600080fd5b505afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3391906128f3565b9050806001600160a01b0316826001600160a01b031614611d165760025460405160009182916001600160a01b03909116906308a4ec1090611c7b908790879060200161346a565b60405160208183030381529060405280519060200120886040518363ffffffff1660e01b8152600401611caf9291906134e1565b604080518083038186803b158015611cc657600080fd5b505afa158015611cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfe91906129fc565b915091508015611d1357509250611a4e915050565b50505b50509392505050565b6000600d83601c811115611d2f57fe5b1415611e4d5760025460015460405163354770f760e21b815260009283926001600160a01b03918216926308a4ec10929091169063d51dc3dc90611d77908b9060040161355f565b60206040518083038186803b158015611d8f57600080fd5b505afa158015611da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc7919061296e565b866040518363ffffffff1660e01b8152600401611de59291906134e1565b604080518083038186803b158015611dfc57600080fd5b505afa158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3491906129fc565b915091508015611e4657509050611a4e565b5050612444565b600b83601c811115611e5b57fe5b1415611e68575042611a4e565b601a83601c811115611e7657fe5b14156121a957611e8461271e565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611eb4908890600401613634565b60806040518083038186803b158015611ecc57600080fd5b505afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f049190612a93565b9050600381606001516004811115611f1857fe5b14156120495780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611f519085906004016134c1565b60206040518083038186803b158015611f6957600080fd5b505afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa1919061293a565b1515600114611fc25760405162461bcd60e51b81526004016102db90613913565b604051636a899b9b60e01b81526001600160a01b03821690636a899b9b90611fee9085906004016135f7565b60206040518083038186803b15801561200657600080fd5b505afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e919061296e565b9350611a4e92505050565b61205161271e565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690612081908990600401613505565b60806040518083038186803b15801561209957600080fd5b505afa1580156120ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d19190612a93565b90506002816040015160048111156120e557fe5b14801561210157506000816060015160048111156120ff57fe5b145b15611e46576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec109161213c918a906004016134e1565b604080518083038186803b15801561215357600080fd5b505afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b91906129fc565b9150915080156121a057509250611a4e915050565b50505050612444565b601783601c8111156121b757fe5b1415612444576121c561271e565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906121f5908890600401613634565b60806040518083038186803b15801561220d57600080fd5b505afa158015612221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122459190612a93565b905060028160400151600481111561225957fe5b148015612275575060008160600151600481111561227357fe5b145b1561243a576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec10916122b09189906004016134e1565b604080518083038186803b1580156122c757600080fd5b505afa1580156122db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ff91906129fc565b600254855160015460405163135b9f4d60e01b815294965092945060009384936001600160a01b03938416936308a4ec10939291169063135b9f4d90612349908f90600401613544565b60206040518083038186803b15801561236157600080fd5b505afa158015612375573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612399919061296e565b6040518363ffffffff1660e01b81526004016123b69291906134e1565b604080518083038186803b1580156123cd57600080fd5b505afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240591906129fc565b915091508280156124135750805b1561243557612428848363ffffffff61244e16565b9550611a4e945050505050565b505050505b5060009050611a4e565b5060009392505050565b60008161246d5760405162461bcd60e51b81526004016102db90613c61565b8261247a575060006104ac565b670de0b6b3a76400008381029084828161249057fe5b05146124ae5760405162461bcd60e51b81526004016102db90613b2c565b826000191480156124c25750600160ff1b84145b156124df5760405162461bcd60e51b81526004016102db90613b2c565b60008382816124ea57fe5b05905080610c0a5760405162461bcd60e51b81526004016102db90613a49565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161058081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000801916815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016126d861276c565b81526020016126e561276c565b81526020016126f261278f565b81526020016126ff61278f565b815260200161270c61278f565b815260200161271961278f565b905290565b60408051608081018252600080825260208201819052909182019081526020016000612719565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081019091526000808252602082019081526020016000612782565b80356104ac81613ffe565b80516104ac81613ffe565b80516104ac81614021565b80516104ac8161402e565b80516104ac8161403b565b80516104ac81614055565b80356104ac81614062565b80516104ac81614062565b80516104ac8161407c565b600060808284031215612824578081fd5b50919050565b60006080828403121561283b578081fd5b6128456080613f72565b90508151815260208201516128598161403b565b6020820152604082015161286c8161402e565b6040820152606082015161287f81614013565b606082015292915050565b60006060828403121561289b578081fd5b6128a56060613f72565b90508151815260208201516128b98161403b565b602082015260408201516128cc81614013565b604082015292915050565b6000602082840312156128e8578081fd5b8135611a4e81613ffe565b600060208284031215612904578081fd5b8151611a4e81613ffe565b60008060408385031215612921578081fd5b823561292c81613ffe565b946020939093013593505050565b60006020828403121561294b578081fd5b8151611a4e81614013565b600060208284031215612967578081fd5b5035919050565b60006020828403121561297f578081fd5b5051919050565b60008060408385031215612998578182fd5b50508035926020909101359150565b6000602082840312156129b8578081fd5b8151611a4e81614062565b6000602082840312156129d4578081fd5b8135611a4e8161406f565b600080604083850312156129f1578182fd5b823561292c8161406f565b60008060408385031215612a0e578182fd5b825191506020830151612a2081614013565b809150509250929050565b600060808284031215612a3c578081fd5b612a466080613f72565b8251612a5181613ffe565b81526020830151612a6181613ffe565b60208201526040830151612a7481613ffe565b60408201526060830151612a8781613ffe565b60608201529392505050565b600060808284031215612aa4578081fd5b612aae6080613f72565b82518152602083015160208201526040830151612aca81614048565b60408201526060830151612a8781614048565b600080600080600080868803610860811215612af7578283fd5b61078080821215612b06578384fd5b889750870135905067ffffffffffffffff80821115612b23578384fd5b8189018a601f820112612b34578485fd5b8035925081831115612b44578485fd5b8a60208085028301011115612b57578485fd5b6020019650909450612b6f9050886107a08901612813565b9250612b7f8861082089016127b0565b9150612b8f8861084089016127b0565b90509295509295509295565b60006107808284031215612bad578081fd5b610580612bb981613f72565b612bc385856127fd565b8152612bd285602086016127d1565b6020820152612be485604086016127e7565b6040820152612bf685606086016127dc565b6060820152612c0885608086016127c6565b6080820152612c1a8560a086016127d1565b60a0820152612c2c8560c08601612808565b60c0820152612c3e8560e08601612808565b60e0820152610100612c52868287016127d1565b90820152610120612c65868683016127bb565b90820152610140612c78868683016127bb565b90820152610160848101519082015261018080850151908201526101a080850151908201526101c080850151908201526101e08085015190820152610200808501519082015261022080850151908201526102408085015190820152610260808501519082015261028080850151908201526102a080850151908201526102c080850151908201526102e08085015190820152610300808501519082015261032080850151908201526103408085015190820152610360808501519082015261038080850151908201526103a080850151908201526103c080850151908201526103e08085015190820152610400808501519082015261042080850151908201526104408085015190820152610460808501519082015261048080850151908201526104a080850151908201526104c0612db48682870161288a565b90820152610520612dc78686830161288a565b6104e0830152612dd98684870161282a565b610500830152612ded86610600870161282a565b90820152612dff85610680860161282a565b610540820152612e1385610700860161282a565b610560820152949350505050565b6000610280808385031215612e34578182fd5b612e3d81613f72565b612e4785856127dc565b81526020848101519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c0808501519082015260e08085015190820152610100808501519082015261012080850151908201526101408085015190820152610160808501519082015261018080850151908201526101a080850151908201526101c080850151908201526101e080850151908201526102008085015190820152610220808501519082015261024080850151908201526102609384015193810193909352509092915050565b60008060008060808587031215612f33578182fd5b843593506020850135612f4581614021565b92506040850135612f558161402e565b9396929550929360600135925050565b600060208284031215612f76578081fd5b815160ff81168114611a4e578182fd5b6001600160a01b03169052565b60098110612f9d57fe5b9052565b612f9d81613fe7565b612f9d81613ff4565b600d8110612f9d57fe5b60138110612f9d57fe5b60048110612f9d57fe5b803582526020810135612fe38161403b565b612fec81613ff4565b60208301526040810135612fff8161402e565b61300881613fe7565b6040830152606081013561301b81614013565b8015156060840152505050565b80518252602081015161303a81613ff4565b6020830152604081015161304d81613fe7565b60408301526060908101511515910152565b8035825260208101356130718161403b565b61307a81613ff4565b6020830152604081013561308d81614013565b8015156040840152505050565b8051825260208101516130ac81613ff4565b60208301526040908101511515910152565b602081016130d5836130d083856127f2565b612fbd565b6130df8183613fb3565b6130ec6020850182612fa1565b50506130fb6040820182613fc0565b6131086040840182612fb3565b506131166060820182613fcd565b6131236060840182612faa565b506131316080820182613fa6565b61313e6080840182612f93565b5061314c60a0820182613fb3565b61315960a0840182612fa1565b5061316760c0820182613fda565b61317460c0840182612fc7565b5061318260e0820182613fda565b61318f60e0840182612fc7565b5061010061319f81830183613fb3565b6131ab82850182612fa1565b50506101206131bc81830183613f99565b6131c882850182612f86565b50506101406131d981830183613f99565b6131e582850182612f86565b5050610160818101359083015261018080820135908301526101a080820135908301526101c080820135908301526101e08082013590830152610200808201359083015261022080820135908301526102408082013590830152610260808201359083015261028080820135908301526102a080820135908301526102c080820135908301526102e08082013590830152610300808201359083015261032080820135908301526103408082013590830152610360808201359083015261038080820135908301526103a080820135908301526103c080820135908301526103e08082013590830152610400808201359083015261042080820135908301526104408082013590830152610460808201359083015261048080820135908301526104a080820135908301526104c061332181840182840161305f565b5061052061333381840182840161305f565b50610580613345818401828401612fd1565b50610600613357818401828401612fd1565b50610680613369818401828401612fd1565b5061070061337b818401828401612fd1565b505050565b61338b828251612faa565b6020818101519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e0808201519083015261020080820151908301526102208082015190830152610240808201519083015261026090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9081527231b7b73a3930b1ba2932b332b932b731b2af9960691b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b9081526869737375654461746560b81b602082015260400190565b9081527f6d61726b65744f626a656374436f646552617465526573657400000000000000602082015260400190565b90815271736574746c656d656e7443757272656e637960701b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b90815272636f6e74726163745265666572656e63655f3160681b602082015260400190565b6000610b208b835261366e602084018c6130be565b61367c6107a084018b613380565b610a2083018190528201879052610b406001600160fb1b0388111561369f578182fd5b60208802808a8386013783010190815285356136ba81613ffe565b6001600160a01b03908116610a408401526040870190806136de8360208b016127b0565b16610a6085015260608801816136f482856127b0565b16610a808601528161370960808b01836127b0565b16610aa0860152505050613721610ac0830186612f86565b61372f610ae0830185612f86565b61373d610b00830184612f86565b9a9950505050505050505050565b8281526102a08101611a4e6020830184613380565b606081016013851061376e57fe5b9381526001600160a01b039283166020820152911660409091015290565b60408101601d841061379a57fe5b9281526020015290565b60608101601d85106137b257fe5b938152602081019290925260409091015290565b60208082526038908201527f414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545960408201527f50455f4f465f454e47494e455f554e535550504f525445440000000000000000606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f454160408201526a149312515497d15591539560aa1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b71494e53554646494349454e545f46554e445360701b815260200190565b60208082526021908201527f426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e6040820152601560fa1b606082015260800190565b60208082526035908201527f426173654163746f722e67657445787465726e616c44617461466f725354463a604082015274081054d4d15517d113d154d7d393d517d1561254d5605a1b606082015260800190565b6020808252602e908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f554e60408201526d1111549316525391d7d15591539560921b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20554e415554484f5260408201526a24ad22a22fa9a2a72222a960a91b606082015260800190565b60208082526028908201527f426173654163746f722e70726f67726573733a2041535345545f444f45535f4e60408201526713d517d1561254d560c21b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252603b908201527f426173654163746f722e736574746c655061796f6666466f724576656e743a2060408201527f494e56414c49445f46554e4354494f4e5f504152414d45544552530000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526033908201527f414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e6040820152721517d393d517d6515517d4d0d2115115531151606a1b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f504560408201526a1391125391d7d15591539560aa1b606082015260800190565b60208082526031908201527f426173654163746f722e70726f636573734576656e743a2041535345545f524560408201527041434845445f46494e414c5f535441544560781b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b61078081016104ac82846130be565b6107a08101613cc382856130be565b826107808301529392505050565b6000610a4082019050613ce5828751612fbd565b6020860151613cf76020840182612fa1565b506040860151613d0a6040840182612fb3565b506060860151613d1d6060840182612faa565b506080860151613d306080840182612f93565b5060a0860151613d4360a0840182612fa1565b5060c0860151613d5660c0840182612fc7565b5060e0860151613d6960e0840182612fc7565b5061010080870151613d7d82850182612fa1565b505061012080870151613d9282850182612f86565b505061014080870151613da782850182612f86565b5050610160868101519083015261018080870151908301526101a080870151908301526101c080870151908301526101e08087015190830152610200808701519083015261022080870151908301526102408087015190830152610260808701519083015261028080870151908301526102a080870151908301526102c080870151908301526102e08087015190830152610300808701519083015261032080870151908301526103408087015190830152610360808701519083015261038080870151908301526103a080870151908301526103c080870151908301526103e08087015190830152610400808701519083015261042080870151908301526104408087015190830152610460808701519083015261048080870151908301526104a080870151908301526104c080870151613ee58285018261309a565b50506104e0860151610520613efc8185018361309a565b6105008801519150613f12610580850183613028565b8701519050613f25610600840182613028565b50610540860151613f3a610680840182613028565b50610560860151613f4f610700840182613028565b50613f5e610780830186613380565b610a00820193909352610a20015292915050565b60405181810167ffffffffffffffff81118282101715613f9157600080fd5b604052919050565b60008235611a4e81613ffe565b60008235611a4e81614021565b60008235611a4e8161402e565b60008235611a4e81614055565b60008235611a4e8161403b565b60008235611a4e8161407c565b60028110613ff157fe5b50565b60068110613ff157fe5b6001600160a01b0381168114613ff157600080fd5b8015158114613ff157600080fd5b60098110613ff157600080fd5b60028110613ff157600080fd5b60068110613ff157600080fd5b60058110613ff157600080fd5b600d8110613ff157600080fd5b60138110613ff157600080fd5b601d8110613ff157600080fd5b60048110613ff157600080fdfea26469706673582212204f23c41c0b2d8c0203035b89dd7f12b26937ea47676fae3b1ba7200c1e3daa1464736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063811322fb11610097578063e05a66e011610066578063e05a66e0146101e0578063e726d680146101f3578063f2fde38b14610206578063f5586e0514610219576100f5565b8063811322fb146101a85780638da5cb5b146101bb578063979d7e86146101d0578063a39c1d6b146101d8576100f5565b80636b6ba664116100d35780636b6ba66414610159578063715018a61461016c57806372540003146101745780637aebd2a814610195576100f5565b80633f8ffc9c146100fa578063645a26bd1461010f5780636778e0e914610139575b600080fd5b61010d610108366004612add565b61022c565b005b61012261011d366004612956565b61046e565b6040516101309291906134a8565b60405180910390f35b61014c61014736600461290f565b610487565b60405161013091906134c1565b61010d610167366004612986565b6104b2565b61010d61075e565b610187610182366004612956565b6107dd565b60405161013092919061378c565b61010d6101a3366004612956565b610806565b61014c6101b63660046129c3565b610a64565b6101c3610a72565b6040516101309190613456565b6101c3610a81565b6101c3610a90565b61014c6101ee3660046129df565b610a9f565b61014c610201366004612f1e565b610abd565b61010d6102143660046128d7565b610c12565b61014c610227366004612f1e565b610cc8565b6001600160a01b038216158015906102bf57506000826001600160a01b031663cb2ef6f76040518163ffffffff1660e01b815260040160206040518083038186803b15801561027a57600080fd5b505afa15801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906129a7565b60128111156102bd57fe5b145b6102e45760405162461bcd60e51b81526004016102db906137c6565b60405180910390fd5b600086426040516020016102f9929190613cb4565b60405160208183030381529060405280519060200120905061031961250a565b60405163263e1feb60e11b81526001600160a01b03851690634c7c3fd690610345908b90600401613ca5565b6102806040518083038186803b15801561035e57600080fd5b505afa158015610372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103969190612e21565b60015460405163d939943160e01b81529192506001600160a01b03169063d9399431906103d79085908c9086908d908d908d908d9030908e90600401613659565b600060405180830381600087803b1580156103f157600080fd5b505af1158015610405573d6000803e3d6000fd5b508492507fc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a91506000905061043d60208901896128d7565b61044d60608a0160408b016128d7565b60405161045c93929190613760565b60405180910390a25050505050505050565b606081901c6bffffffffffffffffffffffff8216915091565b6bffffffffffffffffffffffff19606083901b166bffffffffffffffffffffffff8216175b92915050565b60015460405163747be51f60e11b81526001600160a01b039091169063e8f7ca3e906104e490859033906004016134ca565b602060405180830381600087803b1580156104fe57600080fd5b505af1158015610512573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610536919061293a565b6105525760405162461bcd60e51b81526004016102db906139b6565b60015460405163f52f84e160e01b81526000916001600160a01b03169063f52f84e1906105839086906004016134c1565b60206040518083038186803b15801561059b57600080fd5b505afa1580156105af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d3919061296e565b146105f05760405162461bcd60e51b81526004016102db90613bc5565b600154604051631d7a1ab960e21b81526000916001600160a01b0316906375e86ae4906106219086906004016134c1565b60206040518083038186803b15801561063957600080fd5b505afa15801561064d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610671919061296e565b1461068e5760405162461bcd60e51b81526004016102db90613968565b60015460405163b828204160e01b8152600091610715916001600160a01b039091169063b8282041906106c59087906004016134c1565b60206040518083038186803b1580156106dd57600080fd5b505afa1580156106f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610182919061296e565b9150506000610723836107dd565b91505081158061073257508181105b61074e5760405162461bcd60e51b81526004016102db90613823565b6107588484610d3c565b50505050565b6107666112d3565b6000546001600160a01b039081169116146107935760405162461bcd60e51b81526004016102db90613af7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156107f157fe5b92505067ffffffffffffffff83169050915091565b600154604051631392c59160e11b81526001600160a01b03909116906327258b22906108369084906004016134c1565b60206040518083038186803b15801561084e57600080fd5b505afa158015610862573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610886919061293a565b6108a25760405162461bcd60e51b81526004016102db90613a01565b600154604051630316dd6960e21b81526000916001600160a01b031690630c5b75a4906108d39085906004016134c1565b602060405180830381600087803b1580156108ed57600080fd5b505af1158015610901573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610925919061296e565b9050806109af57600154604051631d7a1ab960e21b81526001600160a01b03909116906375e86ae49061095c9085906004016134c1565b60206040518083038186803b15801561097457600080fd5b505afa158015610988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ac919061296e565b90505b80610a39576001546040516361db73e160e11b81526001600160a01b039091169063c3b6e7c2906109e49085906004016134c1565b602060405180830381600087803b1580156109fe57600080fd5b505af1158015610a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a36919061296e565b90505b80610a565760405162461bcd60e51b81526004016102db906138d2565b610a608282610d3c565b5050565b600081601c8111156104ac57fe5b6000546001600160a01b031690565b6001546001600160a01b031681565b6002546001600160a01b031681565b60008160f884601c811115610ab057fe5b60ff16901b179392505050565b600081851415610ace575083610c0a565b6001846008811115610adc57fe5b1480610af357506003846008811115610af157fe5b145b15610b0957610b0285846112d7565b9050610c0a565b6002846008811115610b1757fe5b1480610b2e57506004846008811115610b2c57fe5b145b15610b72576000610b3f86856112d7565b9050610b4a86611333565b610b5382611333565b1415610b60579050610c0a565b610b6a868561134b565b915050610c0a565b6005846008811115610b8057fe5b1480610b9757506007846008811115610b9557fe5b145b15610ba657610b02858461134b565b6006846008811115610bb457fe5b1480610bcb57506008846008811115610bc957fe5b145b15610c07576000610bdc868561134b565b9050610be786611333565b610bf082611333565b1415610bfd579050610c0a565b610b6a86856112d7565b50835b949350505050565b610c1a6112d3565b6000546001600160a01b03908116911614610c475760405162461bcd60e51b81526004016102db90613af7565b6001600160a01b038116610c6d5760405162461bcd60e51b81526004016102db9061386e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006003846008811115610cd857fe5b1480610cef57506004846008811115610ced57fe5b145b80610d0557506007846008811115610d0357fe5b145b80610d1b57506008846008811115610d1957fe5b145b15610d27575083610c0a565b610d3385858585610abd565b95945050505050565b610d4461250a565b6001546040516309648a9d60e01b81526001600160a01b03909116906309648a9d90610d749086906004016134c1565b6102806040518083038186803b158015610d8d57600080fd5b505afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190612e21565b9050600081516005811115610dd657fe5b1480610dee5750600181516005811115610dec57fe5b145b80610e055750600281516005811115610e0357fe5b145b610e215760405162461bcd60e51b81526004016102db90613c10565b600081516005811115610e3057fe5b14610eb957600154604051631ba316dd60e11b81526001600160a01b03909116906337462dba90610e659086906004016134c1565b6102806040518083038186803b158015610e7e57600080fd5b505afa158015610e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb69190612e21565b90505b600080610ec5846107dd565b60015460405163ecef557760e01b8152929450909250429161106f9184916001600160a01b039091169063ecef557790610f03908b906004016135b2565b60206040518083038186803b158015610f1b57600080fd5b505afa158015610f2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f539190612f65565b60ff166008811115610f6157fe5b60015460405163ecef557760e01b81526001600160a01b039091169063ecef557790610f91908c9060040161361a565b60206040518083038186803b158015610fa957600080fd5b505afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190612f65565b60ff166001811115610fef57fe5b60015460405163135b9f4d60e01b81526001600160a01b039091169063135b9f4d9061101f908d906004016135d9565b60206040518083038186803b15801561103757600080fd5b505afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610201919061296e565b111561108d5760405162461bcd60e51b81526004016102db90613b72565b61109561250a565b60006110a2878688611399565b9150915060006110b388888461161f565b9050806111b7576000865160058111156110c957fe5b14156111345760015460405163067fe5d760e41b81526001600160a01b03909116906367fe5d7090611101908b908a9060040161374b565b600060405180830381600087803b15801561111b57600080fd5b505af115801561112f573d6000803e3d6000fd5b505050505b60015460405163d981e77360e01b81526001600160a01b039091169063d981e77390611166908b908b906004016134e1565b600060405180830381600087803b15801561118057600080fd5b505af1158015611194573d6000803e3d6000fd5b5050505060006111a5600b86610a9f565b90506111b2898583611399565b509350505b600154604051631f61c37560e21b81526001600160a01b0390911690637d870dd4906111e9908b90879060040161374b565b600060405180830381600087803b15801561120357600080fd5b505af1158015611217573d6000803e3d6000fd5b505050508015156001141561128d5760015460405163de07a17360e01b81526001600160a01b039091169063de07a1739061125a908b908b9087906004016134ef565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b505050505b877fd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e96001831515146112c057600b6112c2565b865b868560405161045c939291906137a4565b3390565b600060018260018111156112e757fe5b141561132c576112f683611a55565b6006141561131057611309836002611a68565b90506104ac565b61131983611a55565b6007141561132c57611309836001611a68565b5090919050565b6000611343620151808304611a7d565b509392505050565b6000600182600181111561135b57fe5b141561132c5761136a83611a55565b6006141561137d57611309836001611b13565b61138683611a55565b6007141561132c57611309836002611b13565b6113a161250a565b60015460405163ee43eda160e01b815260009182916001600160a01b039091169063ee43eda1906113d69089906004016134c1565b60206040518083038186803b1580156113ee57600080fd5b505afa158015611402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142691906128f3565b90506114306125a4565b6001546040516335f1cded60e11b81526001600160a01b0390911690636be39bda90611460908a906004016134c1565b6107806040518083038186803b15801561147957600080fd5b505afa15801561148d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b19190612b9b565b90506000806114bf876107dd565b915091506000846001600160a01b0316635ada17d8858b8b6114fa8f896114f58a8d608001518e602001518f6101e00151610cc8565b611b28565b6040518563ffffffff1660e01b81526004016115199493929190613cd1565b60206040518083038186803b15801561153157600080fd5b505afa158015611545573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611569919061296e565b9050846001600160a01b0316636942d1a8858b8b6115a08f8961159b8a8d608001518e602001518f6101e00151610cc8565b611d1f565b6040518563ffffffff1660e01b81526004016115bf9493929190613cd1565b6102806040518083038186803b1580156115d857600080fd5b505afa1580156115ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116109190612e21565b9a909950975050505050505050565b6000831580159061162f57508215155b61164b5760405162461bcd60e51b81526004016102db90613a9a565b8161165857506001611a4e565b60015460405163eb01255960e01b81526000916001600160a01b03169063eb0125599061168990889060040161352a565b60206040518083038186803b1580156116a157600080fd5b505afa1580156116b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d991906128f3565b90506116e361271e565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611713908990600401613505565b60806040518083038186803b15801561172b57600080fd5b505afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117639190612a93565b905060048160600151600481111561177757fe5b141561178c5780516117889061046e565b5091505b611794612745565b60015460405163e50e0ef760e01b81526001600160a01b039091169063e50e0ef7906117c4908a906004016134c1565b60806040518083038186803b1580156117dc57600080fd5b505afa1580156117f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118149190612a2b565b90506000806000871315611843575060408201516001600160a01b03821661183e57826020015191505b61185c565b5081516001600160a01b03821661185c57826060015191505b600080881361186f578760001902611871565b875b905080866001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b81526004016118a292919061346a565b60206040518083038186803b1580156118ba57600080fd5b505afa1580156118ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f2919061296e565b108061197957506040516370a0823160e01b815281906001600160a01b038816906370a0823190611927908690600401613456565b60206040518083038186803b15801561193f57600080fd5b505afa158015611953573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611977919061296e565b105b156119c357897f4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c6040516119ac906138b4565b60405180910390a260009650505050505050611a4e565b6040516323b872dd60e01b81526001600160a01b038716906323b872dd906119f390859087908690600401613484565b602060405180830381600087803b158015611a0d57600080fd5b505af1158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a45919061293a565b96505050505050505b9392505050565b6007620151809091046003010660010190565b6201518081028201828110156104ac57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611ad457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6201518081028203828111156104ac57600080fd5b60015460405163eb01255960e01b815260009182916001600160a01b039091169063eb01255990611b5d90889060040161352a565b60206040518083038186803b158015611b7557600080fd5b505afa158015611b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bad91906128f3565b60015460405163eb01255960e01b81529192506000916001600160a01b039091169063eb01255990611be390899060040161358e565b60206040518083038186803b158015611bfb57600080fd5b505afa158015611c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3391906128f3565b9050806001600160a01b0316826001600160a01b031614611d165760025460405160009182916001600160a01b03909116906308a4ec1090611c7b908790879060200161346a565b60405160208183030381529060405280519060200120886040518363ffffffff1660e01b8152600401611caf9291906134e1565b604080518083038186803b158015611cc657600080fd5b505afa158015611cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfe91906129fc565b915091508015611d1357509250611a4e915050565b50505b50509392505050565b6000600d83601c811115611d2f57fe5b1415611e4d5760025460015460405163354770f760e21b815260009283926001600160a01b03918216926308a4ec10929091169063d51dc3dc90611d77908b9060040161355f565b60206040518083038186803b158015611d8f57600080fd5b505afa158015611da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc7919061296e565b866040518363ffffffff1660e01b8152600401611de59291906134e1565b604080518083038186803b158015611dfc57600080fd5b505afa158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3491906129fc565b915091508015611e4657509050611a4e565b5050612444565b600b83601c811115611e5b57fe5b1415611e68575042611a4e565b601a83601c811115611e7657fe5b14156121a957611e8461271e565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611eb4908890600401613634565b60806040518083038186803b158015611ecc57600080fd5b505afa158015611ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f049190612a93565b9050600381606001516004811115611f1857fe5b14156120495780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611f519085906004016134c1565b60206040518083038186803b158015611f6957600080fd5b505afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa1919061293a565b1515600114611fc25760405162461bcd60e51b81526004016102db90613913565b604051636a899b9b60e01b81526001600160a01b03821690636a899b9b90611fee9085906004016135f7565b60206040518083038186803b15801561200657600080fd5b505afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e919061296e565b9350611a4e92505050565b61205161271e565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690612081908990600401613505565b60806040518083038186803b15801561209957600080fd5b505afa1580156120ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d19190612a93565b90506002816040015160048111156120e557fe5b14801561210157506000816060015160048111156120ff57fe5b145b15611e46576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec109161213c918a906004016134e1565b604080518083038186803b15801561215357600080fd5b505afa158015612167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218b91906129fc565b9150915080156121a057509250611a4e915050565b50505050612444565b601783601c8111156121b757fe5b1415612444576121c561271e565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906121f5908890600401613634565b60806040518083038186803b15801561220d57600080fd5b505afa158015612221573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122459190612a93565b905060028160400151600481111561225957fe5b148015612275575060008160600151600481111561227357fe5b145b1561243a576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec10916122b09189906004016134e1565b604080518083038186803b1580156122c757600080fd5b505afa1580156122db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ff91906129fc565b600254855160015460405163135b9f4d60e01b815294965092945060009384936001600160a01b03938416936308a4ec10939291169063135b9f4d90612349908f90600401613544565b60206040518083038186803b15801561236157600080fd5b505afa158015612375573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612399919061296e565b6040518363ffffffff1660e01b81526004016123b69291906134e1565b604080518083038186803b1580156123cd57600080fd5b505afa1580156123e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240591906129fc565b915091508280156124135750805b1561243557612428848363ffffffff61244e16565b9550611a4e945050505050565b505050505b5060009050611a4e565b5060009392505050565b60008161246d5760405162461bcd60e51b81526004016102db90613c61565b8261247a575060006104ac565b670de0b6b3a76400008381029084828161249057fe5b05146124ae5760405162461bcd60e51b81526004016102db90613b2c565b826000191480156124c25750600160ff1b84145b156124df5760405162461bcd60e51b81526004016102db90613b2c565b60008382816124ea57fe5b05905080610c0a5760405162461bcd60e51b81526004016102db90613a49565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161058081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000801916815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016126d861276c565b81526020016126e561276c565b81526020016126f261278f565b81526020016126ff61278f565b815260200161270c61278f565b815260200161271961278f565b905290565b60408051608081018252600080825260208201819052909182019081526020016000612719565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081019091526000808252602082019081526020016000612782565b80356104ac81613ffe565b80516104ac81613ffe565b80516104ac81614021565b80516104ac8161402e565b80516104ac8161403b565b80516104ac81614055565b80356104ac81614062565b80516104ac81614062565b80516104ac8161407c565b600060808284031215612824578081fd5b50919050565b60006080828403121561283b578081fd5b6128456080613f72565b90508151815260208201516128598161403b565b6020820152604082015161286c8161402e565b6040820152606082015161287f81614013565b606082015292915050565b60006060828403121561289b578081fd5b6128a56060613f72565b90508151815260208201516128b98161403b565b602082015260408201516128cc81614013565b604082015292915050565b6000602082840312156128e8578081fd5b8135611a4e81613ffe565b600060208284031215612904578081fd5b8151611a4e81613ffe565b60008060408385031215612921578081fd5b823561292c81613ffe565b946020939093013593505050565b60006020828403121561294b578081fd5b8151611a4e81614013565b600060208284031215612967578081fd5b5035919050565b60006020828403121561297f578081fd5b5051919050565b60008060408385031215612998578182fd5b50508035926020909101359150565b6000602082840312156129b8578081fd5b8151611a4e81614062565b6000602082840312156129d4578081fd5b8135611a4e8161406f565b600080604083850312156129f1578182fd5b823561292c8161406f565b60008060408385031215612a0e578182fd5b825191506020830151612a2081614013565b809150509250929050565b600060808284031215612a3c578081fd5b612a466080613f72565b8251612a5181613ffe565b81526020830151612a6181613ffe565b60208201526040830151612a7481613ffe565b60408201526060830151612a8781613ffe565b60608201529392505050565b600060808284031215612aa4578081fd5b612aae6080613f72565b82518152602083015160208201526040830151612aca81614048565b60408201526060830151612a8781614048565b600080600080600080868803610860811215612af7578283fd5b61078080821215612b06578384fd5b889750870135905067ffffffffffffffff80821115612b23578384fd5b8189018a601f820112612b34578485fd5b8035925081831115612b44578485fd5b8a60208085028301011115612b57578485fd5b6020019650909450612b6f9050886107a08901612813565b9250612b7f8861082089016127b0565b9150612b8f8861084089016127b0565b90509295509295509295565b60006107808284031215612bad578081fd5b610580612bb981613f72565b612bc385856127fd565b8152612bd285602086016127d1565b6020820152612be485604086016127e7565b6040820152612bf685606086016127dc565b6060820152612c0885608086016127c6565b6080820152612c1a8560a086016127d1565b60a0820152612c2c8560c08601612808565b60c0820152612c3e8560e08601612808565b60e0820152610100612c52868287016127d1565b90820152610120612c65868683016127bb565b90820152610140612c78868683016127bb565b90820152610160848101519082015261018080850151908201526101a080850151908201526101c080850151908201526101e08085015190820152610200808501519082015261022080850151908201526102408085015190820152610260808501519082015261028080850151908201526102a080850151908201526102c080850151908201526102e08085015190820152610300808501519082015261032080850151908201526103408085015190820152610360808501519082015261038080850151908201526103a080850151908201526103c080850151908201526103e08085015190820152610400808501519082015261042080850151908201526104408085015190820152610460808501519082015261048080850151908201526104a080850151908201526104c0612db48682870161288a565b90820152610520612dc78686830161288a565b6104e0830152612dd98684870161282a565b610500830152612ded86610600870161282a565b90820152612dff85610680860161282a565b610540820152612e1385610700860161282a565b610560820152949350505050565b6000610280808385031215612e34578182fd5b612e3d81613f72565b612e4785856127dc565b81526020848101519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c0808501519082015260e08085015190820152610100808501519082015261012080850151908201526101408085015190820152610160808501519082015261018080850151908201526101a080850151908201526101c080850151908201526101e080850151908201526102008085015190820152610220808501519082015261024080850151908201526102609384015193810193909352509092915050565b60008060008060808587031215612f33578182fd5b843593506020850135612f4581614021565b92506040850135612f558161402e565b9396929550929360600135925050565b600060208284031215612f76578081fd5b815160ff81168114611a4e578182fd5b6001600160a01b03169052565b60098110612f9d57fe5b9052565b612f9d81613fe7565b612f9d81613ff4565b600d8110612f9d57fe5b60138110612f9d57fe5b60048110612f9d57fe5b803582526020810135612fe38161403b565b612fec81613ff4565b60208301526040810135612fff8161402e565b61300881613fe7565b6040830152606081013561301b81614013565b8015156060840152505050565b80518252602081015161303a81613ff4565b6020830152604081015161304d81613fe7565b60408301526060908101511515910152565b8035825260208101356130718161403b565b61307a81613ff4565b6020830152604081013561308d81614013565b8015156040840152505050565b8051825260208101516130ac81613ff4565b60208301526040908101511515910152565b602081016130d5836130d083856127f2565b612fbd565b6130df8183613fb3565b6130ec6020850182612fa1565b50506130fb6040820182613fc0565b6131086040840182612fb3565b506131166060820182613fcd565b6131236060840182612faa565b506131316080820182613fa6565b61313e6080840182612f93565b5061314c60a0820182613fb3565b61315960a0840182612fa1565b5061316760c0820182613fda565b61317460c0840182612fc7565b5061318260e0820182613fda565b61318f60e0840182612fc7565b5061010061319f81830183613fb3565b6131ab82850182612fa1565b50506101206131bc81830183613f99565b6131c882850182612f86565b50506101406131d981830183613f99565b6131e582850182612f86565b5050610160818101359083015261018080820135908301526101a080820135908301526101c080820135908301526101e08082013590830152610200808201359083015261022080820135908301526102408082013590830152610260808201359083015261028080820135908301526102a080820135908301526102c080820135908301526102e08082013590830152610300808201359083015261032080820135908301526103408082013590830152610360808201359083015261038080820135908301526103a080820135908301526103c080820135908301526103e08082013590830152610400808201359083015261042080820135908301526104408082013590830152610460808201359083015261048080820135908301526104a080820135908301526104c061332181840182840161305f565b5061052061333381840182840161305f565b50610580613345818401828401612fd1565b50610600613357818401828401612fd1565b50610680613369818401828401612fd1565b5061070061337b818401828401612fd1565b505050565b61338b828251612faa565b6020818101519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e0808201519083015261020080820151908301526102208082015190830152610240808201519083015261026090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9081527231b7b73a3930b1ba2932b332b932b731b2af9960691b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b9081526869737375654461746560b81b602082015260400190565b9081527f6d61726b65744f626a656374436f646552617465526573657400000000000000602082015260400190565b90815271736574746c656d656e7443757272656e637960701b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b90815272636f6e74726163745265666572656e63655f3160681b602082015260400190565b6000610b208b835261366e602084018c6130be565b61367c6107a084018b613380565b610a2083018190528201879052610b406001600160fb1b0388111561369f578182fd5b60208802808a8386013783010190815285356136ba81613ffe565b6001600160a01b03908116610a408401526040870190806136de8360208b016127b0565b16610a6085015260608801816136f482856127b0565b16610a808601528161370960808b01836127b0565b16610aa0860152505050613721610ac0830186612f86565b61372f610ae0830185612f86565b61373d610b00830184612f86565b9a9950505050505050505050565b8281526102a08101611a4e6020830184613380565b606081016013851061376e57fe5b9381526001600160a01b039283166020820152911660409091015290565b60408101601d841061379a57fe5b9281526020015290565b60608101601d85106137b257fe5b938152602081019290925260409091015290565b60208082526038908201527f414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545960408201527f50455f4f465f454e47494e455f554e535550504f525445440000000000000000606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f454160408201526a149312515497d15591539560aa1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b71494e53554646494349454e545f46554e445360701b815260200190565b60208082526021908201527f426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e6040820152601560fa1b606082015260800190565b60208082526035908201527f426173654163746f722e67657445787465726e616c44617461466f725354463a604082015274081054d4d15517d113d154d7d393d517d1561254d5605a1b606082015260800190565b6020808252602e908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f554e60408201526d1111549316525391d7d15591539560921b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20554e415554484f5260408201526a24ad22a22fa9a2a72222a960a91b606082015260800190565b60208082526028908201527f426173654163746f722e70726f67726573733a2041535345545f444f45535f4e60408201526713d517d1561254d560c21b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252603b908201527f426173654163746f722e736574746c655061796f6666466f724576656e743a2060408201527f494e56414c49445f46554e4354494f4e5f504152414d45544552530000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526033908201527f414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e6040820152721517d393d517d6515517d4d0d2115115531151606a1b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f504560408201526a1391125391d7d15591539560aa1b606082015260800190565b60208082526031908201527f426173654163746f722e70726f636573734576656e743a2041535345545f524560408201527041434845445f46494e414c5f535441544560781b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b61078081016104ac82846130be565b6107a08101613cc382856130be565b826107808301529392505050565b6000610a4082019050613ce5828751612fbd565b6020860151613cf76020840182612fa1565b506040860151613d0a6040840182612fb3565b506060860151613d1d6060840182612faa565b506080860151613d306080840182612f93565b5060a0860151613d4360a0840182612fa1565b5060c0860151613d5660c0840182612fc7565b5060e0860151613d6960e0840182612fc7565b5061010080870151613d7d82850182612fa1565b505061012080870151613d9282850182612f86565b505061014080870151613da782850182612f86565b5050610160868101519083015261018080870151908301526101a080870151908301526101c080870151908301526101e08087015190830152610200808701519083015261022080870151908301526102408087015190830152610260808701519083015261028080870151908301526102a080870151908301526102c080870151908301526102e08087015190830152610300808701519083015261032080870151908301526103408087015190830152610360808701519083015261038080870151908301526103a080870151908301526103c080870151908301526103e08087015190830152610400808701519083015261042080870151908301526104408087015190830152610460808701519083015261048080870151908301526104a080870151908301526104c080870151613ee58285018261309a565b50506104e0860151610520613efc8185018361309a565b6105008801519150613f12610580850183613028565b8701519050613f25610600840182613028565b50610540860151613f3a610680840182613028565b50610560860151613f4f610700840182613028565b50613f5e610780830186613380565b610a00820193909352610a20015292915050565b60405181810167ffffffffffffffff81118282101715613f9157600080fd5b604052919050565b60008235611a4e81613ffe565b60008235611a4e81614021565b60008235611a4e8161402e565b60008235611a4e81614055565b60008235611a4e8161403b565b60008235611a4e8161407c565b60028110613ff157fe5b50565b60068110613ff157fe5b6001600160a01b0381168114613ff157600080fd5b8015158114613ff157600080fd5b60098110613ff157600080fd5b60028110613ff157600080fd5b60068110613ff157600080fd5b60058110613ff157600080fd5b600d8110613ff157600080fd5b60138110613ff157600080fd5b601d8110613ff157600080fd5b60048110613ff157600080fdfea26469706673582212204f23c41c0b2d8c0203035b89dd7f12b26937ea47676fae3b1ba7200c1e3daa1464736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "288:2860:43:-:0;;;326:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;429:13;444:12;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;-1:-1:-1;1902:13:4;:30;;-1:-1:-1;;;;;1902:30:4;;;-1:-1:-1;;;;;;1902:30:4;;;;;;;1942:12;:28;;;;;;;;;;;-1:-1:-1;288:2860:43;;-1:-1:-1;288:2860:43;768:104:115;855:10;768:104;:::o;377:489:-1:-;;;554:2;542:9;533:7;529:23;525:32;522:2;;;-1:-1;;560:12;522:2;112:6;106:13;124:56;174:5;124:56;:::i;:::-;746:2;818:22;;292:13;612:97;;-1:-1;310:55;292:13;310:55;:::i;:::-;754:96;;;;516:350;;;;;:::o;1340:163::-;-1:-1;;;;;1274:54;;1422:58;;1412:2;;1494:1;;1484:12;1412:2;1406:97;:::o;:::-;288:2860:43;;;;;;",
  "deployedSourceMap": "288:2860:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;954:1060;;;;;;:::i;:::-;;:::i;:::-;;425:248:22;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;159:260;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3805:1298:4:-;;;;;;:::i;:::-;;:::i;1689:145:116:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2421:929:4:-;;;;;;:::i;:::-;;:::i;956:145:82:-;;;;;;:::i;:::-;;:::i;1066:77:116:-;;;:::i;:::-;;;;;;;:::i;1696:35:4:-;;;:::i;1737:33::-;;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;1599:2214:75:-;;;;;;:::i;:::-;;:::i;1983:240:116:-;;;;;;:::i;:::-;;:::i;648:583:75:-;;;;;;:::i;:::-;;:::i;954:1060:43:-;-1:-1:-1;;;;;1192:20:43;;;;;;:74;;-1:-1:-1;1250:16:43;1224:6;-1:-1:-1;;;;;1216:28:43;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;;;;;;;;1192:74;1171:177;;;;-1:-1:-1;;;1171:177:43;;;;;;;:::i;:::-;;;;;;;;;1395:15;1434:5;1441:15;1423:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1413:45;;;;;;1395:63;;1519:25;;:::i;:::-;1547:45;;-1:-1:-1;;;1547:45:43;;-1:-1:-1;;;;;1547:38:43;;;;;:45;;1586:5;;1547:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1675:13;;1654:237;;-1:-1:-1;;;1654:237:43;;1519:73;;-1:-1:-1;;;;;;1675:13:43;;1654:50;;:237;;1718:7;;1739:5;;1519:73;;1784:8;;;;1806:9;;1829:6;;1857:4;;1876:5;;1654:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1924:7:43;;-1:-1:-1;1907:100:43;;-1:-1:-1;1933:16:43;;-1:-1:-1;1951:24:43;;;;:9;:24;:::i;:::-;1977:29;;;;;;;;:::i;:::-;1907:100;;;;;;;;:::i;:::-;;;;;;;;954:1060;;;;;;;;:::o;425:248:22:-;605:2;595:12;;;624:32;;;425:248;;;:::o;159:260::-;-1:-1:-1;;365:2:22;319:48;;;;378:33;;;319:93;159:260;;;;;:::o;3805:1298:4:-;3979:13;;:48;;-1:-1:-1;;;3979:48:4;;-1:-1:-1;;;;;3979:13:4;;;;:27;;:48;;4007:7;;4016:10;;3979:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3958:138;;;;-1:-1:-1;;;3958:138:4;;;;;;;:::i;:::-;4292:13;;:38;;-1:-1:-1;;;4292:38:4;;4342:1;;-1:-1:-1;;;;;4292:13:4;;:29;;:38;;4322:7;;4292:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;4271:142;;;;-1:-1:-1;;;4271:142:4;;;;;;;:::i;:::-;4444:13;;:45;;-1:-1:-1;;;4444:45:4;;4501:1;;-1:-1:-1;;;;;4444:13:4;;:36;;:45;;4481:7;;4444:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;4423:152;;;;-1:-1:-1;;;4423:152:4;;;;;;;:::i;:::-;4751:13;;:44;;-1:-1:-1;;;4751:44:4;;4701:34;;4739:57;;-1:-1:-1;;;;;4751:13:4;;;;:35;;:44;;4787:7;;4751:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4739:57::-;4698:98;;;4809:33;4846:19;4858:6;4846:11;:19::i;:::-;4806:59;-1:-1:-1;;4896:31:4;;;:91;;;4960:26;4932:25;:54;4896:91;4875:181;;;;-1:-1:-1;;;4875:181:4;;;;;;;:::i;:::-;5067:29;5080:7;5089:6;5067:12;:29::i;:::-;3805:1298;;;;:::o;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;2421:929:4:-;2575:13;;:35;;-1:-1:-1;;;2575:35:4;;-1:-1:-1;;;;;2575:13:4;;;;:26;;:35;;2602:7;;2575:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2554:122;;;;-1:-1:-1;;;2554:122:4;;;;;;;:::i;:::-;2915:13;;:38;;-1:-1:-1;;;2915:38:4;;2898:14;;-1:-1:-1;;;;;2915:13:4;;:29;;:38;;2945:7;;2915:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2898:55;-1:-1:-1;2967:20:4;2963:80;;2998:13;;:45;;-1:-1:-1;;;2998:45:4;;-1:-1:-1;;;;;2998:13:4;;;;:36;;:45;;3035:7;;2998:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2989:54;;2963:80;3057:20;3053:79;;3088:13;;:44;;-1:-1:-1;;;3088:44:4;;-1:-1:-1;;;;;3088:13:4;;;;:35;;:44;;3124:7;;3088:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3079:53;;3053:79;3224:20;3203:100;;;;-1:-1:-1;;;3203:100:4;;;;;;;:::i;:::-;3314:29;3327:7;3336:6;3314:12;:29::i;:::-;2421:929;;:::o;956:145:82:-;1046:7;1084:9;1076:18;;;;;;;1066:77:116;1104:7;1130:6;-1:-1:-1;;;;;1130:6:116;1066:77;:::o;1696:35:4:-;;;-1:-1:-1;;;;;1696:35:4;;:::o;1737:33::-;;;-1:-1:-1;;;;;1737:33:4;;:::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;1599:2214:75:-;1800:7;1890:12;1877:9;:25;1873:47;;;-1:-1:-1;1911:9:75;1904:16;;1873:47;2003:25;1989:10;:39;;;;;;;;;:82;;;-1:-1:-1;2046:25:75;2032:10;:39;;;;;;;;;1989:82;1985:1795;;;2094:60;2134:9;2145:8;2094:39;:60::i;:::-;2087:67;;;;1985:1795;2372:26;2358:10;:40;;;;;;;;;:84;;;-1:-1:-1;2416:26:75;2402:10;:40;;;;;;;;;2358:84;2354:1426;;;2458:34;2495:60;2535:9;2546:8;2495:39;:60::i;:::-;2458:97;;2641:47;2678:9;2641:36;:47::i;:::-;2573:64;2610:26;2573:36;:64::i;:::-;:115;2569:187;;;2715:26;-1:-1:-1;2708:33:75;;2569:187;2776:61;2817:9;2828:8;2776:40;:61::i;:::-;2769:68;;;;;2354:1426;2928:25;2914:10;:39;;;;;;;;;:82;;;-1:-1:-1;2971:25:75;2957:10;:39;;;;;;;;;2914:82;2910:870;;;3019:61;3060:9;3071:8;3019:40;:61::i;2910:870::-;3301:26;3287:10;:40;;;;;;;;;:84;;;-1:-1:-1;3345:26:75;3331:10;:40;;;;;;;;;3287:84;3283:497;;;3387:35;3425:61;3466:9;3477:8;3425:40;:61::i;:::-;3387:99;;3573:47;3610:9;3573:36;:47::i;:::-;3504:65;3541:27;3504:36;:65::i;:::-;:116;3500:189;;;3647:27;-1:-1:-1;3640:34:75;;3500:189;3709:60;3749:9;3760:8;3709:39;:60::i;3283:497::-;-1:-1:-1;3797:9:75;1599:2214;;;;;;;:::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;648:583:75:-;848:7;902:25;888:10;:39;;;;;;;;;:95;;;-1:-1:-1;957:26:75;943:10;:40;;;;;;;;;888:95;:150;;;-1:-1:-1;1013:25:75;999:10;:39;;;;;;;;;888:150;:206;;;-1:-1:-1;1068:26:75;1054:10;:40;;;;;;;;;888:206;871:275;;;-1:-1:-1;1126:9:75;1119:16;;871:275;1163:61;1178:9;1189:10;1201:8;1211:12;1163:14;:61::i;:::-;1156:68;648:583;-1:-1:-1;;;;;648:583:75:o;5173:3272:4:-;5247:18;;:::i;:::-;5268:13;;:31;;-1:-1:-1;;;5268:31:4;;-1:-1:-1;;;;;5268:13:4;;;;:22;;:31;;5291:7;;5268:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5247:52;-1:-1:-1;5447:22:4;5418:25;;:51;;;;;;;;;:118;;;-1:-1:-1;5514:22:4;5485:25;;:51;;;;;;;;;5418:118;:185;;;-1:-1:-1;5581:22:4;5552:25;;:51;;;;;;;;;5418:185;5397:281;;;;-1:-1:-1;;;5397:281:4;;;;;;;:::i;:::-;5780:22;5751:25;;:51;;;;;;;;;5747:130;;5826:13;;:40;;-1:-1:-1;;;5826:40:4;;-1:-1:-1;;;;;5826:13:4;;;;:31;;:40;;5858:7;;5826:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5818:48;;5747:130;5888:19;5909:20;5933:19;5945:6;5933:11;:19::i;:::-;6242:13;;:77;;-1:-1:-1;;;6242:77:4;;5887:65;;-1:-1:-1;5887:65:4;;-1:-1:-1;6516:15:4;;6158:354;;5887:65;;-1:-1:-1;;;;;6242:13:4;;;;:43;;:77;;6286:7;;6242:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6220:100;;;;;;;;;;6347:13;;:64;;-1:-1:-1;;;6347:64:4;;-1:-1:-1;;;;;6347:13:4;;;;:43;;:64;;6391:7;;6347:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6338:74;;;;;;;;;;6430:13;;:68;;-1:-1:-1;;;6430:68:4;;-1:-1:-1;;;;;6430:13:4;;;;:43;;:68;;6474:7;;6430:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6158:354::-;:373;;6097:511;;;;-1:-1:-1;;;6097:511:4;;;;;;;:::i;:::-;6756:22;;:::i;:::-;6780:13;6797:53;6827:7;6836:5;6843:6;6797:29;:53::i;:::-;6755:95;;;;6902:18;6923:45;6944:7;6953:6;6961;6923:20;:45::i;:::-;6902:66;-1:-1:-1;6983:22:4;6979:974;;7405:22;7376:25;;:51;;;;;;;;;7372:137;;;7447:13;;:47;;-1:-1:-1;;;7447:47:4;;-1:-1:-1;;;;;7447:13:4;;;;:31;;:47;;7479:7;;7488:5;;7447:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7372:137;7589:13;;:47;;-1:-1:-1;;;7589:47:4;;-1:-1:-1;;;;;7589:13:4;;;;:30;;:47;;7620:7;;7629:6;;7589:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7685:15;7703:39;7715:12;7729;7703:11;:39::i;:::-;7685:57;;7884:58;7914:7;7923:9;7934:7;7884:29;:58::i;:::-;-1:-1:-1;7868:74:4;-1:-1:-1;;6979:974:4;8000:13;;:42;;-1:-1:-1;;;8000:42:4;;-1:-1:-1;;;;;8000:13:4;;;;:22;;:42;;8023:7;;8032:9;;8000:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;8090:21:4;;;8107:4;8090:21;8086:109;;;8127:13;;:57;;-1:-1:-1;;;8127:57:4;;-1:-1:-1;;;;;8127:13:4;;;;:32;;:57;;8160:7;;8169:6;;8177;;8127:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8086:109;8239:7;8210:228;8350:4;8333:21;;;;8332:50;;8370:12;8332:50;;;8358:9;8332:50;8396:12;8422:6;8210:228;;;;;;;;:::i;768:104:115:-;855:10;768:104;:::o;3980:550:75:-;4114:7;4153:11;4141:8;:23;;;;;;;;;4137:361;;;4184:51;4225:9;4184:40;:51::i;:::-;4239:1;4184:56;4180:308;;;4267:49;4303:9;4314:1;4267:35;:49::i;:::-;4260:56;;;;4180:308;4341:51;4382:9;4341:40;:51::i;:::-;4396:1;4341:56;4337:151;;;4424:49;4460:9;4471:1;4424:35;:49::i;4337:151::-;-1:-1:-1;4514:9:75;;3980:550;-1:-1:-1;3980:550:75:o;7219:138:106:-;7276:10;7310:40;1020:12;7322:9;:27;7310:11;:40::i;:::-;-1:-1:-1;7298:52:106;7219:138;-1:-1:-1;;;7219:138:106:o;4694:551:75:-;4829:7;4868:11;4856:8;:23;;;;;;;;;4852:361;;;4899:51;4940:9;4899:40;:51::i;:::-;4954:1;4899:56;4895:308;;;4982:49;5018:9;5029:1;4982:35;:49::i;4895:308::-;5056:51;5097:9;5056:40;:51::i;:::-;5111:1;5056:56;5052:151;;;5139:49;5175:9;5186:1;5139:35;:49::i;2020:1126:43:-;2176:12;;:::i;:::-;2229:13;;:32;;-1:-1:-1;;;2229:32:43;;2190:6;;;;-1:-1:-1;;;;;2229:13:43;;;;:23;;:32;;2253:7;;2229:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2212:49;;2271:21;;:::i;:::-;2316:13;;2295:54;;-1:-1:-1;;;2295:54:43;;-1:-1:-1;;;;;2316:13:43;;;;2295:45;;:54;;2341:7;;2295:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2271:78;;2360:19;2381:20;2405:19;2417:6;2405:11;:19::i;:::-;2359:65;;;;2435:13;2462:6;-1:-1:-1;;;;;2451:40:43;;2505:5;2524;2543:6;2563:197;2602:7;2627:9;2654:92;2668:12;2682:5;:27;;;2711:5;:14;;;2727:5;:18;;;2654:13;:92::i;:::-;2563:21;:197::i;:::-;2451:319;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2435:335;;2799:6;-1:-1:-1;;;;;2788:39:43;;2841:5;2860;2879:6;2899:197;2938:7;2963:9;2990:92;3004:12;3018:5;:27;;;3047:5;:14;;;3063:5;:18;;;2990:13;:92::i;:::-;2899:21;:197::i;:::-;2788:318;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2780:326;3132:6;;-1:-1:-1;2020:1126:43;-1:-1:-1;;;;;;;;2020:1126:43:o;8839:2407:4:-;8981:4;9022:21;;;;;:45;;-1:-1:-1;9047:20:4;;;9022:45;9001:151;;;;-1:-1:-1;;;9001:151:4;;;;;;;:::i;:::-;9211:11;9207:28;;-1:-1:-1;9231:4:4;9224:11;;9207:28;9364:13;;:67;;-1:-1:-1;;;9364:67:4;;9348:13;;-1:-1:-1;;;;;9364:13:4;;:46;;:67;;9411:7;;9364:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9348:83;;9441:44;;:::i;:::-;9488:13;;:122;;-1:-1:-1;;;9488:122:4;;-1:-1:-1;;;;;9488:13:4;;;;:56;;:122;;9558:7;;9488:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9441:169;-1:-1:-1;9652:26:4;9624:19;:24;;;:54;;;;;;;;;9620:147;;;9729:26;;9706:50;;:22;:50::i;:::-;-1:-1:-1;9694:62:4;-1:-1:-1;9620:147:4;9777:31;;:::i;:::-;9811:13;;:35;;-1:-1:-1;;;9811:35:4;;-1:-1:-1;;;;;9811:13:4;;;;:26;;:35;;9838:7;;9811:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9777:69;;9948:13;9971;10007:1;9998:6;:10;9994:674;;;-1:-1:-1;10096:29:4;;;;-1:-1:-1;;;;;10236:19:4;;10232:94;;10283:9;:28;;;10275:36;;10232:94;9994:674;;;-1:-1:-1;10428:24:4;;-1:-1:-1;;;;;10563:19:4;;10559:99;;10610:9;:33;;;10602:41;;10559:99;10727:14;10754:1;10745:6;:10;10744:53;;10785:6;-1:-1:-1;;10785:11:4;10744:53;;;10767:6;10744:53;10727:70;;10970:6;10929:5;-1:-1:-1;;;;;10922:23:4;;10946:5;10961:4;10922:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;:97;;;-1:-1:-1;10980:30:4;;-1:-1:-1;;;10980:30:4;;11013:6;;-1:-1:-1;;;;;10980:23:4;;;;;:30;;11004:5;;10980:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:39;10922:97;10918:196;;;11047:7;11040:37;;;;;;:::i;:::-;;;;;;;;11098:5;11091:12;;;;;;;;;;10918:196;11191:48;;-1:-1:-1;;;11191:48:4;;-1:-1:-1;;;;;11191:26:4;;;;;:48;;11218:5;;11225;;11232:6;;11191:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11184:55;;;;;;;;8839:2407;;;;;;:::o;6898:175:106:-;7061:1;1020:12;6998:27;;;7056:1;7048:9;7047:15;7065:1;7047:19;;6898:175::o;9033:198::-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;3309:605;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;10938:198::-;1020:12;11062:23;;11050:35;;11103:25;;;;11095:34;;;;;15178:713:4;15391:13;;:67;;-1:-1:-1;;;15391:67:4;;15349:7;;;;-1:-1:-1;;;;;15391:13:4;;;;:46;;:67;;15438:7;;15391:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15497:13;;:77;;-1:-1:-1;;;15497:77:4;;15372:86;;-1:-1:-1;15468:26:4;;-1:-1:-1;;;;;15497:13:4;;;;:46;;:77;;15544:7;;15497:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15468:106;;15601:18;-1:-1:-1;;;;;15589:30:4;:8;-1:-1:-1;;;;;15589:30:4;;15585:300;;15692:12;;15745:40;;15663:13;;;;-1:-1:-1;;;;;15692:12:4;;;;:25;;15745:40;;15756:8;;15766:18;;15745:40;;;:::i;:::-;;;;;;;;;;;;;15735:51;;;;;;15804:9;15692:135;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15662:165;;;;15845:5;15841:33;;;-1:-1:-1;15867:6:4;-1:-1:-1;15852:22:4;;-1:-1:-1;;15852:22:4;15841:33;15585:300;;;15178:713;;;;;;;:::o;11609:3425::-;11774:7;11814:12;11801:9;:25;;;;;;;;;11797:3203;;;11917:12;;;11960:13;:84;;-1:-1:-1;;;11960:84:4;;11885:16;;;;-1:-1:-1;;;;;11917:12:4;;;;:25;;11960:13;;;;:46;;:84;;12007:7;;11960:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12062:9;11917:168;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11884:201;;;;12103:5;12099:36;;;-1:-1:-1;12125:9:4;-1:-1:-1;12110:25:4;;12099:36;11797:3203;;;;;12169:12;12156:9;:25;;;;;;;;;12152:2848;;;-1:-1:-1;12289:15:4;12274:31;;12152:2848;12339:12;12326:9;:25;;;;;;;;;12322:2678;;;12438:44;;:::i;:::-;12485:13;;:134;;-1:-1:-1;;;12485:134:4;;-1:-1:-1;;;;;12485:13:4;;;;:56;;:134;;12559:7;;12485:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12438:181;-1:-1:-1;12665:26:4;12637:19;:24;;;:54;;;;;;;;;12633:639;;;12739:26;;12836:27;;;;12913:66;;-1:-1:-1;;;12913:66:4;;-1:-1:-1;;;;;12913:47:4;;;;;:66;;12739:26;;12913:66;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:74;;12983:4;12913:74;12884:198;;;;-1:-1:-1;;;12884:198:4;;;;;;;:::i;:::-;13136:103;;-1:-1:-1;;;13136:103:4;;-1:-1:-1;;;;;13136:63:4;;;;;:103;;13200:17;;13136:103;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13107:150;-1:-1:-1;13100:157:4;;-1:-1:-1;;;13100:157:4;12633:639;13285:44;;:::i;:::-;13332:13;;:134;;-1:-1:-1;;;13332:134:4;;-1:-1:-1;;;;;13332:13:4;;;;:56;;:134;;13406:7;;13332:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13285:181;-1:-1:-1;13530:25:4;13501:19;:25;;;:54;;;;;;;;;:127;;;;-1:-1:-1;13603:25:4;13575:19;:24;;;:53;;;;;;;;;13501:127;13480:403;;;13693:12;;13740:26;;13693:122;;-1:-1:-1;;;13693:122:4;;13662:15;;;;-1:-1:-1;;;;;13693:12:4;;;;:25;;:122;;13788:9;;13693:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13661:154;;;;13837:5;13833:35;;;-1:-1:-1;13859:8:4;-1:-1:-1;13844:24:4;;-1:-1:-1;;13844:24:4;13833:35;13480:403;;12322:2678;;;;;13916:13;13903:9;:26;;;;;;;;;13899:1101;;;13945:44;;:::i;:::-;13992:13;;:134;;-1:-1:-1;;;13992:134:4;;-1:-1:-1;;;;;13992:13:4;;;;:56;;:134;;14066:7;;13992:134;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13945:181;-1:-1:-1;14190:25:4;14161:19;:25;;;:54;;;;;;;;;:127;;;;-1:-1:-1;14263:25:4;14235:19;:24;;;:53;;;;;;;;;14161:127;14140:819;;;14385:12;;14432:26;;14385:122;;-1:-1:-1;;;14385:122:4;;14322:35;;;;-1:-1:-1;;;;;14385:12:4;;;;:25;;:122;;14480:9;;14385:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14585:12;;14632:26;;14585:12;14680:13;:65;;-1:-1:-1;;;14680:65:4;;14321:186;;-1:-1:-1;14321:186:4;;-1:-1:-1;14526:33:4;;;;-1:-1:-1;;;;;14585:12:4;;;;:25;;14632:26;14680:13;;;:43;;:65;;14724:7;;14680:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14585:178;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14525:238;;;;14785:17;:36;;;;;14806:15;14785:36;14781:164;;;14860:65;:28;14898:26;14860:65;:37;:65;:::i;:::-;14852:74;-1:-1:-1;14845:81:4;;-1:-1:-1;;;;;14845:81:4;14781:164;14140:819;;;;;-1:-1:-1;14987:1:4;;-1:-1:-1;14972:17:4;;13899:1101;-1:-1:-1;15025:1:4;11609:3425;;;;;:::o;1146:600:80:-;1231:6;1261;1253:55;;;;-1:-1:-1;;;1253:55:80;;;;;;;:::i;:::-;1372:6;1368:20;;-1:-1:-1;1387:1:80;1380:8;;1368:20;353:15;1409:25;;;;:1;:25;:1;1452:5;;;;;:30;1444:81;;;;-1:-1:-1;;;1444:81:80;;;;;;;:::i;:::-;1546:1;-1:-1:-1;;1546:7:80;:26;;;;;-1:-1:-1;;;1557:1:80;:15;1546:26;1544:29;1536:80;;;;-1:-1:-1;;;1536:80:80;;;;;;;:::i;:::-;1626:8;1641:1;1637;:5;;;;;;;-1:-1:-1;1660:6:80;1652:68;;;;-1:-1:-1;;;1652:68:80;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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;1396:188::-;1501:13;;1519:60;1501:13;1519:60;:::i;1756:162::-;1848:13;;1866:47;1848:13;1866:47;:::i;1925:184::-;2028:13;;2046:58;2028:13;2046:58;:::i;2679:170::-;2775:13;;2793:51;2775:13;2793:51;:::i;2856:166::-;2941:20;;2966:51;2941:20;2966:51;:::i;3029:170::-;3125:13;;3143:51;3125:13;3143:51;:::i;4940:168::-;5035:13;;5053:50;5035:13;5053:50;:::i;6079:166::-;;6197:3;6188:6;6183:3;6179:16;6175:26;6172:2;;;-1:-1;;6204:12;6172:2;-1:-1;6224:15;6165:80;-1:-1;6165:80::o;8098:810::-;;8220:4;8208:9;8203:3;8199:19;8195:30;8192:2;;;-1:-1;;8228:12;8192:2;8256:20;8220:4;8256:20;:::i;:::-;8247:29;;21571:6;21565:13;8337:16;8330:86;8474:2;8550:9;8546:22;2028:13;2046:58;2098:5;2046:58;:::i;:::-;8474:2;8489:16;;8482:93;8633:2;8705:22;;1848:13;1866:47;1848:13;1866:47;:::i;:::-;8633:2;8648:16;;8641:93;8796:2;8858:22;;867:13;885:30;867:13;885:30;:::i;:::-;8796:2;8811:16;;8804:83;8815:5;8186:722;-1:-1;;8186:722::o;8931:650::-;;9052:4;9040:9;9035:3;9031:19;9027:30;9024:2;;;-1:-1;;9060:12;9024:2;9088:20;9052:4;9088:20;:::i;:::-;9079:29;;21571:6;21565:13;9169:16;9162:86;9306:2;9382:9;9378:22;2028:13;2046:58;2098:5;2046:58;:::i;:::-;9306:2;9321:16;;9314:93;9469:2;9531:22;;867:13;885:30;867:13;885:30;:::i;:::-;9469:2;9484:16;;9477:83;9488:5;9018:563;-1:-1;;9018:563::o;21765:241::-;;21869:2;21857:9;21848:7;21844:23;21840:32;21837:2;;;-1:-1;;21875:12;21837:2;85:6;72:20;97:33;124:5;97:33;:::i;22013:263::-;;22128:2;22116:9;22107:7;22103:23;22099:32;22096:2;;;-1:-1;;22134:12;22096:2;226:6;220:13;238:33;265:5;238:33;:::i;22283:366::-;;;22404:2;22392:9;22383:7;22379:23;22375:32;22372:2;;;-1:-1;;22410:12;22372:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;22462:63;22562:2;22601:22;;;;21417:20;;-1:-1;;;22366:283::o;22656:257::-;;22768:2;22756:9;22747:7;22743:23;22739:32;22736:2;;;-1:-1;;22774:12;22736:2;873:6;867:13;885:30;909:5;885:30;:::i;22920:241::-;;23024:2;23012:9;23003:7;22999:23;22995:32;22992:2;;;-1:-1;;23030:12;22992:2;-1:-1;994:20;;22986:175;-1:-1;22986:175::o;23168:263::-;;23283:2;23271:9;23262:7;23258:23;23254:32;23251:2;;;-1:-1;;23289:12;23251:2;-1:-1;1142:13;;23245:186;-1:-1;23245:186::o;23438:366::-;;;23559:2;23547:9;23538:7;23534:23;23530:32;23527:2;;;-1:-1;;23565:12;23527:2;-1:-1;;994:20;;;23717:2;23756:22;;;994:20;;-1:-1;23521:283::o;23811:299::-;;23944:2;23932:9;23923:7;23919:23;23915:32;23912:2;;;-1:-1;;23950:12;23912:2;3131:6;3125:13;3143:51;3188:5;3143:51;:::i;24117:271::-;;24236:2;24224:9;24215:7;24211:23;24207:32;24204:2;;;-1:-1;;24242:12;24204:2;4057:6;4044:20;4069:48;4111:5;4069:48;:::i;24395:396::-;;;24531:2;24519:9;24510:7;24506:23;24502:32;24499:2;;;-1:-1;;24537:12;24499:2;4057:6;4044:20;4069:48;4111:5;4069:48;:::i;25066:391::-;;;25194:2;25182:9;25173:7;25169:23;25165:32;25162:2;;;-1:-1;;25200:12;25162:2;5993:6;5987:13;25252:73;;25362:2;25413:9;25409:22;867:13;885:30;909:5;885:30;:::i;:::-;25370:71;;;;25156:301;;;;;:::o;25464:328::-;;25611:3;25599:9;25590:7;25586:23;25582:33;25579:2;;;-1:-1;;25618:12;25579:2;6448:20;25611:3;6448:20;:::i;:::-;226:6;220:13;238:33;265:5;238:33;:::i;:::-;6535:86;;6696:2;6761:22;;220:13;238:33;220:13;238:33;:::i;:::-;6696:2;6711:16;;6704:86;6866:2;6931:22;;220:13;238:33;220:13;238:33;:::i;:::-;6866:2;6881:16;;6874:86;7040:2;7105:22;;220:13;238:33;220:13;238:33;:::i;:::-;7040:2;7055:16;;7048:86;7059:5;25573:219;-1:-1;;;25573:219::o;25799:336::-;;25950:3;25938:9;25929:7;25925:23;25921:33;25918:2;;;-1:-1;;25957:12;25918:2;7365:20;25950:3;7365:20;:::i;:::-;7501:22;1142:13;7451:16;7444:86;7594:2;7663:9;7659:22;1142:13;7594:2;7613:5;7609:16;7602:86;7750:2;7846:9;7842:22;2221:13;2239:60;2293:5;2239:60;:::i;:::-;7750:2;7765:16;;7758:113;7932:2;8024:22;;2221:13;2239:60;2221:13;2239:60;:::i;26142:1033::-;;;;;;;26400:9;26391:7;26387:23;26412:4;26387:23;26383:34;26380:2;;;-1:-1;;26420:12;26380:2;9725:4;;9707:16;9703:27;9700:2;;;-1:-1;;9733:12;9700:2;26472:92;;-1:-1;26614:20;;26601:34;;-1:-1;26655:18;26644:30;;;26641:2;;;-1:-1;;26677:12;26641:2;26778:6;26767:9;26763: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;;26655:18;501:6;498:30;495:2;;;-1:-1;;531:12;495:2;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;-1:-1;;633:12;586:2;575:4;563:17;;-1:-1;26697:98;;-1:-1;26852:87;;-1:-1;26931:7;26832:4;26907:22;;26852:87;:::i;:::-;26842:97;;26996:53;27041:7;26976:4;27021:9;27017:22;26996:53;:::i;:::-;26986:63;;27106:53;27151:7;27086:4;27131:9;27127:22;27106:53;:::i;:::-;27096:63;;26374:801;;;;;;;;:::o;27182:319::-;;27324:4;27312:9;27303:7;27299:23;27295:34;27292:2;;;-1:-1;;27332:12;27292:2;9983:6;9968:22;9983:6;9968:22;:::i;:::-;10080:78;10154:3;10130:22;10080:78;:::i;:::-;10062:16;10055:104;10257:74;10327:3;10224:2;10307:9;10303:22;10257:74;:::i;:::-;10224:2;10243:5;10239:16;10232:100;10434:78;10508:3;10401:2;10488:9;10484:22;10434:78;:::i;:::-;10401:2;10420:5;10416:16;10409:104;10621:84;10701:3;10588:2;10681:9;10677:22;10621:84;:::i;:::-;10588:2;10607:5;10603:16;10596:110;10818:87;10901:3;10784;10881:9;10877:22;10818:87;:::i;:::-;10784:3;10804:5;10800:16;10793:113;11017:86;11099:3;10983;11079:9;11075:22;11017:86;:::i;:::-;10983:3;11003:5;10999:16;10992:112;11208:79;11283:3;11174;11263:9;11259:22;11208:79;:::i;:::-;11174:3;11194:5;11190:16;11183:105;11390:77;11463:3;11356;11443:9;11439:22;11390:77;:::i;:::-;11356:3;11376:5;11372:16;11365:103;11533:3;11569:74;11639:3;11533;11619:9;11615:22;11569:74;:::i;:::-;11549:18;;;11542:102;11709:3;11745:60;11801:3;11777:22;;;11745:60;:::i;:::-;11725:18;;;11718:88;11881:3;11917:60;11973:3;11949:22;;;11917:60;:::i;:::-;11897:18;;;11890:88;12060:3;12128:22;;;1142:13;12076:18;;;12069:88;12230:3;12298:22;;;21565:13;12246:18;;;12239:88;12394:3;12462:22;;;21565:13;12410:18;;;12403:88;12567:3;12635:22;;;21565:13;12583:18;;;12576:88;12733:3;12801:22;;;21565:13;12749:18;;;12742:88;12899:3;12967:22;;;21565:13;12915:18;;;12908:88;13074:3;13142:22;;;21565:13;13090:18;;;13083:88;13260:3;13328:22;;;21565:13;13276:18;;;13269:88;13440:3;13508:22;;;21565:13;13456:18;;;13449:88;13623:3;13691:22;;;21565:13;13639:18;;;13632:88;13797:3;13865:22;;;21565:13;13813:18;;;13806:88;13968:3;14035:22;;;5987:13;13984:18;;;13977:87;14140:3;14207:22;;;5987:13;14156:18;;;14149:87;14308:3;14375:22;;;5987:13;14324:18;;;14317:87;14475:3;14542:22;;;5987:13;14491:18;;;14484:87;14638:3;14705:22;;;5987:13;14654:18;;;14647:87;14804:3;14871:22;;;5987:13;14820:18;;;14813:87;14964:3;15031:22;;;5987:13;14980:18;;;14973:87;15127:3;15194:22;;;5987:13;15143:18;;;15136:87;15291:3;15358:22;;;5987:13;15307:18;;;15300:87;15459:3;15526:22;;;5987:13;15475:18;;;15468:87;15632:4;15700:22;;;5987:13;15649:18;;;15642:87;15805:4;15873:22;;;5987:13;15822:18;;;15815:87;15966:4;16034:22;;;5987:13;15983:18;;;15976:87;16129:4;16197:22;;;5987:13;16146:18;;;16139:87;16292:4;16360:22;;;5987:13;16309:18;;;16302:87;16457:4;16525:22;;;5987:13;16474:18;;;16467:87;16622:4;16659:81;16736:3;16712:22;;;16659:81;:::i;:::-;16639:18;;;16632:109;16815:4;16852:81;16929:3;16905:22;;;16852:81;:::i;:::-;16843:6;16836:5;16832:18;16825:109;17050:82;17128:3;9983:6;17108:9;17104:22;17050:82;:::i;:::-;17041:6;17034:5;17030:18;17023:110;17243:82;17321:3;17206:4;17301:9;17297:22;17243:82;:::i;:::-;17223:18;;;17216:110;17439:82;17517:3;17402:4;17493:22;;17439:82;:::i;:::-;17430:6;17423:5;17419:18;17412:110;17626:82;17704:3;17589:4;17684:9;17680:22;17626:82;:::i;:::-;17617:6;17606:18;;17599:110;17610:5;27286:215;-1:-1;;;;27286:215::o;27508:312::-;;27647:3;;27635:9;27626:7;27622:23;27618:33;27615:2;;;-1:-1;;27654:12;27615:2;17918:22;27647:3;17918:22;:::i;:::-;18037:85;18118:3;18094:22;18037:85;:::i;:::-;18012:111;;18190:2;18255:22;;;21565:13;18205:16;;;18198:86;18358:2;18423:22;;;21565:13;18373:16;;;18366:86;18521:2;18586:22;;;21565:13;18536:16;;;18529:86;18684:3;18750:22;;;21565:13;18700:16;;;18693:86;18851:3;18917:22;;;21565:13;18867:16;;;18860:86;19016:3;19082:22;;;21565:13;19032:16;;;19025:86;19185:3;19250:22;;;5987:13;19201:16;;;19194:85;19351:3;19418:22;;;5987:13;19367:18;;;19360:87;19514:3;19581:22;;;5987:13;19530:18;;;19523:87;19686:3;19753:22;;;5987:13;19702:18;;;19695:87;19864:3;19931:22;;;5987:13;19880:18;;;19873:87;20042:3;20109:22;;;5987:13;20058:18;;;20051:87;20225:3;20292:22;;;5987:13;20241:18;;;20234:87;20392:3;20459:22;;;5987:13;20408:18;;;20401:87;20561:3;20628:22;;;5987:13;20577:18;;;20570:87;20722:3;20789:22;;;5987:13;20738:18;;;20731:87;20892:3;20959:22;;;5987:13;20908:18;;;20901:87;21057:3;21124:22;;;5987:13;21073:18;;;21066:87;21226:3;21293:22;;;5987:13;21242:18;;;21235:87;;;;-1:-1;18019:16;;27609:211;-1:-1;;27609:211::o;28097:699::-;;;;;28293:3;28281:9;28272:7;28268:23;28264:33;28261:2;;;-1:-1;;28300:12;28261:2;21430:6;21417:20;28352:63;;28452:2;28522:9;28518:22;1299:20;1324:60;1378:5;1324:60;:::i;:::-;28460:90;-1:-1;28587:2;28640:22;;1672:20;1697:47;1672:20;1697:47;:::i;:::-;28255:541;;;;-1:-1;28595:77;;28709:2;28748:22;21417:20;;-1:-1;;28255:541::o;28803:259::-;;28916:2;28904:9;28895:7;28891:23;28887:32;28884:2;;;-1:-1;;28922:12;28884:2;21710:6;21704:13;93064:4;100172:5;93053:16;100149:5;100146:33;100136:2;;-1:-1;;100183:12;29218:103;-1:-1;;;;;92848:54;29279:37;;29273:48::o;30641:166::-;96262:1;96255:5;96252:12;96242:2;;96268:9;96242:2;30727:75;;30721:86::o;30814:140::-;91026:47;91067:5;91026:47;:::i;30961:162::-;91178:58;91230:5;91178:58;:::i;31130:148::-;96613:2;96606:5;96603:13;96593:2;;96620:9;31285:148;96730:2;96723:5;96720:13;96710:2;;96737:9;32382:146;97423:1;97416:5;97413:12;97403:2;;97429:9;42314:885;21430:6;21417:20;30123:3;30116:37;90490:2;42539:16;90481:12;3297:20;3322:57;3373:5;3322:57;:::i;:::-;91178:58;91230:5;91178:58;:::i;:::-;90490:2;42800:14;;32315:55;42925:4;42914:16;;1672:20;1697:47;1672:20;1697:47;:::i;:::-;91026;91067:5;91026:47;:::i;:::-;42925:4;42990:14;;32601:55;43109:4;43098:16;;725:20;750:30;725:20;750:30;:::i;:::-;30036:5;90672:13;90665:21;43109:4;43167:3;43163:14;30009:34;;42416:783;;:::o;43237:764::-;43433:16;43427:23;30123:3;30116:37;43595:4;43588:5;43584:16;43578:23;91178:58;91230:5;91178:58;:::i;:::-;43595:4;43660:14;;32315:55;43751:4;43740:16;;43734:23;91026:47;43734:23;91026:47;:::i;:::-;43751:4;43816:14;;32601:55;43911:4;43900:16;;;43894:23;90672:13;90665:21;43965:14;;30009:34;43337:664::o;44037:693::-;21430:6;21417:20;30123:3;30116:37;90490:2;44260:16;90481:12;3297:20;3322:57;3373:5;3322:57;:::i;:::-;91178:58;91230:5;91178:58;:::i;:::-;90490:2;44521:14;;32315:55;89526:12;;;725:20;750:30;725:20;750:30;:::i;:::-;30036:5;90672:13;90665:21;89526:12;44698:3;44694:14;30009:34;;44137:593;;:::o;44766:606::-;44960:16;44954:23;30123:3;30116:37;45122:4;45115:5;45111:16;45105:23;91178:58;91230:5;91178:58;:::i;:::-;45122:4;45187:14;;32315:55;45282:4;45271:16;;;45265:23;90672:13;90665:21;45336:14;;30009:34;44864:508::o;45420:9482::-;88881:2;45696:16;88872:12;45719:79;45783:14;88828:57;88872:12;45696:16;88828:57;:::i;:::-;45719:79;:::i;:::-;45864:64;45911:16;45904:5;45864:64;:::i;:::-;45934:75;88881:2;45998:3;45994:14;45980:12;45934:75;:::i;:::-;;;46079:68;46141:4;46134:5;46130:16;46123:5;46079:68;:::i;:::-;46153:79;46141:4;46221:3;46217:14;46203:12;46153:79;:::i;:::-;;46308:74;46376:4;46369:5;46365:16;46358:5;46308:74;:::i;:::-;46388:85;46376:4;46462:3;46458:14;46444:12;46388:85;:::i;:::-;;46552:77;46623:4;46616:5;46612:16;46605:5;46552:77;:::i;:::-;46635:88;46623:4;46712:3;46708:14;46694:12;46635:88;:::i;:::-;;46801:76;46871:4;46864:5;46860:16;46853:5;46801:76;:::i;:::-;46883:87;46871:4;46959:3;46955:14;46941:12;46883:87;:::i;:::-;;47041:69;47104:4;47097:5;47093:16;47086:5;47041:69;:::i;:::-;47116:80;47104:4;47185:3;47181:14;47167:12;47116:80;:::i;:::-;;47265:67;47326:4;47319:5;47315:16;47308:5;47265:67;:::i;:::-;47338:78;47326:4;47405:3;47401:14;47387:12;47338:78;:::i;:::-;;47540:6;47482:66;47540:6;47533:5;47529:18;47522:5;47482:66;:::i;:::-;47554:77;47540:6;47618:3;47614:16;47600:12;47554:77;:::i;:::-;;;47741:6;47697:52;47741:6;47734:5;47730:18;47723:5;47697:52;:::i;:::-;47755:65;47741:6;47807:3;47803:16;47789:12;47755:65;:::i;:::-;;;47940:6;47896:52;47940:6;47933:5;47929:18;47922:5;47896:52;:::i;:::-;47954:65;47940:6;48006:3;48002:16;47988:12;47954:65;:::i;:::-;-1:-1;;48146:6;48135:18;;;994:20;48208:16;;;30116:37;48343:6;48332:18;;;21417:20;48405:16;;;30116:37;48534:6;48523:18;;;21417:20;48596:16;;;30116:37;48734:6;48723:18;;;21417:20;48796:16;;;30116:37;48927:6;48916:18;;;21417:20;48989:16;;;30116:37;49120:6;49109:18;;;21417:20;49182:16;;;30116:37;49322:6;49311:18;;;21417:20;49384:16;;;30116:37;49535:6;49524:18;;;21417:20;49597:16;;;30116:37;49742:6;49731:18;;;21417:20;49804:16;;;30116:37;49952:6;49941:18;;;21417:20;50014:16;;;30116:37;50153:6;50142:18;;;21417:20;50215:16;;;30116:37;50350:6;50339:18;;;5841:20;50410:16;;;30116:37;50547:6;50536:18;;;5841:20;50607:16;;;30116:37;50740:6;50729:18;;;5841:20;50800:16;;;30116:37;50932:6;50921:18;;;5841:20;50992:16;;;30116:37;51120:6;51109:18;;;5841:20;51180:16;;;30116:37;51311:6;51300:18;;;5841:20;51371:16;;;30116:37;51496:6;51485:18;;;5841:20;51556:16;;;30116:37;51684:6;51673:18;;;5841:20;51744:16;;;30116:37;51873:6;51862:18;;;5841:20;51933:16;;;30116:37;52066:6;52055:18;;;5841:20;52126:16;;;30116:37;52264:6;52253:18;;;5841:20;52324:16;;;30116:37;52461:6;52450:18;;;5841:20;52521:16;;;30116:37;52646:6;52635:18;;;5841:20;52706:16;;;30116:37;52833:6;52822:18;;;5841:20;52893:16;;;30116:37;53020:6;53009:18;;;5841:20;53080:16;;;30116:37;53209:6;53198:18;;;5841:20;53269:16;;;30116:37;53422:6;53436:109;53528:16;;;53411:18;;;53436:109;:::i;:::-;;53687:6;53701:109;53687:6;53797:3;53793:16;53687:6;53680:5;53676:18;53701:109;:::i;:::-;;53958:6;53972:111;53958:6;54070:3;54066:16;53958:6;53951:5;53947:18;53972:111;:::i;:::-;;54225:6;54239:111;54225:6;54337:3;54333:16;54225:6;54218:5;54214:18;54239:111;:::i;:::-;;54495:6;54509:111;54495:6;54607:3;54603:16;54495:6;54488:5;54484:18;54509:111;:::i;:::-;;54756:6;54770:111;54756:6;54868:3;54864:16;54756:6;54749:5;54745:18;54770:111;:::i;:::-;;45542:9360;;:::o;62969:3535::-;63222:86;63293:14;63199:16;63193:23;63222:86;:::i;:::-;63393:4;63382:16;;;63376:23;63453:14;;;30116:37;63560:4;63549:16;;;63543:23;63620:14;;;30116:37;63722:4;63711:16;;;63705:23;63782:14;;;30116:37;63884:4;63873:16;;;63867:23;63944:14;;;30116:37;64049:4;64038:16;;;64032:23;64109:14;;;30116:37;64212:4;64201:16;;;64195:23;64272:14;;;30116:37;64379:4;64368:16;;;64362:23;64437:14;;;30116:37;64542:6;64531:18;;;64525:25;64602:16;;;30116:37;64704:6;64693:18;;;64687:25;64764:16;;;30116:37;64875:6;64864:18;;;64858:25;64935:16;;;30116:37;65052:6;65041:18;;;65035:25;65112:16;;;30116:37;65229:6;65218:18;;;65212:25;65289:16;;;30116:37;65411:6;65400:18;;;65394:25;65471:16;;;30116:37;65577:6;65566:18;;;65560:25;65637:16;;;30116:37;65745:6;65734:18;;;65728:25;65805:16;;;30116:37;65905:6;65894:18;;;65888:25;65965:16;;;30116:37;66074:6;66063:18;;;66057:25;66134:16;;;30116:37;66238:6;66227:18;;;66221:25;66298:16;;;30116:37;66406:6;66395:18;;;66389:25;66466:16;;30116:37;63083:3421::o;66741:222::-;-1:-1;;;;;92848:54;;;;29279:37;;66868:2;66853:18;;66839:124::o;66970:333::-;-1:-1;;;;;92848:54;;;29279:37;;92848:54;;67289:2;67274:18;;29279:37;67125:2;67110:18;;67096:207::o;67310:444::-;-1:-1;;;;;92848:54;;;29279:37;;92848:54;;;;67657:2;67642:18;;29279:37;67740:2;67725:18;;30116:37;;;;67493:2;67478:18;;67464:290::o;67761:333::-;-1:-1;;;;;92848:54;;;;29279:37;;68080:2;68065:18;;30116:37;67916:2;67901:18;;67887:207::o;68101:222::-;30116:37;;;68228:2;68213:18;;68199:124::o;68330:349::-;30116:37;;;-1:-1;;;;;92848:54;68665:2;68650:18;;29148:58;68493:2;68478:18;;68464:215::o;68686:333::-;30116:37;;;69005:2;68990:18;;30116:37;68841:2;68826:18;;68812:207::o;69026:440::-;30116:37;;;69371:2;69356:18;;30116:37;;;;69452:2;69437:18;;30116:37;69207:2;69192:18;;69178:288::o;69473:459::-;30116:37;;;-1:-1;;;69918:2;69903:18;;33186:34;69691:2;69676:18;;69662:270::o;69939:459::-;30116:37;;;-1:-1;;;70384:2;70369:18;;35109:23;70157:2;70142:18;;70128:270::o;70405:459::-;30116:37;;;-1:-1;;;70850:2;70835:18;;35682:24;70623:2;70608:18;;70594:270::o;70871:459::-;30116:37;;;35869:27;71316:2;71301:18;;35857:40;71089:2;71074:18;;71060:270::o;71337:459::-;30116:37;;;-1:-1;;;71782:2;71767:18;;36048:33;71555:2;71540:18;;71526:270::o;71803:459::-;30116:37;;;-1:-1;;;72248:2;72233:18;;37794:36;72021:2;72006:18;;71992:270::o;72269:459::-;30116:37;;;-1:-1;;;72714:2;72699:18;;38727:27;72487:2;72472:18;;72458:270::o;72735:459::-;30116:37;;;-1:-1;;;73180:2;73165:18;;40075:32;72953:2;72938:18;;72924:270::o;73201:459::-;30116:37;;;-1:-1;;;73646:2;73631:18;;40258:23;73419:2;73404:18;;73390:270::o;73667:459::-;30116:37;;;-1:-1;;;74112:2;74097:18;;41209:34;73885:2;73870:18;;73856:270::o;74133:1521::-;;74686:4;30146:5;30123:3;30116:37;74784:128;74908:2;74897:9;74893:18;74884:6;74784:128;:::i;:::-;74923:122;75039:4;75028:9;75024:20;75015:6;74923:122;:::i;:::-;75078:4;75063:20;;75056:50;;;74671:20;;87615:19;;;87655:14;-1:-1;;;;;29727:78;;29724:2;;;-1:-1;;29808:12;29724:2;74908;29843:6;29839:17;96094:6;96089:3;87655:14;74675:9;87655:14;96071:30;96132:16;;;96125:27;;;72:20;;97:33;72:20;97:33;:::i;:::-;-1:-1;;;;;92848:54;;;75383:4;75368:20;;29279:37;87956:12;;;;92859:42;87930:39;87956:12;74908:2;87956:12;;87930:39;:::i;:::-;92848:54;41844:14;75372:9;41844:14;29279:37;87956:12;41973:5;87956:12;92859:42;87930:39;87956:12;87951:3;87930:39;:::i;:::-;92848:54;42040:14;75372:9;42040:14;29279:37;92859:42;87930:39;87956:12;42173:5;87956:12;87951:3;87930:39;:::i;:::-;92848:54;42240:14;75372:9;42240:14;29279:37;;;;75400:74;75468:4;75457:9;75453:20;75444:6;75400:74;:::i;:::-;75485;75553:4;75542:9;75538:20;75529:6;75485:74;:::i;:::-;75570;75638:4;75627:9;75623:20;75614:6;75570:74;:::i;:::-;74657:997;;;;;;;;;;;;:::o;75661:430::-;30116:37;;;75864:3;75849:19;;75961:120;76077:2;76062:18;;76053:6;75961:120;:::i;76986:476::-;77185:2;77170:18;;96730:2;96720:13;;96710:2;;96737:9;96710:2;31362:66;;;-1:-1;;;;;92848:54;;;77365:2;77350:18;;29279:37;92848:54;;77448:2;77433:18;;;29279:37;77156:306;:::o;77469:359::-;77637:2;77622:18;;97090:2;97080:13;;97070:2;;97097:9;97070:2;32027:63;;;77814:2;77799:18;30116:37;77608:220;:::o;77835:466::-;78029:2;78014:18;;97090:2;97080:13;;97070:2;;97097:9;97070:2;32027:63;;;78206:2;78191:18;;30116:37;;;;78287:2;78272:18;;;30116:37;78000:301;:::o;78308:416::-;78508:2;78522:47;;;33459:2;78493:18;;;87615:19;33495:34;87655:14;;;33475:55;33564:26;33550:12;;;33543:48;33610:12;;;78479:245::o;78731:416::-;78931:2;78945:47;;;33861:2;78916:18;;;87615:19;33897:34;87655:14;;;33877:55;-1:-1;;;33952:12;;;33945:35;33999:12;;;78902:245::o;79154:416::-;79354:2;79368:47;;;34250:2;79339:18;;;87615:19;34286:34;87655:14;;;34266:55;-1:-1;;;34341:12;;;34334:30;34383:12;;;79325:245::o;79577:348::-;-1:-1;;;34546:33;;79767:2;79752:18;;79738:187::o;79932:416::-;80132:2;80146:47;;;34818:2;80117:18;;;87615:19;34854:34;87655:14;;;34834:55;-1:-1;;;34909:12;;;34902:25;34946:12;;;80103:245::o;80355:416::-;80555:2;80569:47;;;35371:2;80540:18;;;87615:19;35407:34;87655:14;;;35387:55;-1:-1;;;35462:12;;;35455:45;35519:12;;;80526:245::o;80778:416::-;80978:2;80992:47;;;36320:2;80963:18;;;87615:19;36356:34;87655:14;;;36336:55;-1:-1;;;36411:12;;;36404:38;36461:12;;;80949:245::o;81201:416::-;81401:2;81415:47;;;36712:2;81386:18;;;87615:19;36748:34;87655:14;;;36728:55;-1:-1;;;36803:12;;;36796:35;36850:12;;;81372:245::o;81624:416::-;81824:2;81838:47;;;37101:2;81809:18;;;87615:19;37137:34;87655:14;;;37117:55;-1:-1;;;37192:12;;;37185:32;37236:12;;;81795:245::o;82047:416::-;82247:2;82261:47;;;37487:2;82232:18;;;87615:19;37523:34;87655:14;;;37503:55;-1:-1;;;37578:12;;;37571:41;37631:12;;;82218:245::o;82470:416::-;82670:2;82684:47;;;38069:2;82655:18;;;87615:19;38105:34;87655:14;;;38085:55;38174:29;38160:12;;;38153:51;38223:12;;;82641:245::o;82893:416::-;83093:2;83107:47;;;83078:18;;;87615:19;38510:34;87655:14;;;38490:55;38564:12;;;83064:245::o;83316:416::-;83516:2;83530:47;;;38993:2;83501:18;;;87615:19;39029:34;87655:14;;;39009:55;-1:-1;;;39084:12;;;39077:30;39126:12;;;83487:245::o;83739:416::-;83939:2;83953:47;;;39377:2;83924:18;;;87615:19;39413:34;87655:14;;;39393:55;-1:-1;;;39468:12;;;39461:43;39523:12;;;83910:245::o;84162:416::-;84362:2;84376:47;;;39774:2;84347:18;;;87615:19;39810:34;87655:14;;;39790:55;-1:-1;;;39865:12;;;39858:35;39912:12;;;84333:245::o;84585:416::-;84785:2;84799:47;;;40520:2;84770:18;;;87615:19;40556:34;87655:14;;;40536:55;-1:-1;;;40611:12;;;40604:41;40664:12;;;84756:245::o;85008:416::-;85208:2;85222:47;;;40915:2;85193:18;;;87615:19;40951:34;87655:14;;;40931:55;-1:-1;;;41006:12;;;40999:28;41046:12;;;85179:245::o;85431:336::-;85614:4;85599:20;;85630:127;85603:9;85730:6;85630:127;:::i;85774:449::-;85985:4;85970:20;;86001:127;85974:9;86101:6;86001:127;:::i;:::-;30146:5;86207:4;86196:9;86192:20;30116:37;85956:267;;;;;:::o;86230:767::-;;86543:4;86532:9;86528:20;86520:28;;55202:79;55266:14;55179:16;55173:23;55202:79;:::i;:::-;55364:4;55357:5;55353:16;55347:23;55376:75;55364:4;55440:3;55436:14;55422:12;55376:75;:::i;:::-;;55538:4;55531:5;55527:16;55521:23;55550:79;55538:4;55618:3;55614:14;55600:12;55550:79;:::i;:::-;;55722:4;55715:5;55711:16;55705:23;55734:85;55722:4;55808:3;55804:14;55790:12;55734:85;:::i;:::-;;55915:4;55908:5;55904:16;55898:23;55927:88;55915:4;56004:3;56000:14;55986:12;55927:88;:::i;:::-;;56110:4;56103:5;56099:16;56093:23;56122:87;56110:4;56198:3;56194:14;56180:12;56122:87;:::i;:::-;;56297:4;56290:5;56286:16;56280:23;56309:80;56297:4;56378:3;56374:14;56360:12;56309:80;:::i;:::-;;56475:4;56468:5;56464:16;56458:23;56487:78;56475:4;56554:3;56550:14;56536:12;56487:78;:::i;:::-;;56648:6;;56641:5;56637:18;56631:25;56662:77;56648:6;56726:3;56722:16;56708:12;56662:77;:::i;:::-;;;56822:6;;56815:5;56811:18;56805:25;56836:65;56822:6;56888:3;56884:16;56870:12;56836:65;:::i;:::-;;;56994:6;;56987:5;56983:18;56977:25;57008:65;56994:6;57060:3;57056:16;57042:12;57008:65;:::i;:::-;-1:-1;;57173:6;57162:18;;;57156:25;57235:16;;;30116:37;57343:6;57332:18;;;57326:25;57405:16;;;30116:37;57507:6;57496:18;;;57490:25;57569:16;;;30116:37;57680:6;57669:18;;;57663:25;57742:16;;;30116:37;57846:6;57835:18;;;57829:25;57908:16;;;30116:37;58012:6;58001:18;;;57995:25;58074:16;;;30116:37;58187:6;58176:18;;;58170:25;58249:16;;;30116:37;58373:6;58362:18;;;58356:25;58435:16;;;30116:37;58553:6;58542:18;;;58536:25;58615:16;;;30116:37;58736:6;58725:18;;;58719:25;58798:16;;;30116:37;58910:6;58899:18;;;58893:25;58972:16;;;30116:37;59081:6;59070:18;;;59064:25;59141:16;;;30116:37;59252:6;59241:18;;;59235:25;59312:16;;;30116:37;59419:6;59408:18;;;59402:25;59479:16;;;30116:37;59585:6;59574:18;;;59568:25;59645:16;;;30116:37;59747:6;59736:18;;;59730:25;59807:16;;;30116:37;59912:6;59901:18;;;59895:25;59972:16;;;30116:37;60071:6;60060:18;;;60054:25;60131:16;;;30116:37;60233:6;60222:18;;;60216:25;60293:16;;;30116:37;60396:6;60385:18;;;60379:25;60456:16;;;30116:37;60563:6;60552:18;;;60546:25;60623:16;;;30116:37;60735:6;60724:18;;;60718:25;60795:16;;;30116:37;60906:6;60895:18;;;60889:25;60966:16;;;30116:37;61065:6;61054:18;;;61048:25;61125:16;;;30116:37;61226:6;61215:18;;;61209:25;61286:16;;;30116:37;61387:6;61376:18;;;61370:25;61447:16;;;30116:37;61550:6;61539:18;;;61533:25;61610:16;;;30116:37;61713:6;61702:18;;;61696:25;61727:107;61817:16;;;61696:25;61727:107;:::i;:::-;;;61926:6;61919:5;61915:18;61909:25;62039:6;61940:107;62039:6;62034:3;62030:16;62016:12;61940:107;:::i;:::-;62144:6;62137:5;62133:18;62127:25;62107:45;;62158:109;62259:6;62254:3;62250:16;62236:12;62158:109;:::i;:::-;62347:18;;62341:25;;-1:-1;62372:109;62473:6;62464:16;;62341:25;62372:109;:::i;:::-;;62575:6;62568:5;62564:18;62558:25;62589:109;62690:6;62685:3;62681:16;62667:12;62589:109;:::i;:::-;;62783:6;62776:5;62772:18;62766:25;62797:109;62898:6;62893:3;62889:16;62875:12;62797:109;:::i;:::-;;86695:122;86811:4;86800:9;86796:20;86787:6;86695:122;:::i;:::-;86896:4;86881:20;;30116:37;;;;86981:4;86966:20;30116:37;86514:483;;-1:-1;;86514:483::o;87233:256::-;87295:2;87289:9;87321:17;;;87396:18;87381:34;;87417:22;;;87378:62;87375:2;;;87453:1;;87443:12;87375:2;87295;87462:22;87273:216;;-1:-1;87273:216::o;87856:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;88234:173::-;;1312:6;1299:20;1324:60;1378:5;1324:60;:::i;88416:147::-;;1685:6;1672:20;1697:47;1738:5;1697:47;:::i;88572:155::-;;2604:6;2591:20;2616:51;2661:5;2616:51;:::i;88900:167::-;;3310:6;3297:20;3322:57;3373:5;3322:57;:::i;89554:153::-;;4866:6;4853:20;4878:50;4922:5;4878:50;:::i;96291:105::-;96374:1;96367:5;96364:12;96354:2;;96380:9;96354:2;96348:48;:::o;96403:116::-;96497:1;96490:5;96487:12;96477:2;;96503:9;97674:117;-1:-1;;;;;92848:54;;97733:35;;97723:2;;97782:1;;97772:12;97798:111;97879:5;90672:13;90665:21;97857:5;97854:32;97844:2;;97900:1;;97890:12;98040:121;98136:1;98129:5;98126:12;98116:2;;98152:1;;98142:12;98168:108;98251:1;98244:5;98241:12;98231:2;;98267:1;;98257:12;98283:119;98377:1;98370:5;98367:12;98357:2;;98393:1;;98383:12;98409:121;98505:1;98498:5;98495:12;98485:2;;98521:1;;98511:12;98665:113;98752:2;98745:5;98742:13;98732:2;;98769:1;;98759:12;98785:113;98872:2;98865:5;98862:13;98852:2;;98889:1;;98879:12;99157:110;99241:2;99234:5;99231:13;99221:2;;99258:1;;99248:12;99497:111;99583:1;99576:5;99573:12;99563:2;;99599:1;;99589:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol\";\n\nimport \"../Base/AssetActor/BaseActor.sol\";\nimport \"./IPAMRegistry.sol\";\n\n\n/**\n * @title PAMActor\n * @notice TODO\n */\ncontract PAMActor is BaseActor {\n\n    constructor(IAssetRegistry assetRegistry, IDataRegistry dataRegistry)\n        public\n        BaseActor(assetRegistry, dataRegistry)\n    {}\n\n    /**\n     * @notice Derives initial state of the asset terms and stores together with\n     * terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\n     * @param terms asset specific terms\n     * @param schedule schedule of the asset\n     * @param ownership ownership of the asset\n     * @param engine address of the ACTUS engine used for the spec. ContractType\n     * @param admin address of the admin of the asset (optional)\n     */\n    function initialize(\n        PAMTerms calldata terms,\n        bytes32[] calldata schedule,\n        AssetOwnership calldata ownership,\n        address engine,\n        address admin\n    )\n        external\n    {\n        require(\n            engine != address(0) && IEngine(engine).contractType() == ContractType.PAM,\n            \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\"\n        );\n\n        // solium-disable-next-line\n        bytes32 assetId = keccak256(abi.encode(terms, block.timestamp));\n\n        // compute the initial state of the asset\n        State memory initialState = IPAMEngine(engine).computeInitialState(terms);\n\n        // register the asset in the AssetRegistry\n        IPAMRegistry(address(assetRegistry)).registerAsset(\n            assetId,\n            terms,\n            initialState,\n            schedule,\n            ownership,\n            engine,\n            address(this),\n            admin\n        );\n\n        emit InitializedAsset(assetId, ContractType.PAM, ownership.creatorObligor, ownership.counterpartyObligor);\n    }\n\n    function computeStateAndPayoffForEvent(bytes32 assetId, State memory state, bytes32 _event)\n        internal\n        view\n        override\n        returns (State memory, int256)\n    {\n        address engine = assetRegistry.getEngine(assetId);\n        PAMTerms memory terms = IPAMRegistry(address(assetRegistry)).getTerms(assetId);\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        int256 payoff = IPAMEngine(engine).computePayoffForEvent(\n            terms,\n            state,\n            _event,\n            getExternalDataForPOF(\n                assetId,\n                eventType,\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate)\n            )\n        );\n        state = IPAMEngine(engine).computeStateForEvent(\n            terms,\n            state,\n            _event,\n            getExternalDataForSTF(\n                assetId,\n                eventType,\n                shiftCalcTime(scheduleTime, terms.businessDayConvention, terms.calendar, terms.maturityDate)\n            )\n        );\n\n        return (state, payoff);\n    }\n}",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMActor.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMActor.sol",
    "exportedSymbols": {
      "PAMActor": [
        14921
      ]
    },
    "id": 14922,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14722,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:43"
      },
      {
        "id": 14723,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:43"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "id": 14724,
        "nodeType": "ImportDirective",
        "scope": 14922,
        "sourceUnit": 32534,
        "src": "101:68:43",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol",
        "file": "../Base/AssetActor/BaseActor.sol",
        "id": 14725,
        "nodeType": "ImportDirective",
        "scope": 14922,
        "sourceUnit": 3852,
        "src": "171:42:43",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/IPAMRegistry.sol",
        "file": "./IPAMRegistry.sol",
        "id": 14726,
        "nodeType": "ImportDirective",
        "scope": 14922,
        "sourceUnit": 14721,
        "src": "214:28:43",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14728,
              "name": "BaseActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3851,
              "src": "309:9:43",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseActor_$3851",
                "typeString": "contract BaseActor"
              }
            },
            "id": 14729,
            "nodeType": "InheritanceSpecifier",
            "src": "309:9:43"
          }
        ],
        "contractDependencies": [
          3851,
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 14727,
          "nodeType": "StructuredDocumentation",
          "src": "245:42:43",
          "text": " @title PAMActor\n @notice TODO"
        },
        "fullyImplemented": true,
        "id": 14921,
        "linearizedBaseContracts": [
          14921,
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "PAMActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 14740,
              "nodeType": "Block",
              "src": "462:2:43",
              "statements": []
            },
            "documentation": null,
            "id": 14741,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14736,
                    "name": "assetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14731,
                    "src": "429:13:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14737,
                    "name": "dataRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14733,
                    "src": "444:12:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  }
                ],
                "id": 14738,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14735,
                  "name": "BaseActor",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3851,
                  "src": "419:9:43",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseActor_$3851_$",
                    "typeString": "type(contract BaseActor)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "419:38:43"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14731,
                  "mutability": "mutable",
                  "name": "assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14741,
                  "src": "338:28:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14730,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "338:14:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14733,
                  "mutability": "mutable",
                  "name": "dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14741,
                  "src": "368:26:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14732,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "368:13:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:58:43"
            },
            "returnParameters": {
              "id": 14739,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "462:0:43"
            },
            "scope": 14921,
            "src": "326:138:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14825,
              "nodeType": "Block",
              "src": "1161:853:43",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 14762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14757,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14751,
                            "src": "1192:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1210:1:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 14759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1202:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 14758,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1202:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 14761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1202:10:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1192:20:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractType_$22559",
                            "typeString": "enum ContractType"
                          },
                          "id": 14770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14764,
                                    "name": "engine",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14751,
                                    "src": "1224:6:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14763,
                                  "name": "IEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32432,
                                  "src": "1216:7:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IEngine_$32432_$",
                                    "typeString": "type(contract IEngine)"
                                  }
                                },
                                "id": 14765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1216:15:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEngine_$32432",
                                  "typeString": "contract IEngine"
                                }
                              },
                              "id": 14766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32431,
                              "src": "1216:28:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$__$returns$_t_enum$_ContractType_$22559_$",
                                "typeString": "function () pure external returns (enum ContractType)"
                              }
                            },
                            "id": 14767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1216:30:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14768,
                              "name": "ContractType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22559,
                              "src": "1250:12:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                                "typeString": "type(enum ContractType)"
                              }
                            },
                            "id": 14769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PAM",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1250:16:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "src": "1216:50:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1192:74:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545950455f4f465f454e47494e455f554e535550504f52544544",
                        "id": 14772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1280:58:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        },
                        "value": "ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        }
                      ],
                      "id": 14756,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1171:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1171:177:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14774,
                  "nodeType": "ExpressionStatement",
                  "src": "1171:177:43"
                },
                {
                  "assignments": [
                    14776
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14776,
                      "mutability": "mutable",
                      "name": "assetId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14825,
                      "src": "1395:15:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 14775,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1395:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14785,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14780,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14744,
                            "src": "1434:5:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                              "typeString": "struct PAMTerms calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14781,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1441:5:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 14782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1441:15:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                              "typeString": "struct PAMTerms calldata"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 14778,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1423:3:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1423:10:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 14783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1423:34:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14777,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1413:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 14784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1413:45:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1395:63:43"
                },
                {
                  "assignments": [
                    14787
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14787,
                      "mutability": "mutable",
                      "name": "initialState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14825,
                      "src": "1519:25:43",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14786,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "1519:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14794,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14792,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14744,
                        "src": "1586:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14789,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14751,
                            "src": "1558:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14788,
                          "name": "IPAMEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32533,
                          "src": "1547:10:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                            "typeString": "type(contract IPAMEngine)"
                          }
                        },
                        "id": 14790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1547:18:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                          "typeString": "contract IPAMEngine"
                        }
                      },
                      "id": 14791,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computeInitialState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32448,
                      "src": "1547:38:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct PAMTerms memory) pure external returns (struct State memory)"
                      }
                    },
                    "id": 14793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1547:45:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1519:73:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14802,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14776,
                        "src": "1718:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14803,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14744,
                        "src": "1739:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14804,
                        "name": "initialState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14787,
                        "src": "1758:12:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14805,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14747,
                        "src": "1784:8:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14806,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14749,
                        "src": "1806:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14807,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14751,
                        "src": "1829:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14810,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "1857:4:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PAMActor_$14921",
                              "typeString": "contract PAMActor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_PAMActor_$14921",
                              "typeString": "contract PAMActor"
                            }
                          ],
                          "id": 14809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1849:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 14808,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1849:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14811,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1849:13:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14812,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14753,
                        "src": "1876:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14798,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "1675:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 14797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1667:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 14796,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1667:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 14799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1667:22:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14795,
                          "name": "IPAMRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14720,
                          "src": "1654:12:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IPAMRegistry_$14720_$",
                            "typeString": "type(contract IPAMRegistry)"
                          }
                        },
                        "id": 14800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1654:36:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPAMRegistry_$14720",
                          "typeString": "contract IPAMRegistry"
                        }
                      },
                      "id": 14801,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerAsset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14705,
                      "src": "1654:50:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_PAMTerms_$23006_memory_ptr_$_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 PAMTerms memory,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address) external"
                      }
                    },
                    "id": 14813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1654:237:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14814,
                  "nodeType": "ExpressionStatement",
                  "src": "1654:237:43"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14816,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14776,
                        "src": "1924:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14817,
                          "name": "ContractType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22559,
                          "src": "1933:12:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                            "typeString": "type(enum ContractType)"
                          }
                        },
                        "id": 14818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "PAM",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1933:16:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14819,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14749,
                          "src": "1951:9:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 14820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creatorObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7842,
                        "src": "1951:24:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14821,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14749,
                          "src": "1977:9:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 14822,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "counterpartyObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7846,
                        "src": "1977:29:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 14815,
                      "name": "InitializedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3007,
                      "src": "1907:16:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ContractType_$22559_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,enum ContractType,address,address)"
                      }
                    },
                    "id": 14823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1907:100:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14824,
                  "nodeType": "EmitStatement",
                  "src": "1902:105:43"
                }
              ]
            },
            "documentation": {
              "id": 14742,
              "nodeType": "StructuredDocumentation",
              "src": "470:479:43",
              "text": " @notice Derives initial state of the asset terms and stores together with\n terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\n @param terms asset specific terms\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine address of the ACTUS engine used for the spec. ContractType\n @param admin address of the admin of the asset (optional)"
            },
            "functionSelector": "3f8ffc9c",
            "id": 14826,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14744,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "983:23:43",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14743,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "983:8:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14747,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "1016:27:43",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14745,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1016:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 14746,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1016:9:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14749,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "1053:33:43",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14748,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1053:14:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14751,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "1096:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14750,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1096:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14753,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "1120:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14752,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:166:43"
            },
            "returnParameters": {
              "id": 14755,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1161:0:43"
            },
            "scope": 14921,
            "src": "954:1060:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3563
            ],
            "body": {
              "id": 14919,
              "nodeType": "Block",
              "src": "2202:944:43",
              "statements": [
                {
                  "assignments": [
                    14841
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14841,
                      "mutability": "mutable",
                      "name": "engine",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2212:14:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 14840,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2212:7:43",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14846,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14844,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14828,
                        "src": "2253:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 14842,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "2229:13:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 14843,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEngine",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4517,
                      "src": "2229:23:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 14845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2229:32:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2212:49:43"
                },
                {
                  "assignments": [
                    14848
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14848,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2271:21:43",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                        "typeString": "struct PAMTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14847,
                        "name": "PAMTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 23006,
                        "src": "2271:8:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                          "typeString": "struct PAMTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14858,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14856,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14828,
                        "src": "2341:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14852,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "2316:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 14851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2308:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 14850,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2308:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 14853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2308:22:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14849,
                          "name": "IPAMRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14720,
                          "src": "2295:12:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IPAMRegistry_$14720_$",
                            "typeString": "type(contract IPAMRegistry)"
                          }
                        },
                        "id": 14854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2295:36:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPAMRegistry_$14720",
                          "typeString": "contract IPAMRegistry"
                        }
                      },
                      "id": 14855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14712,
                      "src": "2295:45:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_PAMTerms_$23006_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct PAMTerms memory)"
                      }
                    },
                    "id": 14857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2295:54:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                      "typeString": "struct PAMTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2271:78:43"
                },
                {
                  "assignments": [
                    14860,
                    14862
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14860,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2360:19:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14859,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "2360:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14862,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2381:20:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14861,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2381:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14866,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14864,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14832,
                        "src": "2417:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14863,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "2405:11:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 14865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2405:19:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2359:65:43"
                },
                {
                  "assignments": [
                    14868
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14868,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2435:13:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 14867,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2435:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14890,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14873,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14848,
                        "src": "2505:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                          "typeString": "struct PAMTerms memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14874,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14830,
                        "src": "2524:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14875,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14832,
                        "src": "2543:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14877,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14828,
                            "src": "2602:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 14878,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14860,
                            "src": "2627:9:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14880,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14862,
                                "src": "2668:12:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14881,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14848,
                                  "src": "2682:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                    "typeString": "struct PAMTerms memory"
                                  }
                                },
                                "id": 14882,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22927,
                                "src": "2682:27:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14883,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14848,
                                  "src": "2711:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                    "typeString": "struct PAMTerms memory"
                                  }
                                },
                                "id": 14884,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22921,
                                "src": "2711:14:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14885,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14848,
                                  "src": "2727:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                    "typeString": "struct PAMTerms memory"
                                  }
                                },
                                "id": 14886,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22949,
                                "src": "2727:18:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 14879,
                              "name": "shiftCalcTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23056,
                              "src": "2654:13:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 14887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2654:92:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14876,
                          "name": "getExternalDataForPOF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3850,
                          "src": "2563:21:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 14888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2563:197:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                          "typeString": "struct PAMTerms memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14870,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14841,
                            "src": "2462:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14869,
                          "name": "IPAMEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32533,
                          "src": "2451:10:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                            "typeString": "type(contract IPAMEngine)"
                          }
                        },
                        "id": 14871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2451:18:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                          "typeString": "contract IPAMEngine"
                        }
                      },
                      "id": 14872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computePayoffForEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32476,
                      "src": "2451:40:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure external returns (int256)"
                      }
                    },
                    "id": 14889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2451:319:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2435:335:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14913,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14891,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14830,
                      "src": "2780:5:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14896,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14848,
                          "src": "2841:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 14897,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14830,
                          "src": "2860:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 14898,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14832,
                          "src": "2879:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14900,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14828,
                              "src": "2938:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14901,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14860,
                              "src": "2963:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 14903,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14862,
                                  "src": "3004:12:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14904,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14848,
                                    "src": "3018:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                      "typeString": "struct PAMTerms memory"
                                    }
                                  },
                                  "id": 14905,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22927,
                                  "src": "3018:27:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14906,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14848,
                                    "src": "3047:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                      "typeString": "struct PAMTerms memory"
                                    }
                                  },
                                  "id": 14907,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22921,
                                  "src": "3047:14:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14908,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14848,
                                    "src": "3063:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                      "typeString": "struct PAMTerms memory"
                                    }
                                  },
                                  "id": 14909,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22949,
                                  "src": "3063:18:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 14902,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "2990:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 14910,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2990:92:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14899,
                            "name": "getExternalDataForSTF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3793,
                            "src": "2899:21:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                            }
                          },
                          "id": 14911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2899:197:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14893,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14841,
                              "src": "2799:6:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 14892,
                            "name": "IPAMEngine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32533,
                            "src": "2788:10:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                              "typeString": "type(contract IPAMEngine)"
                            }
                          },
                          "id": 14894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2788:18:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                            "typeString": "contract IPAMEngine"
                          }
                        },
                        "id": 14895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "computeStateForEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32462,
                        "src": "2788:39:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure external returns (struct State memory)"
                        }
                      },
                      "id": 14912,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2788:318:43",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "src": "2780:326:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "id": 14914,
                  "nodeType": "ExpressionStatement",
                  "src": "2780:326:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 14915,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14830,
                        "src": "3125:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14916,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14868,
                        "src": "3132:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 14917,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3124:15:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "functionReturnParameters": 14839,
                  "id": 14918,
                  "nodeType": "Return",
                  "src": "3117:22:43"
                }
              ]
            },
            "documentation": null,
            "id": 14920,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14834,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2150:8:43"
            },
            "parameters": {
              "id": 14833,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14828,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2059:15:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14827,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2059:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14830,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2076:18:43",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14829,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2076:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14832,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2096:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14831,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2096:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2058:53:43"
            },
            "returnParameters": {
              "id": 14839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14836,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2176:12:43",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14835,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2176:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14838,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2190:6:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 14837,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2190:6:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2175:22:43"
            },
            "scope": 14921,
            "src": "2020:1126:43",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 14922,
        "src": "288:2860:43"
      }
    ],
    "src": "41:3107:43"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/PAMActor.sol",
    "exportedSymbols": {
      "PAMActor": [
        14921
      ]
    },
    "id": 14922,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14722,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:43"
      },
      {
        "id": 14723,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:43"
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "file": "@atpar/actus-solidity/contracts/Engines/PAM/IPAMEngine.sol",
        "id": 14724,
        "nodeType": "ImportDirective",
        "scope": 14922,
        "sourceUnit": 32534,
        "src": "101:68:43",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetActor/BaseActor.sol",
        "file": "../Base/AssetActor/BaseActor.sol",
        "id": 14725,
        "nodeType": "ImportDirective",
        "scope": 14922,
        "sourceUnit": 3852,
        "src": "171:42:43",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/PAM/IPAMRegistry.sol",
        "file": "./IPAMRegistry.sol",
        "id": 14726,
        "nodeType": "ImportDirective",
        "scope": 14922,
        "sourceUnit": 14721,
        "src": "214:28:43",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14728,
              "name": "BaseActor",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3851,
              "src": "309:9:43",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BaseActor_$3851",
                "typeString": "contract BaseActor"
              }
            },
            "id": 14729,
            "nodeType": "InheritanceSpecifier",
            "src": "309:9:43"
          }
        ],
        "contractDependencies": [
          3851,
          3868,
          7055,
          23277,
          24758,
          38376,
          38485
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 14727,
          "nodeType": "StructuredDocumentation",
          "src": "245:42:43",
          "text": " @title PAMActor\n @notice TODO"
        },
        "fullyImplemented": true,
        "id": 14921,
        "linearizedBaseContracts": [
          14921,
          3851,
          38485,
          38376,
          3868,
          23277,
          24758,
          7055
        ],
        "name": "PAMActor",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 14740,
              "nodeType": "Block",
              "src": "462:2:43",
              "statements": []
            },
            "documentation": null,
            "id": 14741,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 14736,
                    "name": "assetRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14731,
                    "src": "429:13:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 14737,
                    "name": "dataRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 14733,
                    "src": "444:12:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  }
                ],
                "id": 14738,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 14735,
                  "name": "BaseActor",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3851,
                  "src": "419:9:43",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BaseActor_$3851_$",
                    "typeString": "type(contract BaseActor)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "419:38:43"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14731,
                  "mutability": "mutable",
                  "name": "assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14741,
                  "src": "338:28:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14730,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "338:14:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14733,
                  "mutability": "mutable",
                  "name": "dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14741,
                  "src": "368:26:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                    "typeString": "contract IDataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14732,
                    "name": "IDataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7766,
                    "src": "368:13:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDataRegistry_$7766",
                      "typeString": "contract IDataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "337:58:43"
            },
            "returnParameters": {
              "id": 14739,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "462:0:43"
            },
            "scope": 14921,
            "src": "326:138:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 14825,
              "nodeType": "Block",
              "src": "1161:853:43",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 14771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 14762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 14757,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14751,
                            "src": "1192:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 14760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1210:1:43",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 14759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1202:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 14758,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1202:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 14761,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1202:10:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1192:20:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ContractType_$22559",
                            "typeString": "enum ContractType"
                          },
                          "id": 14770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 14764,
                                    "name": "engine",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14751,
                                    "src": "1224:6:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14763,
                                  "name": "IEngine",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32432,
                                  "src": "1216:7:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IEngine_$32432_$",
                                    "typeString": "type(contract IEngine)"
                                  }
                                },
                                "id": 14765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1216:15:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IEngine_$32432",
                                  "typeString": "contract IEngine"
                                }
                              },
                              "id": 14766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "contractType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 32431,
                              "src": "1216:28:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$__$returns$_t_enum$_ContractType_$22559_$",
                                "typeString": "function () pure external returns (enum ContractType)"
                              }
                            },
                            "id": 14767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1216:30:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14768,
                              "name": "ContractType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22559,
                              "src": "1250:12:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                                "typeString": "type(enum ContractType)"
                              }
                            },
                            "id": 14769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "PAM",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1250:16:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ContractType_$22559",
                              "typeString": "enum ContractType"
                            }
                          },
                          "src": "1216:50:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1192:74:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545950455f4f465f454e47494e455f554e535550504f52544544",
                        "id": 14772,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1280:58:43",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        },
                        "value": "ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_123f2ddb69b620f39925260df1d2897b486c610d154d10f9bd3fa9b554741bce",
                          "typeString": "literal_string \"ANNActor.initialize: CONTRACT_TYPE_OF_ENGINE_UNSUPPORTED\""
                        }
                      ],
                      "id": 14756,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1171:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 14773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1171:177:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14774,
                  "nodeType": "ExpressionStatement",
                  "src": "1171:177:43"
                },
                {
                  "assignments": [
                    14776
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14776,
                      "mutability": "mutable",
                      "name": "assetId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14825,
                      "src": "1395:15:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 14775,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1395:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14785,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14780,
                            "name": "terms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14744,
                            "src": "1434:5:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                              "typeString": "struct PAMTerms calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 14781,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1441:5:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 14782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1441:15:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                              "typeString": "struct PAMTerms calldata"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 14778,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1423:3:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1423:10:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 14783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1423:34:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14777,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1413:9:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 14784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1413:45:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1395:63:43"
                },
                {
                  "assignments": [
                    14787
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14787,
                      "mutability": "mutable",
                      "name": "initialState",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14825,
                      "src": "1519:25:43",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14786,
                        "name": "State",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22673,
                        "src": "1519:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                          "typeString": "struct State"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14794,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14792,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14744,
                        "src": "1586:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14789,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14751,
                            "src": "1558:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14788,
                          "name": "IPAMEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32533,
                          "src": "1547:10:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                            "typeString": "type(contract IPAMEngine)"
                          }
                        },
                        "id": 14790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1547:18:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                          "typeString": "contract IPAMEngine"
                        }
                      },
                      "id": 14791,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computeInitialState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32448,
                      "src": "1547:38:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$returns$_t_struct$_State_$22673_memory_ptr_$",
                        "typeString": "function (struct PAMTerms memory) pure external returns (struct State memory)"
                      }
                    },
                    "id": 14793,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1547:45:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1519:73:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14802,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14776,
                        "src": "1718:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14803,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14744,
                        "src": "1739:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14804,
                        "name": "initialState",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14787,
                        "src": "1758:12:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14805,
                        "name": "schedule",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14747,
                        "src": "1784:8:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14806,
                        "name": "ownership",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14749,
                        "src": "1806:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                          "typeString": "struct AssetOwnership calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14807,
                        "name": "engine",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14751,
                        "src": "1829:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14810,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "1857:4:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PAMActor_$14921",
                              "typeString": "contract PAMActor"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_PAMActor_$14921",
                              "typeString": "contract PAMActor"
                            }
                          ],
                          "id": 14809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1849:7:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 14808,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1849:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 14811,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1849:13:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14812,
                        "name": "admin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14753,
                        "src": "1876:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                          "typeString": "struct PAMTerms calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "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"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14798,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "1675:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 14797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1667:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 14796,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1667:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 14799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1667:22:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14795,
                          "name": "IPAMRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14720,
                          "src": "1654:12:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IPAMRegistry_$14720_$",
                            "typeString": "type(contract IPAMRegistry)"
                          }
                        },
                        "id": 14800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1654:36:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPAMRegistry_$14720",
                          "typeString": "contract IPAMRegistry"
                        }
                      },
                      "id": 14801,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerAsset",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14705,
                      "src": "1654:50:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_struct$_PAMTerms_$23006_memory_ptr_$_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 PAMTerms memory,struct State memory,bytes32[] memory,struct AssetOwnership memory,address,address,address) external"
                      }
                    },
                    "id": 14813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1654:237:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14814,
                  "nodeType": "ExpressionStatement",
                  "src": "1654:237:43"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14816,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14776,
                        "src": "1924:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14817,
                          "name": "ContractType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22559,
                          "src": "1933:12:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ContractType_$22559_$",
                            "typeString": "type(enum ContractType)"
                          }
                        },
                        "id": 14818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "PAM",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1933:16:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14819,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14749,
                          "src": "1951:9:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 14820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creatorObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7842,
                        "src": "1951:24:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 14821,
                          "name": "ownership",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14749,
                          "src": "1977:9:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                            "typeString": "struct AssetOwnership calldata"
                          }
                        },
                        "id": 14822,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "counterpartyObligor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7846,
                        "src": "1977:29:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_enum$_ContractType_$22559",
                          "typeString": "enum ContractType"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 14815,
                      "name": "InitializedAsset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3007,
                      "src": "1907:16:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_enum$_ContractType_$22559_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,enum ContractType,address,address)"
                      }
                    },
                    "id": 14823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1907:100:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14824,
                  "nodeType": "EmitStatement",
                  "src": "1902:105:43"
                }
              ]
            },
            "documentation": {
              "id": 14742,
              "nodeType": "StructuredDocumentation",
              "src": "470:479:43",
              "text": " @notice Derives initial state of the asset terms and stores together with\n terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry.\n @param terms asset specific terms\n @param schedule schedule of the asset\n @param ownership ownership of the asset\n @param engine address of the ACTUS engine used for the spec. ContractType\n @param admin address of the admin of the asset (optional)"
            },
            "functionSelector": "3f8ffc9c",
            "id": 14826,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 14754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14744,
                  "mutability": "mutable",
                  "name": "terms",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "983:23:43",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PAMTerms_$23006_calldata_ptr",
                    "typeString": "struct PAMTerms"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14743,
                    "name": "PAMTerms",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 23006,
                    "src": "983:8:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                      "typeString": "struct PAMTerms"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14747,
                  "mutability": "mutable",
                  "name": "schedule",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "1016:27:43",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14745,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1016:7:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 14746,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1016:9:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14749,
                  "mutability": "mutable",
                  "name": "ownership",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "1053:33:43",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AssetOwnership_$7849_calldata_ptr",
                    "typeString": "struct AssetOwnership"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14748,
                    "name": "AssetOwnership",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7849,
                    "src": "1053:14:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AssetOwnership_$7849_storage_ptr",
                      "typeString": "struct AssetOwnership"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14751,
                  "mutability": "mutable",
                  "name": "engine",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "1096:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14750,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1096:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14753,
                  "mutability": "mutable",
                  "name": "admin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14826,
                  "src": "1120:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14752,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "973:166:43"
            },
            "returnParameters": {
              "id": 14755,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1161:0:43"
            },
            "scope": 14921,
            "src": "954:1060:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              3563
            ],
            "body": {
              "id": 14919,
              "nodeType": "Block",
              "src": "2202:944:43",
              "statements": [
                {
                  "assignments": [
                    14841
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14841,
                      "mutability": "mutable",
                      "name": "engine",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2212:14:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 14840,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2212:7:43",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14846,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14844,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14828,
                        "src": "2253:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 14842,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3025,
                        "src": "2229:13:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 14843,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEngine",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4517,
                      "src": "2229:23:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 14845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2229:32:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2212:49:43"
                },
                {
                  "assignments": [
                    14848
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14848,
                      "mutability": "mutable",
                      "name": "terms",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2271:21:43",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                        "typeString": "struct PAMTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14847,
                        "name": "PAMTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 23006,
                        "src": "2271:8:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_storage_ptr",
                          "typeString": "struct PAMTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14858,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14856,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14828,
                        "src": "2341:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14852,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3025,
                                "src": "2316:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 14851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2308:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 14850,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2308:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 14853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2308:22:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14849,
                          "name": "IPAMRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14720,
                          "src": "2295:12:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IPAMRegistry_$14720_$",
                            "typeString": "type(contract IPAMRegistry)"
                          }
                        },
                        "id": 14854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2295:36:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPAMRegistry_$14720",
                          "typeString": "contract IPAMRegistry"
                        }
                      },
                      "id": 14855,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTerms",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 14712,
                      "src": "2295:45:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_PAMTerms_$23006_memory_ptr_$",
                        "typeString": "function (bytes32) view external returns (struct PAMTerms memory)"
                      }
                    },
                    "id": 14857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2295:54:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                      "typeString": "struct PAMTerms memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2271:78:43"
                },
                {
                  "assignments": [
                    14860,
                    14862
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14860,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2360:19:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 14859,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "2360:9:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14862,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2381:20:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 14861,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2381:7:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14866,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14864,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14832,
                        "src": "2417:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 14863,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "2405:11:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 14865,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2405:19:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2359:65:43"
                },
                {
                  "assignments": [
                    14868
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 14868,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 14919,
                      "src": "2435:13:43",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 14867,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2435:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 14890,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 14873,
                        "name": "terms",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14848,
                        "src": "2505:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                          "typeString": "struct PAMTerms memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14874,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14830,
                        "src": "2524:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14875,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14832,
                        "src": "2543:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14877,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14828,
                            "src": "2602:7:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 14878,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14860,
                            "src": "2627:9:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 14880,
                                "name": "scheduleTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14862,
                                "src": "2668:12:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14881,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14848,
                                  "src": "2682:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                    "typeString": "struct PAMTerms memory"
                                  }
                                },
                                "id": 14882,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "businessDayConvention",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22927,
                                "src": "2682:27:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14883,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14848,
                                  "src": "2711:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                    "typeString": "struct PAMTerms memory"
                                  }
                                },
                                "id": 14884,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "calendar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22921,
                                "src": "2711:14:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 14885,
                                  "name": "terms",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14848,
                                  "src": "2727:5:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                    "typeString": "struct PAMTerms memory"
                                  }
                                },
                                "id": 14886,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "maturityDate",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 22949,
                                "src": "2727:18:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                  "typeString": "enum BusinessDayConvention"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Calendar_$22506",
                                  "typeString": "enum Calendar"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 14879,
                              "name": "shiftCalcTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23056,
                              "src": "2654:13:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 14887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2654:92:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 14876,
                          "name": "getExternalDataForPOF",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3850,
                          "src": "2563:21:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                            "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                          }
                        },
                        "id": 14888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2563:197:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                          "typeString": "struct PAMTerms memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 14870,
                            "name": "engine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14841,
                            "src": "2462:6:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 14869,
                          "name": "IPAMEngine",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 32533,
                          "src": "2451:10:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                            "typeString": "type(contract IPAMEngine)"
                          }
                        },
                        "id": 14871,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2451:18:43",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                          "typeString": "contract IPAMEngine"
                        }
                      },
                      "id": 14872,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "computePayoffForEvent",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 32476,
                      "src": "2451:40:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure external returns (int256)"
                      }
                    },
                    "id": 14889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2451:319:43",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2435:335:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 14913,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 14891,
                      "name": "state",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 14830,
                      "src": "2780:5:43",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 14896,
                          "name": "terms",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14848,
                          "src": "2841:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 14897,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14830,
                          "src": "2860:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 14898,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14832,
                          "src": "2879:6:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14900,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14828,
                              "src": "2938:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 14901,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14860,
                              "src": "2963:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 14903,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14862,
                                  "src": "3004:12:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14904,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14848,
                                    "src": "3018:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                      "typeString": "struct PAMTerms memory"
                                    }
                                  },
                                  "id": 14905,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "businessDayConvention",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22927,
                                  "src": "3018:27:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14906,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14848,
                                    "src": "3047:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                      "typeString": "struct PAMTerms memory"
                                    }
                                  },
                                  "id": 14907,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "calendar",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22921,
                                  "src": "3047:14:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 14908,
                                    "name": "terms",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14848,
                                    "src": "3063:5:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                                      "typeString": "struct PAMTerms memory"
                                    }
                                  },
                                  "id": 14909,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "maturityDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 22949,
                                  "src": "3063:18:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                                    "typeString": "enum BusinessDayConvention"
                                  },
                                  {
                                    "typeIdentifier": "t_enum$_Calendar_$22506",
                                    "typeString": "enum Calendar"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 14902,
                                "name": "shiftCalcTime",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23056,
                                "src": "2990:13:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 14910,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2990:92:43",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 14899,
                            "name": "getExternalDataForSTF",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3793,
                            "src": "2899:21:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,enum EventType,uint256) view returns (bytes32)"
                            }
                          },
                          "id": 14911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2899:197:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_PAMTerms_$23006_memory_ptr",
                            "typeString": "struct PAMTerms memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                            "typeString": "struct State memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 14893,
                              "name": "engine",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14841,
                              "src": "2799:6:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 14892,
                            "name": "IPAMEngine",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32533,
                            "src": "2788:10:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IPAMEngine_$32533_$",
                              "typeString": "type(contract IPAMEngine)"
                            }
                          },
                          "id": 14894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2788:18:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPAMEngine_$32533",
                            "typeString": "contract IPAMEngine"
                          }
                        },
                        "id": 14895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "computeStateForEvent",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 32462,
                        "src": "2788:39:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_pure$_t_struct$_PAMTerms_$23006_memory_ptr_$_t_struct$_State_$22673_memory_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_struct$_State_$22673_memory_ptr_$",
                          "typeString": "function (struct PAMTerms memory,struct State memory,bytes32,bytes32) pure external returns (struct State memory)"
                        }
                      },
                      "id": 14912,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2788:318:43",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                        "typeString": "struct State memory"
                      }
                    },
                    "src": "2780:326:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                      "typeString": "struct State memory"
                    }
                  },
                  "id": 14914,
                  "nodeType": "ExpressionStatement",
                  "src": "2780:326:43"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 14915,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14830,
                        "src": "3125:5:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                          "typeString": "struct State memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 14916,
                        "name": "payoff",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 14868,
                        "src": "3132:6:43",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "id": 14917,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3124:15:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_State_$22673_memory_ptr_$_t_int256_$",
                      "typeString": "tuple(struct State memory,int256)"
                    }
                  },
                  "functionReturnParameters": 14839,
                  "id": 14918,
                  "nodeType": "Return",
                  "src": "3117:22:43"
                }
              ]
            },
            "documentation": null,
            "id": 14920,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "computeStateAndPayoffForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 14834,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2150:8:43"
            },
            "parameters": {
              "id": 14833,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14828,
                  "mutability": "mutable",
                  "name": "assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2059:15:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14827,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2059:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14830,
                  "mutability": "mutable",
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2076:18:43",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14829,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2076:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14832,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2096:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14831,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2096:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2058:53:43"
            },
            "returnParameters": {
              "id": 14839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14836,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2176:12:43",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$22673_memory_ptr",
                    "typeString": "struct State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 14835,
                    "name": "State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 22673,
                    "src": "2176:5:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$22673_storage_ptr",
                      "typeString": "struct State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14838,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 14920,
                  "src": "2190:6:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 14837,
                    "name": "int256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2190:6:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2175:22:43"
            },
            "scope": 14921,
            "src": "2020:1126:43",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 14922,
        "src": "288:2860:43"
      }
    ],
    "src": "41:3107:43"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "4": {
      "events": {
        "0xc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            }
          ],
          "name": "InitializedAsset",
          "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"
        },
        "0xd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum EventType",
              "name": "eventType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "scheduleTime",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "payoff",
              "type": "int256"
            }
          ],
          "name": "ProgressedAsset",
          "type": "event"
        },
        "0x4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "statusMessage",
              "type": "bytes32"
            }
          ],
          "name": "Status",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xE945448B3332626CfD85fe9Ed83B5Bf7f6934DBe",
      "transactionHash": "0x6854c2249eca83c308c5e1020f4ff216e7054b1b13181d70906a9ccff863ee1a"
    },
    "5": {
      "events": {
        "0xc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            }
          ],
          "name": "InitializedAsset",
          "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"
        },
        "0xd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum EventType",
              "name": "eventType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "scheduleTime",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "payoff",
              "type": "int256"
            }
          ],
          "name": "ProgressedAsset",
          "type": "event"
        },
        "0x4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "statusMessage",
              "type": "bytes32"
            }
          ],
          "name": "Status",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7a6B564eA51287D6F89C821AEca246550781f544",
      "transactionHash": "0x4d366c312e2330a886dc3b53993ada8450cebce9fb755621073abe2449dfe15a"
    },
    "1994": {
      "events": {
        "0xc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            }
          ],
          "name": "InitializedAsset",
          "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"
        },
        "0xd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e9": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "enum EventType",
              "name": "eventType",
              "type": "uint8"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "scheduleTime",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "int256",
              "name": "payoff",
              "type": "int256"
            }
          ],
          "name": "ProgressedAsset",
          "type": "event"
        },
        "0x4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "bytes32",
              "name": "assetId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "internalType": "bytes32",
              "name": "statusMessage",
              "type": "bytes32"
            }
          ],
          "name": "Status",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xd40064F0D1f16478083ceee9949637880b309d27",
      "transactionHash": "0xe465d6396ceb949457815a1473898b04949884c28c9f0b8b6151a3d8a2b0eb9e"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:17.990Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),bytes32[],(address,address,address,address),address,address)": {
        "params": {
          "admin": "address of the admin of the asset (optional)",
          "engine": "address of the ACTUS engine used for the spec. ContractType",
          "ownership": "ownership of the asset",
          "schedule": "schedule of the asset",
          "terms": "asset specific terms"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "progress(bytes32)": {
        "details": "Emits ProgressedAsset if the state of the asset was updated.",
        "params": {
          "assetId": "id of the asset"
        }
      },
      "progressWith(bytes32,bytes32)": {
        "details": "Emits ProgressedAsset if the state of the asset was updated.",
        "params": {
          "_event": "the unscheduled event",
          "assetId": "id of the asset"
        }
      },
      "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."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "title": "PAMActor",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "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"
      },
      "initialize((uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,address,address,bytes32,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool),(uint256,uint8,uint8,bool)),bytes32[],(address,address,address,address),address,address)": {
        "notice": "Derives initial state of the asset terms and stores together with terms, schedule, ownership, engine, admin of the asset in the contract types specific AssetRegistry."
      },
      "progress(bytes32)": {
        "notice": "Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from either a prev. pending event, an event generated based on the current state of an underlying asset or the assets schedule."
      },
      "progressWith(bytes32,bytes32)": {
        "notice": "Proceeds with the next state of the asset based on the terms, the last state, market object data and the settlement status of current obligation, derived from a provided (unscheduled) event Reverts if the provided event violates the order of events."
      },
      "shiftCalcTime(uint256,uint8,uint8,uint256)": {
        "notice": "Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
      }
    },
    "notice": "TODO",
    "version": 1
  }
}