{
  "contractName": "CEGActor",
  "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 FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractPerformance",
              "name": "creditEventTypeCovered",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "coverageOfCreditEnhancement",
              "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": "cycleOfFee",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_1",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "object",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "object2",
                  "type": "bytes32"
                },
                {
                  "internalType": "enum ContractReferenceType",
                  "name": "_type",
                  "type": "uint8"
                },
                {
                  "internalType": "enum ContractReferenceRole",
                  "name": "role",
                  "type": "uint8"
                }
              ],
              "internalType": "struct ContractReference",
              "name": "contractReference_2",
              "type": "tuple"
            }
          ],
          "internalType": "struct CEGTerms",
          "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 FeeBasis\",\"name\":\"feeBasis\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractPerformance\",\"name\":\"creditEventTypeCovered\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"settlementCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contractDealDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"statusDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"purchaseDate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cycleAnchorDateOfFee\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"notionalPrincipal\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"delinquencyRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeAccrued\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"feeRate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"priceAtPurchaseDate\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"coverageOfCreditEnhancement\",\"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\":\"cycleOfFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_1\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"object\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"object2\",\"type\":\"bytes32\"},{\"internalType\":\"enum ContractReferenceType\",\"name\":\"_type\",\"type\":\"uint8\"},{\"internalType\":\"enum ContractReferenceRole\",\"name\":\"role\",\"type\":\"uint8\"}],\"internalType\":\"struct ContractReference\",\"name\":\"contractReference_2\",\"type\":\"tuple\"}],\"internalType\":\"struct CEGTerms\",\"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,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),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\":\"CEGActor\",\"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,address,address,uint256,uint256,uint256,uint256,uint256,int256,int256,int256,int256,int256,int256,(uint256,uint8,bool),(uint256,uint8,bool),(uint256,uint8,uint8,bool),(bytes32,bytes32,uint8,uint8),(bytes32,bytes32,uint8,uint8)),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/CEG/CEGActor.sol\":\"CEGActor\"},\"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/CEG/CEGActor.sol\":{\"keccak256\":\"0x27865b1ec76293474de13d8ac7294f6861733d56fa6bb3350367e22535addcaa\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://791300b565c92038e2853ffdee460705774fc6c9ec4c400358d9a84d3956ccb0\",\"dweb:/ipfs/QmNNTNSGW21qp3prNJChoBSMbJTJHdTWNYGx25A5D4TtEN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/CEG/ICEGRegistry.sol\":{\"keccak256\":\"0xbb03daf61f217e6a9c241e5df143c094a8adfe2b0b77b739936d3c9ef0e1701d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f0248df70c8c941a9961bdb2ace085223aeb6965680c3d7f4326397aa61a5f86\",\"dweb:/ipfs/QmWYTwGP1je7WhMNSmKm6NDbdVJzgz9CqgtRf7vYMXKu8M\"]},\"@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/CEG/ICEGEngine.sol\":{\"keccak256\":\"0xedc41629661d186ac7b0a91d13d1dec18f0a6b94596dca992e1a0c6fd2ef1456\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d88db090aa0494d8e8c33b93cd1f4eb96218b62b8d3afbc5fde945d78f8a898\",\"dweb:/ipfs/Qma6P3wHn4smrjRT79QXPGb5zjzkckgYC9ys7XFdKD23n3\"]},\"@atpar/actus-solidity/contracts/Engines/IEngine.sol\":{\"keccak256\":\"0xdee7e7d2f233c108231be14130dc2dbcf8eb0374636034f75c330a4cd3e1c7cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0fe8e1c0c4d447b4b180f53574016ff852af90faa1230be5b4c81464b9b5ffc8\",\"dweb:/ipfs/QmctLgYPvacjTzNS7iJBDkXjEzdbD4GDkVnZE9FJa26oX4\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162004012380380620040128339810160408190526200003491620000ce565b818160006200004b6001600160e01b03620000ca16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905550620001259050565b3390565b60008060408385031215620000e1578182fd5b8251620000ee816200010c565b602084015190925062000101816200010c565b809150509250929050565b6001600160a01b03811681146200012257600080fd5b50565b613edd80620001356000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e05a66e011610066578063e05a66e0146101e0578063e726d680146101f3578063f2fde38b14610206578063f5586e0514610219576100f5565b80638da5cb5b146101a8578063979d7e86146101bd578063a39c1d6b146101c5578063ce892c97146101cd576100f5565b8063715018a6116100d3578063715018a61461015957806372540003146101615780637aebd2a814610182578063811322fb14610195576100f5565b8063645a26bd146100fa5780636778e0e9146101245780636b6ba66414610144575b600080fd5b61010d610108366004612959565b61022c565b60405161011b929190613353565b60405180910390f35b610137610132366004612912565b610245565b60405161011b919061336c565b610157610152366004612989565b610270565b005b610157610525565b61017461016f366004612959565b6105a4565b60405161011b929190613637565b610157610190366004612959565b6105cd565b6101376101a33660046129e2565b61082b565b6101b0610839565b60405161011b9190613301565b6101b0610848565b6101b0610857565b6101576101db366004612ab2565b610866565b6101376101ee3660046129fe565b610ae8565b610137610201366004612e37565b610b06565b6101576102143660046128da565b610c5b565b610137610227366004612e37565b610d11565b606081901c6bffffffffffffffffffffffff8216915091565b6bffffffffffffffffffffffff19606083901b166bffffffffffffffffffffffff8216175b92915050565b60015460405163747be51f60e11b81526001600160a01b039091169063e8f7ca3e906102a29085903390600401613375565b602060405180830381600087803b1580156102bc57600080fd5b505af11580156102d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f4919061293d565b6103195760405162461bcd60e51b8152600401610310906138be565b60405180910390fd5b60015460405163f52f84e160e01b81526000916001600160a01b03169063f52f84e19061034a90869060040161336c565b60206040518083038186803b15801561036257600080fd5b505afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190612971565b146103b75760405162461bcd60e51b815260040161031090613acd565b600154604051631d7a1ab960e21b81526000916001600160a01b0316906375e86ae4906103e890869060040161336c565b60206040518083038186803b15801561040057600080fd5b505afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104389190612971565b146104555760405162461bcd60e51b815260040161031090613870565b60015460405163b828204160e01b81526000916104dc916001600160a01b039091169063b82820419061048c90879060040161336c565b60206040518083038186803b1580156104a457600080fd5b505afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016f9190612971565b91505060006104ea836105a4565b9150508115806104f957508181105b6105155760405162461bcd60e51b81526004016103109061372b565b61051f8484610d85565b50505050565b61052d61131c565b6000546001600160a01b0390811691161461055a5760405162461bcd60e51b8152600401610310906139ff565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c8111156105b857fe5b92505067ffffffffffffffff83169050915091565b600154604051631392c59160e11b81526001600160a01b03909116906327258b22906105fd90849060040161336c565b60206040518083038186803b15801561061557600080fd5b505afa158015610629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064d919061293d565b6106695760405162461bcd60e51b815260040161031090613909565b600154604051630316dd6960e21b81526000916001600160a01b031690630c5b75a49061069a90859060040161336c565b602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ec9190612971565b90508061077657600154604051631d7a1ab960e21b81526001600160a01b03909116906375e86ae49061072390859060040161336c565b60206040518083038186803b15801561073b57600080fd5b505afa15801561074f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107739190612971565b90505b80610800576001546040516361db73e160e11b81526001600160a01b039091169063c3b6e7c2906107ab90859060040161336c565b602060405180830381600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fd9190612971565b90505b8061081d5760405162461bcd60e51b8152600401610310906137da565b6108278282610d85565b5050565b600081601c81111561026a57fe5b6000546001600160a01b031690565b6001546001600160a01b031681565b6002546001600160a01b031681565b6001600160a01b038216158015906108f957506010826001600160a01b031663cb2ef6f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156108b457600080fd5b505afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec91906129c6565b60128111156108f757fe5b145b6109155760405162461bcd60e51b815260040161031090613671565b6000864260405160200161092a929190613bbc565b60408051601f1981840301815291905280516020909101209050600361095861046089016104408a016129aa565b600481111561096357fe5b141561098b576103e087013561098b5760405162461bcd60e51b8152600401610310906136ce565b610993612553565b6040516367b5811760e01b81526001600160a01b038516906367b58117906109bf908b90600401613bad565b6102806040518083038186803b1580156109d857600080fd5b505afa1580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a109190612d3a565b6001546040516318d9c07160e21b81529192506001600160a01b03169063636701c490610a519085908c9086908d908d908d908d9030908e90600401613504565b600060405180830381600087803b158015610a6b57600080fd5b505af1158015610a7f573d6000803e3d6000fd5b508492507fc5df678b84aa92f5f59981df8c9997b366d886de25771c5f753015c2e14e907a915060109050610ab760208901896128da565b610ac760608a0160408b016128da565b604051610ad69392919061360b565b60405180910390a25050505050505050565b60008160f884601c811115610af957fe5b60ff16901b179392505050565b600081851415610b17575083610c53565b6001846008811115610b2557fe5b1480610b3c57506003846008811115610b3a57fe5b145b15610b5257610b4b8584611320565b9050610c53565b6002846008811115610b6057fe5b1480610b7757506004846008811115610b7557fe5b145b15610bbb576000610b888685611320565b9050610b938661137c565b610b9c8261137c565b1415610ba9579050610c53565b610bb38685611394565b915050610c53565b6005846008811115610bc957fe5b1480610be057506007846008811115610bde57fe5b145b15610bef57610b4b8584611394565b6006846008811115610bfd57fe5b1480610c1457506008846008811115610c1257fe5b145b15610c50576000610c258685611394565b9050610c308661137c565b610c398261137c565b1415610c46579050610c53565b610bb38685611320565b50835b949350505050565b610c6361131c565b6000546001600160a01b03908116911614610c905760405162461bcd60e51b8152600401610310906139ff565b6001600160a01b038116610cb65760405162461bcd60e51b815260040161031090613776565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006003846008811115610d2157fe5b1480610d3857506004846008811115610d3657fe5b145b80610d4e57506007846008811115610d4c57fe5b145b80610d6457506008846008811115610d6257fe5b145b15610d70575083610c53565b610d7c85858585610b06565b95945050505050565b610d8d612553565b6001546040516309648a9d60e01b81526001600160a01b03909116906309648a9d90610dbd90869060040161336c565b6102806040518083038186803b158015610dd657600080fd5b505afa158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e9190612d3a565b9050600081516005811115610e1f57fe5b1480610e375750600181516005811115610e3557fe5b145b80610e4e5750600281516005811115610e4c57fe5b145b610e6a5760405162461bcd60e51b815260040161031090613b18565b600081516005811115610e7957fe5b14610f0257600154604051631ba316dd60e11b81526001600160a01b03909116906337462dba90610eae90869060040161336c565b6102806040518083038186803b158015610ec757600080fd5b505afa158015610edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eff9190612d3a565b90505b600080610f0e846105a4565b60015460405163ecef557760e01b815292945090925042916110b89184916001600160a01b039091169063ecef557790610f4c908b9060040161345d565b60206040518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190612e7e565b60ff166008811115610faa57fe5b60015460405163ecef557760e01b81526001600160a01b039091169063ecef557790610fda908c906004016134c5565b60206040518083038186803b158015610ff257600080fd5b505afa158015611006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102a9190612e7e565b60ff16600181111561103857fe5b60015460405163135b9f4d60e01b81526001600160a01b039091169063135b9f4d90611068908d90600401613484565b60206040518083038186803b15801561108057600080fd5b505afa158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102019190612971565b11156110d65760405162461bcd60e51b815260040161031090613a7a565b6110de612553565b60006110eb8786886113e2565b9150915060006110fc888884611668565b9050806112005760008651600581111561111257fe5b141561117d5760015460405163067fe5d760e41b81526001600160a01b03909116906367fe5d709061114a908b908a906004016135f6565b600060405180830381600087803b15801561116457600080fd5b505af1158015611178573d6000803e3d6000fd5b505050505b60015460405163d981e77360e01b81526001600160a01b039091169063d981e773906111af908b908b9060040161338c565b600060405180830381600087803b1580156111c957600080fd5b505af11580156111dd573d6000803e3d6000fd5b5050505060006111ee600b86610ae8565b90506111fb8985836113e2565b509350505b600154604051631f61c37560e21b81526001600160a01b0390911690637d870dd490611232908b9087906004016135f6565b600060405180830381600087803b15801561124c57600080fd5b505af1158015611260573d6000803e3d6000fd5b50505050801515600114156112d65760015460405163de07a17360e01b81526001600160a01b039091169063de07a173906112a3908b908b90879060040161339a565b600060405180830381600087803b1580156112bd57600080fd5b505af11580156112d1573d6000803e3d6000fd5b505050505b877fd255be8589971f117e0e4377177282fb7cce66e378bfb1b7eafddd05e4f181e960018315151461130957600b61130b565b865b8685604051610ad69392919061364f565b3390565b6000600182600181111561133057fe5b14156113755761133f83611a9e565b6006141561135957611352836002611ab1565b905061026a565b61136283611a9e565b6007141561137557611352836001611ab1565b5090919050565b600061138c620151808304611ac6565b509392505050565b600060018260018111156113a457fe5b1415611375576113b383611a9e565b600614156113c657611352836001611b5c565b6113cf83611a9e565b6007141561137557611352836002611b5c565b6113ea612553565b60015460405163ee43eda160e01b815260009182916001600160a01b039091169063ee43eda19061141f90899060040161336c565b60206040518083038186803b15801561143757600080fd5b505afa15801561144b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146f91906128f6565b90506114796125ed565b6001546040516335f1cded60e11b81526001600160a01b0390911690636be39bda906114a9908a9060040161336c565b6104e06040518083038186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190612b70565b9050600080611508876105a4565b915091506000846001600160a01b0316631f252723858b8b6115438f8961153e8a8d608001518e602001518f6101800151610d11565b611b71565b6040518563ffffffff1660e01b81526004016115629493929190613bd9565b60206040518083038186803b15801561157a57600080fd5b505afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b29190612971565b9050846001600160a01b031663392aef8e858b8b6115e98f896115e48a8d608001518e602001518f6101800151610d11565b611d68565b6040518563ffffffff1660e01b81526004016116089493929190613bd9565b6102806040518083038186803b15801561162157600080fd5b505afa158015611635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116599190612d3a565b9a909950975050505050505050565b6000831580159061167857508215155b6116945760405162461bcd60e51b8152600401610310906139a2565b816116a157506001611a97565b60015460405163eb01255960e01b81526000916001600160a01b03169063eb012559906116d29088906004016133d5565b60206040518083038186803b1580156116ea57600080fd5b505afa1580156116fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172291906128f6565b905061172c6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d769061175c9089906004016133b0565b60806040518083038186803b15801561177457600080fd5b505afa158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190612d1f565b90506004816060015160048111156117c057fe5b14156117d55780516117d19061022c565b5091505b6117dd612707565b60015460405163e50e0ef760e01b81526001600160a01b039091169063e50e0ef79061180d908a9060040161336c565b60806040518083038186803b15801561182557600080fd5b505afa158015611839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185d9190612a4a565b9050600080600087131561188c575060408201516001600160a01b03821661188757826020015191505b6118a5565b5081516001600160a01b0382166118a557826060015191505b60008088136118b85787600019026118ba565b875b905080866001600160a01b031663dd62ed3e84306040518363ffffffff1660e01b81526004016118eb929190613315565b60206040518083038186803b15801561190357600080fd5b505afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b9190612971565b10806119c257506040516370a0823160e01b815281906001600160a01b038816906370a0823190611970908690600401613301565b60206040518083038186803b15801561198857600080fd5b505afa15801561199c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c09190612971565b105b15611a0c57897f4f269a19b64cfff0bdee7fd3cdaec44e1fe38ce2ff55d3009a89fac6ecbe9f2c6040516119f5906137bc565b60405180910390a260009650505050505050611a97565b6040516323b872dd60e01b81526001600160a01b038716906323b872dd90611a3c9085908790869060040161332f565b602060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8e919061293d565b96505050505050505b9392505050565b6007620151809091046003010660010190565b62015180810282018281101561026a57600080fd5b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611b1d57fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b62015180810282038281111561026a57600080fd5b60015460405163eb01255960e01b815260009182916001600160a01b039091169063eb01255990611ba69088906004016133d5565b60206040518083038186803b158015611bbe57600080fd5b505afa158015611bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf691906128f6565b60015460405163eb01255960e01b81529192506000916001600160a01b039091169063eb01255990611c2c908990600401613439565b60206040518083038186803b158015611c4457600080fd5b505afa158015611c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7c91906128f6565b9050806001600160a01b0316826001600160a01b031614611d5f5760025460405160009182916001600160a01b03909116906308a4ec1090611cc49087908790602001613315565b60405160208183030381529060405280519060200120886040518363ffffffff1660e01b8152600401611cf892919061338c565b604080518083038186803b158015611d0f57600080fd5b505afa158015611d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d479190612a1b565b915091508015611d5c57509250611a97915050565b50505b50509392505050565b6000600d83601c811115611d7857fe5b1415611e965760025460015460405163354770f760e21b815260009283926001600160a01b03918216926308a4ec10929091169063d51dc3dc90611dc0908b9060040161340a565b60206040518083038186803b158015611dd857600080fd5b505afa158015611dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e109190612971565b866040518363ffffffff1660e01b8152600401611e2e92919061338c565b604080518083038186803b158015611e4557600080fd5b505afa158015611e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7d9190612a1b565b915091508015611e8f57509050611a97565b505061248d565b600b83601c811115611ea457fe5b1415611eb1575042611a97565b601a83601c811115611ebf57fe5b14156121f257611ecd6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d7690611efd9088906004016134df565b60806040518083038186803b158015611f1557600080fd5b505afa158015611f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4d9190612d1f565b9050600381606001516004811115611f6157fe5b14156120925780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611f9a90859060040161336c565b60206040518083038186803b158015611fb257600080fd5b505afa158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fea919061293d565b151560011461200b5760405162461bcd60e51b81526004016103109061381b565b604051636a899b9b60e01b81526001600160a01b03821690636a899b9b906120379085906004016134a2565b60206040518083038186803b15801561204f57600080fd5b505afa158015612063573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120879190612971565b9350611a9792505050565b61209a6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d76906120ca9089906004016133b0565b60806040518083038186803b1580156120e257600080fd5b505afa1580156120f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211a9190612d1f565b905060028160400151600481111561212e57fe5b14801561214a575060008160600151600481111561214857fe5b145b15611e8f576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec1091612185918a9060040161338c565b604080518083038186803b15801561219c57600080fd5b505afa1580156121b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d49190612a1b565b9150915080156121e957509250611a97915050565b5050505061248d565b601783601c81111561220057fe5b141561248d5761220e6126e0565b600154604051635e353ebb60e11b81526001600160a01b039091169063bc6a7d769061223e9088906004016134df565b60806040518083038186803b15801561225657600080fd5b505afa15801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e9190612d1f565b90506002816040015160048111156122a257fe5b1480156122be57506000816060015160048111156122bc57fe5b145b15612483576002548151604051628a4ec160e41b815260009283926001600160a01b03909116916308a4ec10916122f991899060040161338c565b604080518083038186803b15801561231057600080fd5b505afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190612a1b565b600254855160015460405163135b9f4d60e01b815294965092945060009384936001600160a01b03938416936308a4ec10939291169063135b9f4d90612392908f906004016133ef565b60206040518083038186803b1580156123aa57600080fd5b505afa1580156123be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e29190612971565b6040518363ffffffff1660e01b81526004016123ff92919061338c565b604080518083038186803b15801561241657600080fd5b505afa15801561242a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244e9190612a1b565b9150915082801561245c5750805b1561247e57612471848363ffffffff61249716565b9550611a97945050505050565b505050505b5060009050611a97565b5060009392505050565b6000816124b65760405162461bcd60e51b815260040161031090613b69565b826124c35750600061026a565b670de0b6b3a7640000838102908482816124d957fe5b05146124f75760405162461bcd60e51b815260040161031090613a34565b8260001914801561250b5750600160ff1b84145b156125285760405162461bcd60e51b815260040161031090613a34565b600083828161253357fe5b05905080610c535760405162461bcd60e51b815260040161031090613951565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051610340810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016126a761272e565b81526020016126b461272e565b81526020016126c1612751565b81526020016126ce6126e0565b81526020016126db6126e0565b905290565b604080516080810182526000808252602082018190529091820190815260200160006126db565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081019091526000808252602082019081526020016000612744565b803561026a81613e29565b805161026a81613e29565b805161026a81613e4c565b805161026a81613e59565b805161026a81613e66565b805161026a81613e80565b803561026a81613e8d565b805161026a81613e8d565b6000608082840312156127db578081fd5b50919050565b6000608082840312156127f2578081fd5b6127fc6080613da0565b90508151815260208201516020820152604082015161281a81613e73565b6040820152606082015161282d81613e73565b606082015292915050565b600060808284031215612849578081fd5b6128536080613da0565b905081518152602082015161286781613e66565b6020820152604082015161287a81613e59565b6040820152606082015161282d81613e3e565b60006060828403121561289e578081fd5b6128a86060613da0565b90508151815260208201516128bc81613e66565b602082015260408201516128cf81613e3e565b604082015292915050565b6000602082840312156128eb578081fd5b8135611a9781613e29565b600060208284031215612907578081fd5b8151611a9781613e29565b60008060408385031215612924578081fd5b823561292f81613e29565b946020939093013593505050565b60006020828403121561294e578081fd5b8151611a9781613e3e565b60006020828403121561296a578081fd5b5035919050565b600060208284031215612982578081fd5b5051919050565b6000806040838503121561299b578182fd5b50508035926020909101359150565b6000602082840312156129bb578081fd5b8135611a9781613e73565b6000602082840312156129d7578081fd5b8151611a9781613e8d565b6000602082840312156129f3578081fd5b8135611a9781613e9a565b60008060408385031215612a10578182fd5b823561292f81613e9a565b60008060408385031215612a2d578182fd5b825191506020830151612a3f81613e3e565b809150509250929050565b600060808284031215612a5b578081fd5b612a656080613da0565b8251612a7081613e29565b81526020830151612a8081613e29565b60208201526040830151612a9381613e29565b60408201526060830151612aa681613e29565b60608201529392505050565b6000806000806000808688036105c0811215612acc578283fd5b6104e080821215612adb578384fd5b889750870135905067ffffffffffffffff80821115612af8578384fd5b8189018a601f820112612b09578485fd5b8035925081831115612b19578485fd5b8a60208085028301011115612b2c578485fd5b6020019650909450612b4490508861050089016127ca565b9250612b54886105808901612772565b9150612b64886105a08901612772565b90509295509295509295565b60006104e08284031215612b82578081fd5b612b8d610340613da0565b612b9784846127bf565b8152612ba68460208501612793565b6020820152612bb884604085016127a9565b6040820152612bca846060850161279e565b6060820152612bdc8460808501612788565b6080820152612bee8460a08501612793565b60a0820152612c008460c08501612793565b60c0820152612c128460e0850161279e565b60e0820152610100612c268582860161277d565b90820152610120612c398585830161277d565b908201526101408381015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526102408084015190820152610260808401519082015261028080840151908201526102a0612cc58582860161288d565b90820152610300612cd88585830161288d565b6102c0830152612cec856103608601612838565b6102e0830152612d00856103e086016127e1565b90820152612d128461046085016127e1565b6103208201529392505050565b600060808284031215612d30578081fd5b611a9783836127e1565b6000610280808385031215612d4d578182fd5b612d5681613da0565b612d60858561279e565b81526020848101519082015260408085015190820152606080850151908201526080808501519082015260a0808501519082015260c0808501519082015260e08085015190820152610100808501519082015261012080850151908201526101408085015190820152610160808501519082015261018080850151908201526101a080850151908201526101c080850151908201526101e080850151908201526102008085015190820152610220808501519082015261024080850151908201526102609384015193810193909352509092915050565b60008060008060808587031215612e4c578182fd5b843593506020850135612e5e81613e4c565b92506040850135612e6e81613e59565b9396929550929360600135925050565b600060208284031215612e8f578081fd5b815160ff81168114611a97578182fd5b6001600160a01b03169052565b60098110612eb657fe5b9052565b612eb681613e08565b612eb681613e15565b600d8110612eb657fe5b60138110612eb657fe5b60208101612ef783612ef283856127b4565b612ed6565b612f018183613de1565b612f0e6020850182612eba565b5050612f1d6040820182613dfb565b612f2a6040840182612ecc565b50612f386060820182613dee565b612f456060840182612ec3565b50612f536080820182613dd4565b612f606080840182612eac565b50612f6e60a0820182613de1565b612f7b60a0840182612eba565b50612f8960c0820182613de1565b612f9660c0840182612eba565b50612fa460e0820182613dee565b612fb160e0840182612ec3565b50610100612fc181830183613dc7565b612fcd82850182612e9f565b5050610120612fde81830183613dc7565b612fea82850182612e9f565b50506101408181013590830152610160808201359083015261018080820135908301526101a080820135908301526101c080820135908301526101e08082013590830152610200808201359083015261022080820135908301526102408082013590830152610260808201359083015261028080820135908301526102a06130768184018284016131cc565b506103006130888184018284016131cc565b5061036061309a81840182840161313e565b506103e06130ac8184018284016130c3565b506104606130be8184018284016130c3565b505050565b803582526020810135602083015260408101356130df81613e73565b6130e881613e1f565b604083015260608101356130fb81613e73565b61310481613e1f565b806060840152505050565b8051825260208101516020830152604081015161312b81613e1f565b6040830152606081015161310481613e1f565b80358252602081013561315081613e66565b61315981613e15565b6020830152604081013561316c81613e59565b61317581613e08565b6040830152606081013561318881613e3e565b8015156060840152505050565b8051825260208101516131a781613e15565b602083015260408101516131ba81613e08565b60408301526060908101511515910152565b8035825260208101356131de81613e66565b6131e781613e15565b602083015260408101356131fa81613e3e565b8015156040840152505050565b80518252602081015161321981613e15565b60208301526040908101511515910152565b613236828251612ec3565b6020818101519083015260408082015190830152606080820151908301526080808201519083015260a0808201519083015260c0808201519083015260e08082015190830152610100808201519083015261012080820151908301526101408082015190830152610160808201519083015261018080820151908301526101a080820151908301526101c080820151908301526101e0808201519083015261020080820151908301526102208082015190830152610240808201519083015261026090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b9081527231b7b73a3930b1ba2932b332b932b731b2af9960691b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b9081526869737375654461746560b81b602082015260400190565b9081527f6d61726b65744f626a656374436f646552617465526573657400000000000000602082015260400190565b90815271736574746c656d656e7443757272656e637960701b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b90815272636f6e74726163745265666572656e63655f3160681b602082015260400190565b60006108808b8352613519602084018c612ee0565b61352761050084018b61322b565b610780830181905282018790526108a06001600160fb1b0388111561354a578182fd5b60208802808a83860137830101908152853561356581613e29565b6001600160a01b039081166107a08401526040870190806135898360208b01612772565b166107c0850152606088018161359f8285612772565b166107e0860152816135b460808b0183612772565b166108008601525050506135cc610820830186612e9f565b6135da610840830185612e9f565b6135e8610860830184612e9f565b9a9950505050505050505050565b8281526102a08101611a97602083018461322b565b606081016013851061361957fe5b9381526001600160a01b039283166020820152911660409091015290565b60408101601d841061364557fe5b9281526020015290565b60608101601d851061365d57fe5b938152602081019290925260409091015290565b60208082526038908201527f414e4e4163746f722e696e697469616c697a653a20434f4e54524143545f545960408201527f50455f4f465f454e47494e455f554e535550504f525445440000000000000000606082015260800190565b60208082526038908201527f4345474143746f722e696e697469616c697a653a20494e56414c49445f434f4e60408201527f54524143545f5245464552454e43455f315f4f424a4543540000000000000000606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f454160408201526a149312515497d15591539560aa1b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b71494e53554646494349454e545f46554e445360701b815260200190565b60208082526021908201527f426173654163746f722e70726f67726573733a204e4f5f4e4558545f4556454e6040820152601560fa1b606082015260800190565b60208082526035908201527f426173654163746f722e67657445787465726e616c44617461466f725354463a604082015274081054d4d15517d113d154d7d393d517d1561254d5605a1b606082015260800190565b6020808252602e908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f554e60408201526d1111549316525391d7d15591539560921b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20554e415554484f5260408201526a24ad22a22fa9a2a72222a960a91b606082015260800190565b60208082526028908201527f426173654163746f722e70726f67726573733a2041535345545f444f45535f4e60408201526713d517d1561254d560c21b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252603b908201527f426173654163746f722e736574746c655061796f6666466f724576656e743a2060408201527f494e56414c49445f46554e4354494f4e5f504152414d45544552530000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526033908201527f414e4e4163746f722e70726f636573734576656e743a204e4558545f4556454e6040820152721517d393d517d6515517d4d0d2115115531151606a1b606082015260800190565b6020808252602b908201527f426173654163746f722e70726f6772657373576974683a20464f554e445f504560408201526a1391125391d7d15591539560aa1b606082015260800190565b60208082526031908201527f426173654163746f722e70726f636573734576656e743a2041535345545f524560408201527041434845445f46494e414c5f535441544560781b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b6104e0810161026a8284612ee0565b6105008101613bcb8285612ee0565b826104e08301529392505050565b60006107a082019050613bed828751612ed6565b6020860151613bff6020840182612eba565b506040860151613c126040840182612ecc565b506060860151613c256060840182612ec3565b506080860151613c386080840182612eac565b5060a0860151613c4b60a0840182612eba565b5060c0860151613c5e60c0840182612eba565b5060e0860151613c7160e0840182612ec3565b5061010080870151613c8582850182612e9f565b505061012080870151613c9a82850182612e9f565b50506101408681015190830152610160808701519083015261018080870151908301526101a080870151908301526101c080870151908301526101e08087015190830152610200808701519083015261022080870151908301526102408087015190830152610260808701519083015261028080870151908301526102a080870151613d2882850182613207565b50506102c0860151610300613d3f81850183613207565b6102e08801519150613d55610360850183613195565b8701519050613d686103e084018261310f565b50610320860151613d7d61046084018261310f565b50613d8c6104e083018661322b565b610760820193909352610780015292915050565b60405181810167ffffffffffffffff81118282101715613dbf57600080fd5b604052919050565b60008235611a9781613e29565b60008235611a9781613e4c565b60008235611a9781613e59565b60008235611a9781613e66565b60008235611a9781613e80565b60028110613e1257fe5b50565b60068110613e1257fe5b60058110613e1257fe5b6001600160a01b0381168114613e1257600080fd5b8015158114613e1257600080fd5b60098110613e1257600080fd5b60028110613e1257600080fd5b60068110613e1257600080fd5b60058110613e1257600080fd5b600d8110613e1257600080fd5b60138110613e1257600080fd5b601d8110613e1257600080fdfea2646970667358221220fc7787883d4efe55f1fbbba42377f7594d4b8867e059e8e006e718ed38a0438364736f6c634300060b0033",
  "immutableReferences": {},
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "updatedAt": "2020-08-12T09:47:17.834Z"
}
