{
  "contractName": "DvPSettlement",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "settlementId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "executor",
          "type": "address"
        }
      ],
      "name": "SettlementExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "settlementId",
          "type": "uint256"
        }
      ],
      "name": "SettlementExpired",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "settlementId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "creator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creatorAmount",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterparty",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "counterpartyAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "expirationDate",
              "type": "uint256"
            },
            {
              "internalType": "enum DvPSettlement.SettlementStatus",
              "name": "status",
              "type": "uint8"
            }
          ],
          "indexed": false,
          "internalType": "struct DvPSettlement.Settlement",
          "name": "settlement",
          "type": "tuple"
        }
      ],
      "name": "SettlementInitialized",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "settlements",
      "outputs": [
        {
          "internalType": "address",
          "name": "creator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "creatorToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "creatorAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "creatorBeneficiary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "counterparty",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "counterpartyToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "counterpartyAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expirationDate",
          "type": "uint256"
        },
        {
          "internalType": "enum DvPSettlement.SettlementStatus",
          "name": "status",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "creatorToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "creatorAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "creatorBeneficiary",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "counterparty",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "counterpartyToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "counterpartyAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expirationDate",
          "type": "uint256"
        }
      ],
      "name": "createSettlement",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "executeSettlement",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "expireSettlement",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"settlementId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"}],\"name\":\"SettlementExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"settlementId\",\"type\":\"uint256\"}],\"name\":\"SettlementExpired\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"settlementId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creatorAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterparty\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counterpartyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationDate\",\"type\":\"uint256\"},{\"internalType\":\"enum DvPSettlement.SettlementStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"indexed\":false,\"internalType\":\"struct DvPSettlement.Settlement\",\"name\":\"settlement\",\"type\":\"tuple\"}],\"name\":\"SettlementInitialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"creatorToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creatorAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterparty\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counterpartyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationDate\",\"type\":\"uint256\"}],\"name\":\"createSettlement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"executeSettlement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"expireSettlement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"settlements\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"creatorToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creatorAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"creatorBeneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterparty\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterpartyToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counterpartyAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationDate\",\"type\":\"uint256\"},{\"internalType\":\"enum DvPSettlement.SettlementStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract to manage any number of Delivery-versus-Payment Settlements\",\"kind\":\"dev\",\"methods\":{\"createSettlement(address,uint256,address,address,address,uint256,uint256)\":{\"details\":\"The creator must approve for this contract at least `creatorAmount` of tokens\",\"params\":{\"counterparty\":\"address of counterparty OR 0x0 for open settlement\",\"counterpartyAmount\":\"amount of counterparty's ERC20 token to be exchanged\",\"counterpartyToken\":\"address of counterparty's ERC20 token\",\"creatorAmount\":\"amount of creator's ERC20 token to be exchanged\",\"creatorToken\":\"address of creator's ERC20 token\",\"expirationDate\":\"unix timestamp in seconds\"}},\"executeSettlement(uint256)\":{\"details\":\"This function can only be successfully called by the designated counterparty unless the counterparty address is empty (0x0) in which case anyone can fulfill and execute the settlementThe counterparty must approve for this contract at least `counterpartyAmount` of tokens\",\"params\":{\"id\":\"the unsigned integer ID value for the Settlement to execute\"}},\"expireSettlement(uint256)\":{\"details\":\"This function can be called by anyone since there is no other possible outcome for a created settlement that has passed the expiration date\",\"params\":{\"id\":\"the unsigned integer ID value for the Settlement to expire\"}}},\"title\":\"DvPSettlement\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createSettlement(address,uint256,address,address,address,uint256,uint256)\":{\"notice\":\"Creates a new Settlement in the contract's storage and transfers creator's tokens into the contract\"},\"executeSettlement(uint256)\":{\"notice\":\"Executes an existing Settlement with the sender as the counterparty\"},\"expireSettlement(uint256)\":{\"notice\":\"When called after a given settlement expires, it refunds tokens to the creator\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/DvPSettlement.sol\":\"DvPSettlement\"},\"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/DvPSettlement.sol\":{\"keccak256\":\"0x79e515a25076e23a23d6c421a6ac662c97f498b516cbceeea0ffbe7f865df1d7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://23c340a7b7d0bfc8fb676bfa9b6b79362c86ce80dbeb1312732dae658a78d6e2\",\"dweb:/ipfs/QmWdLJXEemVUerk6eMXJ1o2nSJUJMGfvVtSytVtxUts7bM\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xaa0e11a791bc975d581a4f5b7a8d9c16a880a354c89312318ae072ae3e740409\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://982d8b344f76193834260436d74c81e5a8f9e89106bb4cd72bbaabda4f3f59c2\",\"dweb:/ipfs/QmSrvP5TkQRhKDVCTpsV3uaKLBhkt7PjUY89vdtM9o5ybK\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"openzeppelin-solidity/contracts/utils/Counters.sol\":{\"keccak256\":\"0x2d68b8e6425249cd05cc0a66ea50cb5b8d10cbdac59c6de834e1002232813faf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3ce6b6ac17c67bba01e9c8c778f82f68fd4823bd083359cdd03040b70eeeba3\",\"dweb:/ipfs/QmX4t1jWwKaAkacvmQxEG5rBtLXg3EHw6pRjKhMZR8iw3n\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610d8f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806308df7dc81461005157806322761cca1461008257806353fd599d1461009757806383c0b8ac146100aa575b600080fd5b61006461005f36600461080a565b6100bd565b6040516100799998979695949392919061087a565b60405180910390f35b61009561009036600461080a565b61011e565b005b6100956100a536600461076f565b610294565b6100956100b836600461080a565b610469565b60016020819052600091825260409091208054918101546002820154600383015460048401546005850154600686015460078701546008909701546001600160a01b0398891698968716979596948516959385169490921692909160ff1689565b60008181526001602052604090206007015442116101575760405162461bcd60e51b815260040161014e90610933565b60405180910390fd5b600160008281526001602052604090206008015460ff16600381111561017957fe5b146101965760405162461bcd60e51b815260040161014e90610990565b600081815260016020819052604091829020908101548154600290920154925163a9059cbb60e01b81526001600160a01b039182169363a9059cbb936101e0931691600401610861565b602060405180830381600087803b1580156101fa57600080fd5b505af115801561020e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023291906107e3565b61024e5760405162461bcd60e51b815260040161014e90610c02565b600081815260016020526040808220600801805460ff191660031790555182917fb225d3ed70d8e9aba9eff208c9b1d055ec421670b5037f3f1b3b3a7bd923efac91a250565b4281116102b35760405162461bcd60e51b815260040161014e90610a02565b6102bd6000610745565b60006102c9600061074e565b60008181526001602081905260409091208054336001600160a01b0319918216178255818301805482166001600160a01b038e811691909117909155600283018c905560038301805483168c831617905560048301805483168b831617905560058301805490921690891617905560068101869055600781018590556008018054929350909160ff19168280021790555060008181526001602081905260409182902090810154815460029092015492516323b872dd60e01b81526001600160a01b03918216936323b872dd936103a793169130919060040161083d565b602060405180830381600087803b1580156103c157600080fd5b505af11580156103d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f991906107e3565b6104155760405162461bcd60e51b815260040161014e906108df565b807fdfaefcb59efc7722ebdeb8d1ec6d1c3bb1c07a742e178a458fa00a45203cfbe2600160008481526020019081526020016000206040516104579190610c5f565b60405180910390a25050505050505050565b600160008281526001602052604090206008015460ff16600381111561048b57fe5b146104a85760405162461bcd60e51b815260040161014e90610ab9565b60008181526001602052604090206007015442106104d85760405162461bcd60e51b815260040161014e90610b17565b6000818152600160205260409020600401546001600160a01b0316158061051857506000818152600160205260409020600401546001600160a01b031633145b6105345760405162461bcd60e51b815260040161014e90610ba4565b6000818152600160205260408120600301546001600160a01b031615610574576000828152600160205260409020600301546001600160a01b031661058d565b6000828152600160205260409020546001600160a01b03165b60008381526001602052604090819020600581015460069091015491516323b872dd60e01b81529293506001600160a01b0316916323b872dd916105d7913391869160040161083d565b602060405180830381600087803b1580156105f157600080fd5b505af1158015610605573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062991906107e3565b6106455760405162461bcd60e51b815260040161014e90610a6e565b60008281526001602081905260409182902090810154600290910154915163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161068d913391600401610861565b602060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106df91906107e3565b6106fb5760405162461bcd60e51b815260040161014e90610b59565b600082815260016020526040808220600801805460ff1916600217905551339184917ff059ff22963b773739a912cc5c0f2f358be1a072c66ba18e2c31e503fd0121959190a35050565b80546001019055565b5490565b80356001600160a01b038116811461076957600080fd5b92915050565b600080600080600080600060e0888a031215610789578283fd5b6107938989610752565b9650602088013595506107a98960408a01610752565b94506107b88960608a01610752565b93506107c78960808a01610752565b925060a0880135915060c0880135905092959891949750929550565b6000602082840312156107f4578081fd5b81518015158114610803578182fd5b9392505050565b60006020828403121561081b578081fd5b5035919050565b6001600160a01b03169052565b6004811061083957fe5b9052565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b038a8116825289811660208301526040820189905287811660608301528681166080830152851660a082015260c0810184905260e081018390526101208101600483106108ca57fe5b826101008301529a9950505050505050505050565b60208082526034908201527f447650536574746c656d656e742e637265617465536574746c656d656e74202d604082015273081d1c985b9cd9995c919c9bdb4819985a5b195960621b606082015260800190565b6020808252603a908201527f447650536574746c656d656e742e657870697265536574746c656d656e74202d60408201527f20736574746c656d656e74206973206e6f742065787069726564000000000000606082015260800190565b6020808252604c908201527f447650536574746c656d656e742e657870697265536574746c656d656e74202d60408201527f206f6e6c7920494e495449414c495a454420736574746c656d656e747320636160608201526b1b88189948195e1c1a5c995960a21b608082015260a00190565b60208082526046908201527f447650536574746c656d656e742e637265617465536574746c656d656e74202d60408201527f2065787069726174696f6e20646174652063616e6e6f7420626520696e20746860608201526519481c185cdd60d21b608082015260a00190565b6020808252603c90820152600080516020610d3a83398151915260408201527f2d207472616e7366657246726f6d2073656e646572206661696c656400000000606082015260800190565b6020808252604a90820152600080516020610d3a83398151915260408201527f2d20736574746c656d656e74206d75737420626520696e20696e697469616c696060820152697a65642073746174757360b01b608082015260a00190565b6020808252603490820152600080516020610d3a8339815191526040820152730b481cd95d1d1b195b595b9d08195e1c1a5c995960621b606082015260800190565b6020808252603b90820152600080516020610d3a83398151915260408201527f2d207472616e7366657220746f2073656e646572206661696c65640000000000606082015260800190565b6020808252604a90820152600080516020610d3a83398151915260408201527f2d2073656e646572206e6f7420616c6c6f77656420746f2065786563757465206060820152691cd95d1d1b195b595b9d60b21b608082015260a00190565b60208082526039908201527f447650536574746c656d656e742e657870697265536574746c656d656e74202d60408201527f20726566756e64696e672063726561746f72206661696c656400000000000000606082015260800190565b600061012082019050610c7b82610c768554610d27565b610822565b610c886001840154610d27565b610c956020840182610822565b5060028301546040830152610cad6003840154610d27565b610cba6060840182610822565b50610cc86004840154610d27565b610cd56080840182610822565b50610ce36005840154610d27565b610cf060a0840182610822565b50600683015460c0830152600783015460e0830152610d126008840154610d33565b610d2061010084018261082f565b5092915050565b6001600160a01b031690565b60ff169056fe447650536574746c656d656e742e65786563757465536574746c656d656e7420a2646970667358221220fc86d8a1a4b79515dbe6b4aeca0a6496cade0dddea140f91cdd7b9fbb48f061464736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806308df7dc81461005157806322761cca1461008257806353fd599d1461009757806383c0b8ac146100aa575b600080fd5b61006461005f36600461080a565b6100bd565b6040516100799998979695949392919061087a565b60405180910390f35b61009561009036600461080a565b61011e565b005b6100956100a536600461076f565b610294565b6100956100b836600461080a565b610469565b60016020819052600091825260409091208054918101546002820154600383015460048401546005850154600686015460078701546008909701546001600160a01b0398891698968716979596948516959385169490921692909160ff1689565b60008181526001602052604090206007015442116101575760405162461bcd60e51b815260040161014e90610933565b60405180910390fd5b600160008281526001602052604090206008015460ff16600381111561017957fe5b146101965760405162461bcd60e51b815260040161014e90610990565b600081815260016020819052604091829020908101548154600290920154925163a9059cbb60e01b81526001600160a01b039182169363a9059cbb936101e0931691600401610861565b602060405180830381600087803b1580156101fa57600080fd5b505af115801561020e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023291906107e3565b61024e5760405162461bcd60e51b815260040161014e90610c02565b600081815260016020526040808220600801805460ff191660031790555182917fb225d3ed70d8e9aba9eff208c9b1d055ec421670b5037f3f1b3b3a7bd923efac91a250565b4281116102b35760405162461bcd60e51b815260040161014e90610a02565b6102bd6000610745565b60006102c9600061074e565b60008181526001602081905260409091208054336001600160a01b0319918216178255818301805482166001600160a01b038e811691909117909155600283018c905560038301805483168c831617905560048301805483168b831617905560058301805490921690891617905560068101869055600781018590556008018054929350909160ff19168280021790555060008181526001602081905260409182902090810154815460029092015492516323b872dd60e01b81526001600160a01b03918216936323b872dd936103a793169130919060040161083d565b602060405180830381600087803b1580156103c157600080fd5b505af11580156103d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f991906107e3565b6104155760405162461bcd60e51b815260040161014e906108df565b807fdfaefcb59efc7722ebdeb8d1ec6d1c3bb1c07a742e178a458fa00a45203cfbe2600160008481526020019081526020016000206040516104579190610c5f565b60405180910390a25050505050505050565b600160008281526001602052604090206008015460ff16600381111561048b57fe5b146104a85760405162461bcd60e51b815260040161014e90610ab9565b60008181526001602052604090206007015442106104d85760405162461bcd60e51b815260040161014e90610b17565b6000818152600160205260409020600401546001600160a01b0316158061051857506000818152600160205260409020600401546001600160a01b031633145b6105345760405162461bcd60e51b815260040161014e90610ba4565b6000818152600160205260408120600301546001600160a01b031615610574576000828152600160205260409020600301546001600160a01b031661058d565b6000828152600160205260409020546001600160a01b03165b60008381526001602052604090819020600581015460069091015491516323b872dd60e01b81529293506001600160a01b0316916323b872dd916105d7913391869160040161083d565b602060405180830381600087803b1580156105f157600080fd5b505af1158015610605573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062991906107e3565b6106455760405162461bcd60e51b815260040161014e90610a6e565b60008281526001602081905260409182902090810154600290910154915163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161068d913391600401610861565b602060405180830381600087803b1580156106a757600080fd5b505af11580156106bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106df91906107e3565b6106fb5760405162461bcd60e51b815260040161014e90610b59565b600082815260016020526040808220600801805460ff1916600217905551339184917ff059ff22963b773739a912cc5c0f2f358be1a072c66ba18e2c31e503fd0121959190a35050565b80546001019055565b5490565b80356001600160a01b038116811461076957600080fd5b92915050565b600080600080600080600060e0888a031215610789578283fd5b6107938989610752565b9650602088013595506107a98960408a01610752565b94506107b88960608a01610752565b93506107c78960808a01610752565b925060a0880135915060c0880135905092959891949750929550565b6000602082840312156107f4578081fd5b81518015158114610803578182fd5b9392505050565b60006020828403121561081b578081fd5b5035919050565b6001600160a01b03169052565b6004811061083957fe5b9052565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b038a8116825289811660208301526040820189905287811660608301528681166080830152851660a082015260c0810184905260e081018390526101208101600483106108ca57fe5b826101008301529a9950505050505050505050565b60208082526034908201527f447650536574746c656d656e742e637265617465536574746c656d656e74202d604082015273081d1c985b9cd9995c919c9bdb4819985a5b195960621b606082015260800190565b6020808252603a908201527f447650536574746c656d656e742e657870697265536574746c656d656e74202d60408201527f20736574746c656d656e74206973206e6f742065787069726564000000000000606082015260800190565b6020808252604c908201527f447650536574746c656d656e742e657870697265536574746c656d656e74202d60408201527f206f6e6c7920494e495449414c495a454420736574746c656d656e747320636160608201526b1b88189948195e1c1a5c995960a21b608082015260a00190565b60208082526046908201527f447650536574746c656d656e742e637265617465536574746c656d656e74202d60408201527f2065787069726174696f6e20646174652063616e6e6f7420626520696e20746860608201526519481c185cdd60d21b608082015260a00190565b6020808252603c90820152600080516020610d3a83398151915260408201527f2d207472616e7366657246726f6d2073656e646572206661696c656400000000606082015260800190565b6020808252604a90820152600080516020610d3a83398151915260408201527f2d20736574746c656d656e74206d75737420626520696e20696e697469616c696060820152697a65642073746174757360b01b608082015260a00190565b6020808252603490820152600080516020610d3a8339815191526040820152730b481cd95d1d1b195b595b9d08195e1c1a5c995960621b606082015260800190565b6020808252603b90820152600080516020610d3a83398151915260408201527f2d207472616e7366657220746f2073656e646572206661696c65640000000000606082015260800190565b6020808252604a90820152600080516020610d3a83398151915260408201527f2d2073656e646572206e6f7420616c6c6f77656420746f2065786563757465206060820152691cd95d1d1b195b595b9d60b21b608082015260a00190565b60208082526039908201527f447650536574746c656d656e742e657870697265536574746c656d656e74202d60408201527f20726566756e64696e672063726561746f72206661696c656400000000000000606082015260800190565b600061012082019050610c7b82610c768554610d27565b610822565b610c886001840154610d27565b610c956020840182610822565b5060028301546040830152610cad6003840154610d27565b610cba6060840182610822565b50610cc86004840154610d27565b610cd56080840182610822565b50610ce36005840154610d27565b610cf060a0840182610822565b50600683015460c0830152600783015460e0830152610d126008840154610d33565b610d2061010084018261082f565b5092915050565b6001600160a01b031690565b60ff169056fe447650536574746c656d656e742e65786563757465536574746c656d656e7420a2646970667358221220fc86d8a1a4b79515dbe6b4aeca0a6496cade0dddea140f91cdd7b9fbb48f061464736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "337:6139:46:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "337:6139:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1070:50;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;5673:801;;;;;;:::i;:::-;;:::i;:::-;;1773:1407;;;;;;:::i;:::-;;:::i;3666:1656::-;;;;;;:::i;:::-;;:::i;1070:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1070:50:46;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5673:801::-;5749:15;;;;:11;:15;;;;;:30;;;5782:15;-1:-1:-1;5728:153:46;;;;-1:-1:-1;;;5728:153:46;;;;;;;:::i;:::-;;;;;;;;;5938:28;5912:15;;;;:11;:15;;;;;:22;;;;;:54;;;;;;;;;5891:177;;;;-1:-1:-1;;;5891:177:46;;;;;;;:::i;:::-;6134:15;;;;:11;:15;;;;;;;;;:28;;;;6203:23;;6244:29;;;;;6127:160;;-1:-1:-1;;;6127:160:46;;-1:-1:-1;;;;;6134:28:46;;;;6127:58;;:160;;6203:23;;6127:160;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6105:266;;;;-1:-1:-1;;;6105:266:46;;;;;;;:::i;:::-;6382:15;;;;:11;:15;;;;;;:22;;:49;;-1:-1:-1;;6382:49:46;6407:24;6382:49;;;6446:21;6382:15;;6446:21;;;5673:801;:::o;1773:1407::-;2094:15;2077:14;:32;2056:149;;;;-1:-1:-1;;;2056:149:46;;;;;;;:::i;:::-;2216:26;:14;:24;:26::i;:::-;2252:10;2265:24;:14;:22;:24::i;:::-;2300:15;;;;:11;:15;;;;;;;;:36;;2326:10;-1:-1:-1;;;;;;2300:36:46;;;;;;2346:28;;;:43;;;;-1:-1:-1;;;;;2346:43:46;;;;;;;;;;2399:29;;;:45;;;2454:34;;;:55;;;;;;;;;;2519:28;;;:43;;;;;;;;;;2572:33;;;:53;;;;;;;;;;;2635:34;;;:55;;;2700:30;;;:47;;;2757:22;;:53;;2300:15;;-1:-1:-1;2300:11:46;;-1:-1:-1;;2757:53:46;2300:11;;2757:53;;;;-1:-1:-1;2849:15:46;;;;:11;:15;;;;;;;;;:28;;;;2922:23;;2994:29;;;;;2842:195;;-1:-1:-1;;;2842:195:46;;-1:-1:-1;;;;;2849:28:46;;;;2842:62;;:195;;2922:23;;2971:4;;2994:29;2842:195;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2821:294;;;;-1:-1:-1;;;2821:294:46;;;;;;;:::i;:::-;3153:2;3131:42;3157:11;:15;3169:2;3157:15;;;;;;;;;;;3131:42;;;;;;:::i;:::-;;;;;;;;1773:1407;;;;;;;;:::o;3666:1656::-;3769:28;3743:15;;;;:11;:15;;;;;:22;;;;;:54;;;;;;;;;3722:175;;;;-1:-1:-1;;;3722:175:46;;;;;;;:::i;:::-;3928:15;;;;:11;:15;;;;;:30;;;3961:15;-1:-1:-1;3907:147:46;;;;-1:-1:-1;;;3907:147:46;;;;;;;:::i;:::-;4207:1;4167:15;;;:11;:15;;;;;:28;;;-1:-1:-1;;;;;4167:28:46;:42;;:88;;-1:-1:-1;4213:15:46;;;;:11;:15;;;;;:28;;;-1:-1:-1;;;;;4213:28:46;4245:10;4213:42;4167:88;4146:209;;;;-1:-1:-1;;;4146:209:46;;;;;;;:::i;:::-;4442:23;4469:15;;;:11;:15;;;;;:34;;;-1:-1:-1;;;;;4469:34:46;:48;4468:125;;4559:15;;;;:11;:15;;;;;:34;;;-1:-1:-1;;;;;4559:34:46;4468:125;;;4533:15;;;;:11;:15;;;;;:23;-1:-1:-1;;;;;4533:23:46;4468:125;4665:15;;;;:11;:15;;;;;;;:33;;;;4804:34;;;;;4658:194;;-1:-1:-1;;;4658:194:46;;4442:151;;-1:-1:-1;;;;;;4665:33:46;;4658:67;;:194;;4743:10;;4442:151;;4658:194;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4636:303;;;;-1:-1:-1;;;4636:303:46;;;;;;;:::i;:::-;4979:15;;;;:11;:15;;;;;;;;;:28;;;;5076:29;;;;;4972:147;;-1:-1:-1;;;4972:147:46;;-1:-1:-1;;;;;4979:28:46;;;;4972:58;;:147;;5048:10;;4972:147;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4950:255;;;;-1:-1:-1;;;4950:255:46;;;;;;;:::i;:::-;5216:15;;;;:11;:15;;;;;;:22;;:50;;-1:-1:-1;;5216:50:46;5241:25;5216:50;;;5281:34;5304:10;;5216:15;;5281:34;;5216:15;5281:34;3666:1656;;:::o;1216:178:122:-;1368:19;;1386:1;1368:19;;;1216:178::o;1098:112::-;1189:14;;1098:112::o;5:130:-1:-;72:20;;-1:-1;;;;;17103:54;;19313:35;;19303:2;;19362:1;;19352:12;19303:2;57:78;;;;:::o;414:995::-;;;;;;;;620:3;608:9;599:7;595:23;591:33;588:2;;;-1:-1;;627:12;588:2;689:53;734:7;710:22;689:53;:::i;:::-;679:63;;779:2;822:9;818:22;344:20;787:63;;905:53;950:7;887:2;930:9;926:22;905:53;:::i;:::-;895:63;;1013:53;1058:7;995:2;1038:9;1034:22;1013:53;:::i;:::-;1003:63;;1122:53;1167:7;1103:3;1147:9;1143:22;1122:53;:::i;:::-;1112:63;;1212:3;1256:9;1252:22;344:20;1221:63;;1321:3;1365:9;1361:22;344:20;1330:63;;582:827;;;;;;;;;;:::o;1416:257::-;;1528:2;1516:9;1507:7;1503:23;1499:32;1496:2;;;-1:-1;;1534:12;1496:2;223:6;217:13;19459:5;17550:13;17543:21;19437:5;19434:32;19424:2;;-1:-1;;19470:12;19424:2;1586:71;1490:183;-1:-1;;;1490:183::o;1680:241::-;;1784:2;1772:9;1763:7;1759:23;1755:32;1752:2;;;-1:-1;;1790:12;1752:2;-1:-1;344:20;;1746:175;-1:-1;1746:175::o;2077:103::-;-1:-1;;;;;17103:54;2138:37;;2132:48::o;2307:156::-;19225:1;19218:5;19215:12;19205:2;;19231:9;19205:2;2388:70;;2382:81::o;9509:460::-;-1:-1;;;;;17103:54;;;2007:58;;17103:54;;;;9872:2;9857:18;;2138:37;9955:2;9940:18;;9340:37;;;;9700:2;9685:18;;9671:298::o;9976:349::-;-1:-1;;;;;17103:54;;;;2007:58;;10311:2;10296:18;;9340:37;10139:2;10124:18;;10110:215::o;10783:1156::-;-1:-1;;;;;17103:54;;;2138:37;;17103:54;;;11319:2;11304:18;;2138:37;11402:2;11387:18;;9340:37;;;17103:54;;;11485:2;11470:18;;2138:37;17103:54;;;11568:3;11553:19;;2138:37;17103:54;;17114:42;11637:19;;2138:37;11736:3;11721:19;;9340:37;;;11820:3;11805:19;;9340:37;;;11154:3;11139:19;;19225:1;19215:12;;19205:2;;19231:9;19205:2;18175:46;11924:3;11913:9;11909:19;2388:70;11125:814;;;;;;;;;;;;:::o;12286:416::-;12486:2;12500:47;;;2868:2;12471:18;;;16960:19;2904:34;17000:14;;;2884:55;-1:-1;;;2959:12;;;2952:44;3015:12;;;12457:245::o;12709:416::-;12909:2;12923:47;;;3266:2;12894:18;;;16960:19;3302:34;17000:14;;;3282:55;3371:28;3357:12;;;3350:50;3419:12;;;12880:245::o;13132:416::-;13332:2;13346:47;;;3670:2;13317:18;;;16960:19;3706:34;17000:14;;;3686:55;3775:34;3761:12;;;3754:56;-1:-1;;;3830:12;;;3823:36;3878:12;;;13303:245::o;13555:416::-;13755:2;13769:47;;;4129:2;13740:18;;;16960:19;4165:34;17000:14;;;4145:55;4234:34;4220:12;;;4213:56;-1:-1;;;4289:12;;;4282:30;4331:12;;;13726:245::o;13978:416::-;14178:2;14192:47;;;4582:2;14163:18;;;16960:19;-1:-1;;;;;;;;;;;17000:14;;;4598:55;4687:30;4673:12;;;4666:52;4737:12;;;14149:245::o;14401:416::-;14601:2;14615:47;;;4988:2;14586:18;;;16960:19;-1:-1;;;;;;;;;;;17000:14;;;5004:55;5093:34;5079:12;;;5072:56;-1:-1;;;5148:12;;;5141:34;5194:12;;;14572:245::o;14824:416::-;15024:2;15038:47;;;5445:2;15009:18;;;16960:19;-1:-1;;;;;;;;;;;17000:14;;;5461:55;-1:-1;;;5536:12;;;5529:44;5592:12;;;14995:245::o;15247:416::-;15447:2;15461:47;;;5843:2;15432:18;;;16960:19;-1:-1;;;;;;;;;;;17000:14;;;5859:55;5948:29;5934:12;;;5927:51;5997:12;;;15418:245::o;15670:416::-;15870:2;15884:47;;;6248:2;15855:18;;;16960:19;-1:-1;;;;;;;;;;;17000:14;;;6264:55;6353:34;6339:12;;;6332:56;-1:-1;;;6408:12;;;6401:34;6454:12;;;15841:245::o;16093:416::-;16293:2;16307:47;;;6705:2;16278:18;;;16960:19;6741:34;17000:14;;;6721:55;6810:27;6796:12;;;6789:49;6857:12;;;16264:245::o;16516:333::-;;16698:3;16687:9;16683:19;16675:27;;7290:63;7338:14;7229:55;7186:16;7180:23;7229:55;:::i;:::-;7290:63;:::i;:::-;7459:55;7427:4;7420:5;7416:16;7410:23;7459:55;:::i;:::-;7520:63;7577:4;7572:3;7568:14;7554:12;7520:63;:::i;:::-;;7658:4;7651:5;7647:16;7641:23;7808:4;7803:3;7799:14;9340:37;7926:55;7894:4;7887:5;7883:16;7877:23;7926:55;:::i;:::-;7987:63;8044:4;8039:3;8035:14;8021:12;7987:63;:::i;:::-;;8156:55;8124:4;8117:5;8113:16;8107:23;8156:55;:::i;:::-;8217:63;8274:4;8269:3;8265:14;8251:12;8217:63;:::i;:::-;;8391:55;8359:4;8352:5;8348:16;8342:23;8391:55;:::i;:::-;8452:63;8509:4;8504:3;8500:14;8486:12;8452:63;:::i;:::-;;8595:4;8588:5;8584:16;8578:23;8745:4;8740:3;8736:14;9340:37;8827:4;8820:5;8816:16;8810:23;8977:4;8972:3;8968:14;9340:37;9083:77;9051:4;9044:5;9040:16;9034:23;9083:77;:::i;:::-;9166:85;9243:6;9238:3;9234:16;9220:12;9166:85;:::i;:::-;;16669:180;;;;:::o;17028:134::-;-1:-1;;;;;17103:54;;17086:76::o;18644:205::-;17277:4;17266:16;;18741:108::o",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/utils/Counters.sol\";\n\n/**\n * @title DvPSettlement\n * @dev Contract to manage any number of Delivery-versus-Payment Settlements\n */\ncontract DvPSettlement {\n    using Counters for Counters.Counter;\n    Counters.Counter _settlementIds;\n\n    event SettlementInitialized(uint256 indexed settlementId, Settlement settlement);\n    event SettlementExecuted(uint256 indexed settlementId, address indexed executor);\n    event SettlementExpired(uint256 indexed settlementId);\n\n    enum SettlementStatus { NOT_EXISTS, INITIALIZED, EXECUTED, EXPIRED }\n\n    struct Settlement {\n        address creator;\n        address creatorToken;\n        uint256 creatorAmount;\n        address creatorBeneficiary;\n        address counterparty;\n        address counterpartyToken;\n        uint256 counterpartyAmount;\n        uint256 expirationDate;\n        SettlementStatus status;\n    }\n\n    mapping (uint256 => Settlement) public settlements;\n\n    /**\n     * @notice Creates a new Settlement in the contract's storage and transfers creator's tokens into the contract\n     * @dev The creator must approve for this contract at least `creatorAmount` of tokens\n     * @param creatorToken address of creator's ERC20 token\n     * @param creatorAmount amount of creator's ERC20 token to be exchanged\n     * @param counterparty address of counterparty OR 0x0 for open settlement\n     * @param counterpartyToken address of counterparty's ERC20 token\n     * @param counterpartyAmount amount of counterparty's ERC20 token to be exchanged\n     * @param expirationDate unix timestamp in seconds\n     */\n    function createSettlement(\n        address creatorToken,\n        uint256 creatorAmount,\n        address creatorBeneficiary,\n        address counterparty,\n        address counterpartyToken,\n        uint256 counterpartyAmount,\n        uint256 expirationDate\n    ) public\n    {\n        require(\n            expirationDate > block.timestamp,\n            \"DvPSettlement.createSettlement - expiration date cannot be in the past\"\n        );\n\n        _settlementIds.increment();\n        uint256 id = _settlementIds.current();\n\n        settlements[id].creator = msg.sender;\n        settlements[id].creatorToken = creatorToken;\n        settlements[id].creatorAmount = creatorAmount;\n        settlements[id].creatorBeneficiary = creatorBeneficiary;\n        settlements[id].counterparty = counterparty;\n        settlements[id].counterpartyToken = counterpartyToken;\n        settlements[id].counterpartyAmount = counterpartyAmount;\n        settlements[id].expirationDate = expirationDate;\n        settlements[id].status = SettlementStatus.INITIALIZED;\n\n        require(\n            IERC20(settlements[id].creatorToken)\n            .transferFrom(\n                settlements[id].creator,\n                address(this),\n                settlements[id].creatorAmount\n            ),\n            \"DvPSettlement.createSettlement - transferFrom failed\"\n        );\n\n        emit SettlementInitialized(id, settlements[id]);\n    }\n\n\n    /**\n     * @notice Executes an existing Settlement with the sender as the counterparty\n     * @dev This function can only be successfully called by the designated counterparty unless\n     * the counterparty address is empty (0x0) in which case anyone can fulfill and execute the settlement\n     * @dev The counterparty must approve for this contract at least `counterpartyAmount` of tokens\n     * @param id the unsigned integer ID value for the Settlement to execute\n     */\n    function executeSettlement(uint256 id) public {\n        require(\n            settlements[id].status == SettlementStatus.INITIALIZED,\n            \"DvPSettlement.executeSettlement - settlement must be in initialized status\"\n        );\n        require(\n            settlements[id].expirationDate > block.timestamp,\n            \"DvPSettlement.executeSettlement - settlement expired\"\n        );\n\n        // if empty (0x0) counterparty address, consider it an \"open\" settlement\n        require(\n            settlements[id].counterparty == address(0) || settlements[id].counterparty == msg.sender,\n            \"DvPSettlement.executeSettlement - sender not allowed to execute settlement\"\n        );\n\n        // if empty (0x0) creatorBeneficiary address, send funds to creator\n        address creatorReveiver = (settlements[id].creatorBeneficiary == address(0)) ?\n            settlements[id].creator : settlements[id].creatorBeneficiary;\n\n        // transfer both tokens\n        require(\n            (IERC20(settlements[id].counterpartyToken)\n            .transferFrom(\n                msg.sender,\n                creatorReveiver,\n                settlements[id].counterpartyAmount\n            )),\n            \"DvPSettlement.executeSettlement - transferFrom sender failed\"\n        );\n\n        require(\n            (IERC20(settlements[id].creatorToken)\n            .transfer(\n                msg.sender,\n                settlements[id].creatorAmount\n            )),\n            \"DvPSettlement.executeSettlement - transfer to sender failed\"\n        );\n\n        settlements[id].status = SettlementStatus.EXECUTED;\n        emit SettlementExecuted(id, msg.sender);\n    }\n\n    /**\n     * @notice When called after a given settlement expires, it refunds tokens to the creator\n     * @dev This function can be called by anyone since there is no other possible outcome for\n     * a created settlement that has passed the expiration date\n     * @param id the unsigned integer ID value for the Settlement to expire\n     */\n    function expireSettlement(uint256 id) public {\n        require(\n            settlements[id].expirationDate < block.timestamp,\n            \"DvPSettlement.expireSettlement - settlement is not expired\"\n        );\n        require(\n            settlements[id].status == SettlementStatus.INITIALIZED,\n            \"DvPSettlement.expireSettlement - only INITIALIZED settlements can be expired\"\n        );\n\n        // refund creator\n        require(\n            (IERC20(settlements[id].creatorToken)\n            .transfer(\n                settlements[id].creator,\n                settlements[id].creatorAmount\n            )),\n            \"DvPSettlement.expireSettlement - refunding creator failed\"\n        );\n\n        settlements[id].status = SettlementStatus.EXPIRED;\n        emit SettlementExpired(id);\n    }\n}",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/DvPSettlement.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/DvPSettlement.sol",
    "exportedSymbols": {
      "DvPSettlement": [
        17871
      ]
    },
    "id": 17872,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17496,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:46"
      },
      {
        "id": 17497,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:46"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 17498,
        "nodeType": "ImportDirective",
        "scope": 17872,
        "sourceUnit": 39446,
        "src": "101:64:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/utils/Counters.sol",
        "file": "openzeppelin-solidity/contracts/utils/Counters.sol",
        "id": 17499,
        "nodeType": "ImportDirective",
        "scope": 17872,
        "sourceUnit": 39560,
        "src": "166:60:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 17500,
          "nodeType": "StructuredDocumentation",
          "src": "228:108:46",
          "text": " @title DvPSettlement\n @dev Contract to manage any number of Delivery-versus-Payment Settlements"
        },
        "fullyImplemented": true,
        "id": 17871,
        "linearizedBaseContracts": [
          17871
        ],
        "name": "DvPSettlement",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 17503,
            "libraryName": {
              "contractScope": null,
              "id": 17501,
              "name": "Counters",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 39559,
              "src": "372:8:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Counters_$39559",
                "typeString": "library Counters"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "366:36:46",
            "typeName": {
              "contractScope": null,
              "id": 17502,
              "name": "Counters.Counter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 39519,
              "src": "385:16:46",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Counter_$39519_storage_ptr",
                "typeString": "struct Counters.Counter"
              }
            }
          },
          {
            "constant": false,
            "id": 17505,
            "mutability": "mutable",
            "name": "_settlementIds",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 17871,
            "src": "407:31:46",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Counter_$39519_storage",
              "typeString": "struct Counters.Counter"
            },
            "typeName": {
              "contractScope": null,
              "id": 17504,
              "name": "Counters.Counter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 39519,
              "src": "407:16:46",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Counter_$39519_storage_ptr",
                "typeString": "struct Counters.Counter"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17511,
            "name": "SettlementInitialized",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17507,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "settlementId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17511,
                  "src": "473:28:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17506,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "473:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17509,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "settlement",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17511,
                  "src": "503:21:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Settlement_$17545_memory_ptr",
                    "typeString": "struct DvPSettlement.Settlement"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17508,
                    "name": "Settlement",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17545,
                    "src": "503:10:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Settlement_$17545_storage_ptr",
                      "typeString": "struct DvPSettlement.Settlement"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "472:53:46"
            },
            "src": "445:81:46"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17517,
            "name": "SettlementExecuted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17516,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17513,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "settlementId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17517,
                  "src": "556:28:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17512,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "556:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17515,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "executor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17517,
                  "src": "586:24:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17514,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "586:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "555:56:46"
            },
            "src": "531:81:46"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17521,
            "name": "SettlementExpired",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17519,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "settlementId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17521,
                  "src": "641:28:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "641:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "640:30:46"
            },
            "src": "617:54:46"
          },
          {
            "canonicalName": "DvPSettlement.SettlementStatus",
            "id": 17526,
            "members": [
              {
                "id": 17522,
                "name": "NOT_EXISTS",
                "nodeType": "EnumValue",
                "src": "701:10:46"
              },
              {
                "id": 17523,
                "name": "INITIALIZED",
                "nodeType": "EnumValue",
                "src": "713:11:46"
              },
              {
                "id": 17524,
                "name": "EXECUTED",
                "nodeType": "EnumValue",
                "src": "726:8:46"
              },
              {
                "id": 17525,
                "name": "EXPIRED",
                "nodeType": "EnumValue",
                "src": "736:7:46"
              }
            ],
            "name": "SettlementStatus",
            "nodeType": "EnumDefinition",
            "src": "677:68:46"
          },
          {
            "canonicalName": "DvPSettlement.Settlement",
            "id": 17545,
            "members": [
              {
                "constant": false,
                "id": 17528,
                "mutability": "mutable",
                "name": "creator",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "779:15:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17527,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "779:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17530,
                "mutability": "mutable",
                "name": "creatorToken",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "804:20:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17529,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "804:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17532,
                "mutability": "mutable",
                "name": "creatorAmount",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "834:21:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17531,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "834:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17534,
                "mutability": "mutable",
                "name": "creatorBeneficiary",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "865:26:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17533,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "865:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17536,
                "mutability": "mutable",
                "name": "counterparty",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "901:20:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17535,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "901:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17538,
                "mutability": "mutable",
                "name": "counterpartyToken",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "931:25:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17537,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "931:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17540,
                "mutability": "mutable",
                "name": "counterpartyAmount",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "966:26:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17539,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "966:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17542,
                "mutability": "mutable",
                "name": "expirationDate",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "1002:22:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17541,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1002:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17544,
                "mutability": "mutable",
                "name": "status",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "1034:23:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                  "typeString": "enum DvPSettlement.SettlementStatus"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 17543,
                  "name": "SettlementStatus",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 17526,
                  "src": "1034:16:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                    "typeString": "enum DvPSettlement.SettlementStatus"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Settlement",
            "nodeType": "StructDefinition",
            "scope": 17871,
            "src": "751:313:46",
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "08df7dc8",
            "id": 17549,
            "mutability": "mutable",
            "name": "settlements",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 17871,
            "src": "1070:50:46",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
              "typeString": "mapping(uint256 => struct DvPSettlement.Settlement)"
            },
            "typeName": {
              "id": 17548,
              "keyType": {
                "id": 17546,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1079:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1070:31:46",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement)"
              },
              "valueType": {
                "contractScope": null,
                "id": 17547,
                "name": "Settlement",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 17545,
                "src": "1090:10:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Settlement_$17545_storage_ptr",
                  "typeString": "struct DvPSettlement.Settlement"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17682,
              "nodeType": "Block",
              "src": "2046:1134:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 17568,
                          "name": "expirationDate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17564,
                          "src": "2077:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17569,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "2094:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 17570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2094:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2077:32:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e637265617465536574746c656d656e74202d2065787069726174696f6e20646174652063616e6e6f7420626520696e207468652070617374",
                        "id": 17572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2123:72:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6b68c9c1637c0f177e8d3493fbf493ce3209c5532ed0c33e7d0e84cc4a2d98e3",
                          "typeString": "literal_string \"DvPSettlement.createSettlement - expiration date cannot be in the past\""
                        },
                        "value": "DvPSettlement.createSettlement - expiration date cannot be in the past"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6b68c9c1637c0f177e8d3493fbf493ce3209c5532ed0c33e7d0e84cc4a2d98e3",
                          "typeString": "literal_string \"DvPSettlement.createSettlement - expiration date cannot be in the past\""
                        }
                      ],
                      "id": 17567,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2056:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2056:149:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17574,
                  "nodeType": "ExpressionStatement",
                  "src": "2056:149:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17575,
                        "name": "_settlementIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17505,
                        "src": "2216:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$39519_storage",
                          "typeString": "struct Counters.Counter storage ref"
                        }
                      },
                      "id": 17577,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "increment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 39542,
                      "src": "2216:24:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$39519_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$39519_storage_ptr_$",
                        "typeString": "function (struct Counters.Counter storage pointer)"
                      }
                    },
                    "id": 17578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2216:26:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17579,
                  "nodeType": "ExpressionStatement",
                  "src": "2216:26:46"
                },
                {
                  "assignments": [
                    17581
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17581,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17682,
                      "src": "2252:10:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17580,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2252:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17585,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17582,
                        "name": "_settlementIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17505,
                        "src": "2265:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$39519_storage",
                          "typeString": "struct Counters.Counter storage ref"
                        }
                      },
                      "id": 17583,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "current",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 39530,
                      "src": "2265:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$39519_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$39519_storage_ptr_$",
                        "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 17584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2265:24:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2252:37:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17586,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2300:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17588,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17587,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2312:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2300:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17589,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17528,
                      "src": "2300:23:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17590,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "2326:3:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 17591,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2326:10:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2300:36:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17593,
                  "nodeType": "ExpressionStatement",
                  "src": "2300:36:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17594,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2346:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17596,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17595,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2358:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2346:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17597,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creatorToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17530,
                      "src": "2346:28:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17598,
                      "name": "creatorToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17552,
                      "src": "2377:12:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2346:43:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17600,
                  "nodeType": "ExpressionStatement",
                  "src": "2346:43:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17601,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2399:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17603,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17602,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2411:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2399:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17604,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creatorAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17532,
                      "src": "2399:29:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17605,
                      "name": "creatorAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17554,
                      "src": "2431:13:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2399:45:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17607,
                  "nodeType": "ExpressionStatement",
                  "src": "2399:45:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17608,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2454:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17610,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17609,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2466:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2454:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17611,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creatorBeneficiary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17534,
                      "src": "2454:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17612,
                      "name": "creatorBeneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17556,
                      "src": "2491:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2454:55:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17614,
                  "nodeType": "ExpressionStatement",
                  "src": "2454:55:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17615,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2519:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17617,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17616,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2531:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2519:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17618,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "counterparty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17536,
                      "src": "2519:28:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17619,
                      "name": "counterparty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17558,
                      "src": "2550:12:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2519:43:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17621,
                  "nodeType": "ExpressionStatement",
                  "src": "2519:43:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17622,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2572:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17624,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17623,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2584:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2572:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17625,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "counterpartyToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17538,
                      "src": "2572:33:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17626,
                      "name": "counterpartyToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17560,
                      "src": "2608:17:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2572:53:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17628,
                  "nodeType": "ExpressionStatement",
                  "src": "2572:53:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17629,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2635:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17631,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17630,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2647:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2635:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17632,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "counterpartyAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17540,
                      "src": "2635:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17633,
                      "name": "counterpartyAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17562,
                      "src": "2672:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2635:55:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17635,
                  "nodeType": "ExpressionStatement",
                  "src": "2635:55:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17636,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2700:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17638,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17637,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2712:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2700:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17639,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "expirationDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17542,
                      "src": "2700:30:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17640,
                      "name": "expirationDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17564,
                      "src": "2733:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2700:47:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17642,
                  "nodeType": "ExpressionStatement",
                  "src": "2700:47:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17649,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17643,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2757:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17645,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17644,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2769:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2757:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17646,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17544,
                      "src": "2757:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17647,
                        "name": "SettlementStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17526,
                        "src": "2782:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                          "typeString": "type(enum DvPSettlement.SettlementStatus)"
                        }
                      },
                      "id": 17648,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "INITIALIZED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2782:28:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "src": "2757:53:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                      "typeString": "enum DvPSettlement.SettlementStatus"
                    }
                  },
                  "id": 17650,
                  "nodeType": "ExpressionStatement",
                  "src": "2757:53:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17659,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "2922:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17661,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17660,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17581,
                                "src": "2934:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2922:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17662,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17528,
                            "src": "2922:23:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17665,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "2971:4:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DvPSettlement_$17871",
                                  "typeString": "contract DvPSettlement"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DvPSettlement_$17871",
                                  "typeString": "contract DvPSettlement"
                                }
                              ],
                              "id": 17664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2963:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 17663,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2963:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 17666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2963:13:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17667,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "2994:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17669,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17668,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17581,
                                "src": "3006:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2994:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17670,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creatorAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17532,
                            "src": "2994:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17653,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "2849:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17655,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17654,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17581,
                                    "src": "2861:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2849:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17656,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "creatorToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17530,
                                "src": "2849:28:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 17652,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39445,
                              "src": "2842:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 17657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2842:36:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$39445",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 17658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 39426,
                          "src": "2842:62:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 17671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2842:195:46",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e637265617465536574746c656d656e74202d207472616e7366657246726f6d206661696c6564",
                        "id": 17672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3051:54:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_03f1620064c05253727db20e02142edf4562176acfab6edbe85955d931c87a38",
                          "typeString": "literal_string \"DvPSettlement.createSettlement - transferFrom failed\""
                        },
                        "value": "DvPSettlement.createSettlement - transferFrom failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_03f1620064c05253727db20e02142edf4562176acfab6edbe85955d931c87a38",
                          "typeString": "literal_string \"DvPSettlement.createSettlement - transferFrom failed\""
                        }
                      ],
                      "id": 17651,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2821:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2821:294:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17674,
                  "nodeType": "ExpressionStatement",
                  "src": "2821:294:46"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17676,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17581,
                        "src": "3153:2:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17677,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "3157:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17679,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17678,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "3169:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3157:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      ],
                      "id": 17675,
                      "name": "SettlementInitialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17511,
                      "src": "3131:21:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_struct$_Settlement_$17545_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,struct DvPSettlement.Settlement memory)"
                      }
                    },
                    "id": 17680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3131:42:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17681,
                  "nodeType": "EmitStatement",
                  "src": "3126:47:46"
                }
              ]
            },
            "documentation": {
              "id": 17550,
              "nodeType": "StructuredDocumentation",
              "src": "1127:641:46",
              "text": " @notice Creates a new Settlement in the contract's storage and transfers creator's tokens into the contract\n @dev The creator must approve for this contract at least `creatorAmount` of tokens\n @param creatorToken address of creator's ERC20 token\n @param creatorAmount amount of creator's ERC20 token to be exchanged\n @param counterparty address of counterparty OR 0x0 for open settlement\n @param counterpartyToken address of counterparty's ERC20 token\n @param counterpartyAmount amount of counterparty's ERC20 token to be exchanged\n @param expirationDate unix timestamp in seconds"
            },
            "functionSelector": "53fd599d",
            "id": 17683,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createSettlement",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 17565,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17552,
                  "mutability": "mutable",
                  "name": "creatorToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1808:20:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17551,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1808:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17554,
                  "mutability": "mutable",
                  "name": "creatorAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1838:21:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1838:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17556,
                  "mutability": "mutable",
                  "name": "creatorBeneficiary",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1869:26:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17555,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1869:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17558,
                  "mutability": "mutable",
                  "name": "counterparty",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1905:20:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17557,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1905:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17560,
                  "mutability": "mutable",
                  "name": "counterpartyToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1935:25:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17559,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1935:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17562,
                  "mutability": "mutable",
                  "name": "counterpartyAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1970:26:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17561,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1970:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17564,
                  "mutability": "mutable",
                  "name": "expirationDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "2006:22:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17563,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2006:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1798:236:46"
            },
            "returnParameters": {
              "id": 17566,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2046:0:46"
            },
            "scope": 17871,
            "src": "1773:1407:46",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17807,
              "nodeType": "Block",
              "src": "3712:1610:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                          "typeString": "enum DvPSettlement.SettlementStatus"
                        },
                        "id": 17696,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17690,
                              "name": "settlements",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17549,
                              "src": "3743:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                              }
                            },
                            "id": 17692,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17691,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17686,
                              "src": "3755:2:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3743:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                              "typeString": "struct DvPSettlement.Settlement storage ref"
                            }
                          },
                          "id": 17693,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17544,
                          "src": "3743:22:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                            "typeString": "enum DvPSettlement.SettlementStatus"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17694,
                            "name": "SettlementStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17526,
                            "src": "3769:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                              "typeString": "type(enum DvPSettlement.SettlementStatus)"
                            }
                          },
                          "id": 17695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "INITIALIZED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3769:28:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                            "typeString": "enum DvPSettlement.SettlementStatus"
                          }
                        },
                        "src": "3743:54:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d20736574746c656d656e74206d75737420626520696e20696e697469616c697a656420737461747573",
                        "id": 17697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3811:76:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_77930d0aceb3dff328d46c651eee9836b8f939da1f656f617a65c768a46f900e",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - settlement must be in initialized status\""
                        },
                        "value": "DvPSettlement.executeSettlement - settlement must be in initialized status"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_77930d0aceb3dff328d46c651eee9836b8f939da1f656f617a65c768a46f900e",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - settlement must be in initialized status\""
                        }
                      ],
                      "id": 17689,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3722:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3722:175:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17699,
                  "nodeType": "ExpressionStatement",
                  "src": "3722:175:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17707,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17701,
                              "name": "settlements",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17549,
                              "src": "3928:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                              }
                            },
                            "id": 17703,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17702,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17686,
                              "src": "3940:2:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3928:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                              "typeString": "struct DvPSettlement.Settlement storage ref"
                            }
                          },
                          "id": 17704,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expirationDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17542,
                          "src": "3928:30:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17705,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "3961:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 17706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3961:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3928:48:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d20736574746c656d656e742065787069726564",
                        "id": 17708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3990:54:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8b90238e664a7f293b76c1336ec60163f396953a26549bdc19a59d099e21aa08",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - settlement expired\""
                        },
                        "value": "DvPSettlement.executeSettlement - settlement expired"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8b90238e664a7f293b76c1336ec60163f396953a26549bdc19a59d099e21aa08",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - settlement expired\""
                        }
                      ],
                      "id": 17700,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3907:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3907:147:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17710,
                  "nodeType": "ExpressionStatement",
                  "src": "3907:147:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17728,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 17720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17712,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "4167:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17714,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17713,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17686,
                                "src": "4179:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4167:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17715,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "counterparty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17536,
                            "src": "4167:28:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4207:1:46",
                                "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": 17717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4199:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 17716,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4199:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 17719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4199:10:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4167:42:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 17727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17721,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "4213:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17723,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17722,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17686,
                                "src": "4225:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4213:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17724,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "counterparty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17536,
                            "src": "4213:28:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17725,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4245:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 17726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4245:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4213:42:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4167:88:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d2073656e646572206e6f7420616c6c6f77656420746f206578656375746520736574746c656d656e74",
                        "id": 17729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4269:76:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a412d7e6f114713bbde7a83b1cc97a3f4c8db26b9f2c8fa660074f28295c1149",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - sender not allowed to execute settlement\""
                        },
                        "value": "DvPSettlement.executeSettlement - sender not allowed to execute settlement"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a412d7e6f114713bbde7a83b1cc97a3f4c8db26b9f2c8fa660074f28295c1149",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - sender not allowed to execute settlement\""
                        }
                      ],
                      "id": 17711,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4146:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4146:209:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17731,
                  "nodeType": "ExpressionStatement",
                  "src": "4146:209:46"
                },
                {
                  "assignments": [
                    17733
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17733,
                      "mutability": "mutable",
                      "name": "creatorReveiver",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17807,
                      "src": "4442:23:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 17732,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4442:7:46",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17753,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 17742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17734,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "4469:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17736,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17735,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17686,
                                "src": "4481:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4469:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17737,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creatorBeneficiary",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17534,
                            "src": "4469:34:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4515:1:46",
                                "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": 17739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4507:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 17738,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4507:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 17741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4507:10:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4469:48:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 17743,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "4468:50:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17748,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "4559:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17750,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17749,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17686,
                          "src": "4571:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4559:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17751,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "creatorBeneficiary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17534,
                      "src": "4559:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 17752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4468:125:46",
                    "trueExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17744,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "4533:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17746,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17745,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17686,
                          "src": "4545:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4533:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17747,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "creator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17528,
                      "src": "4533:23:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4442:151:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17762,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4743:3:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4743:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 17764,
                                "name": "creatorReveiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17733,
                                "src": "4771:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17765,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "4804:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17767,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17766,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17686,
                                    "src": "4816:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4804:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17768,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "counterpartyAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17540,
                                "src": "4804:34:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 17756,
                                        "name": "settlements",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17549,
                                        "src": "4665:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                          "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                        }
                                      },
                                      "id": 17758,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 17757,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17686,
                                        "src": "4677:2:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4665:15:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                        "typeString": "struct DvPSettlement.Settlement storage ref"
                                      }
                                    },
                                    "id": 17759,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "counterpartyToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17538,
                                    "src": "4665:33:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17755,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39445,
                                  "src": "4658:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 17760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4658:41:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$39445",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 17761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transferFrom",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 39426,
                              "src": "4658:67:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,address,uint256) external returns (bool)"
                              }
                            },
                            "id": 17769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4658:194:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 17770,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4657:196:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d207472616e7366657246726f6d2073656e646572206661696c6564",
                        "id": 17771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4867:62:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_75f2b646951e6b894b228b0fe9ab74c1c3f54f6fa7f0b07db5fb0ebbf73b25e0",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - transferFrom sender failed\""
                        },
                        "value": "DvPSettlement.executeSettlement - transferFrom sender failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_75f2b646951e6b894b228b0fe9ab74c1c3f54f6fa7f0b07db5fb0ebbf73b25e0",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - transferFrom sender failed\""
                        }
                      ],
                      "id": 17754,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4636:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4636:303:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17773,
                  "nodeType": "ExpressionStatement",
                  "src": "4636:303:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17782,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "5048:3:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5048:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17784,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "5076:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17786,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17785,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17686,
                                    "src": "5088:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5076:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17787,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "creatorAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17532,
                                "src": "5076:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 17776,
                                        "name": "settlements",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17549,
                                        "src": "4979:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                          "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                        }
                                      },
                                      "id": 17778,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 17777,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17686,
                                        "src": "4991:2:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4979:15:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                        "typeString": "struct DvPSettlement.Settlement storage ref"
                                      }
                                    },
                                    "id": 17779,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "creatorToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17530,
                                    "src": "4979:28:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17775,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39445,
                                  "src": "4972:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 17780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4972:36:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$39445",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 17781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 39394,
                              "src": "4972:58:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 17788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4972:147:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 17789,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4971:149:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d207472616e7366657220746f2073656e646572206661696c6564",
                        "id": 17790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5134:61:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9f052cd32deaf089702c5a633cc2fa86f56d193511cd34a598a09ee7c8981d59",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - transfer to sender failed\""
                        },
                        "value": "DvPSettlement.executeSettlement - transfer to sender failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9f052cd32deaf089702c5a633cc2fa86f56d193511cd34a598a09ee7c8981d59",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - transfer to sender failed\""
                        }
                      ],
                      "id": 17774,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4950:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17791,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4950:255:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17792,
                  "nodeType": "ExpressionStatement",
                  "src": "4950:255:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17793,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "5216:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17795,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17794,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17686,
                          "src": "5228:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5216:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17796,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17544,
                      "src": "5216:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17797,
                        "name": "SettlementStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17526,
                        "src": "5241:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                          "typeString": "type(enum DvPSettlement.SettlementStatus)"
                        }
                      },
                      "id": 17798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "EXECUTED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5241:25:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "src": "5216:50:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                      "typeString": "enum DvPSettlement.SettlementStatus"
                    }
                  },
                  "id": 17800,
                  "nodeType": "ExpressionStatement",
                  "src": "5216:50:46"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17802,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17686,
                        "src": "5300:2:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17803,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "5304:3:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 17804,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5304:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 17801,
                      "name": "SettlementExecuted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17517,
                      "src": "5281:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 17805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5281:34:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17806,
                  "nodeType": "EmitStatement",
                  "src": "5276:39:46"
                }
              ]
            },
            "documentation": {
              "id": 17684,
              "nodeType": "StructuredDocumentation",
              "src": "3187:474:46",
              "text": " @notice Executes an existing Settlement with the sender as the counterparty\n @dev This function can only be successfully called by the designated counterparty unless\n the counterparty address is empty (0x0) in which case anyone can fulfill and execute the settlement\n @dev The counterparty must approve for this contract at least `counterpartyAmount` of tokens\n @param id the unsigned integer ID value for the Settlement to execute"
            },
            "functionSelector": "83c0b8ac",
            "id": 17808,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "executeSettlement",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 17687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17686,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17808,
                  "src": "3693:10:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3693:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3692:12:46"
            },
            "returnParameters": {
              "id": 17688,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3712:0:46"
            },
            "scope": 17871,
            "src": "3666:1656:46",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17869,
              "nodeType": "Block",
              "src": "5718:756:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17815,
                              "name": "settlements",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17549,
                              "src": "5749:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                              }
                            },
                            "id": 17817,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17816,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17811,
                              "src": "5761:2:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5749:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                              "typeString": "struct DvPSettlement.Settlement storage ref"
                            }
                          },
                          "id": 17818,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expirationDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17542,
                          "src": "5749:30:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17819,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "5782:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 17820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5782:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5749:48:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e657870697265536574746c656d656e74202d20736574746c656d656e74206973206e6f742065787069726564",
                        "id": 17822,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5811:60:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33065fd5e95a3cb4596a63cffcee0cf5a01dd961d07f1bf70726c613993c2f4a",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - settlement is not expired\""
                        },
                        "value": "DvPSettlement.expireSettlement - settlement is not expired"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33065fd5e95a3cb4596a63cffcee0cf5a01dd961d07f1bf70726c613993c2f4a",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - settlement is not expired\""
                        }
                      ],
                      "id": 17814,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5728:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5728:153:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17824,
                  "nodeType": "ExpressionStatement",
                  "src": "5728:153:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                          "typeString": "enum DvPSettlement.SettlementStatus"
                        },
                        "id": 17832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17826,
                              "name": "settlements",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17549,
                              "src": "5912:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                              }
                            },
                            "id": 17828,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17827,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17811,
                              "src": "5924:2:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5912:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                              "typeString": "struct DvPSettlement.Settlement storage ref"
                            }
                          },
                          "id": 17829,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17544,
                          "src": "5912:22:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                            "typeString": "enum DvPSettlement.SettlementStatus"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17830,
                            "name": "SettlementStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17526,
                            "src": "5938:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                              "typeString": "type(enum DvPSettlement.SettlementStatus)"
                            }
                          },
                          "id": 17831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "INITIALIZED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5938:28:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                            "typeString": "enum DvPSettlement.SettlementStatus"
                          }
                        },
                        "src": "5912:54:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e657870697265536574746c656d656e74202d206f6e6c7920494e495449414c495a454420736574746c656d656e74732063616e2062652065787069726564",
                        "id": 17833,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5980:78:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4c4755c773e8ed26c113e5350fcd98a7fa8398743b45ad408fe599799927bd05",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - only INITIALIZED settlements can be expired\""
                        },
                        "value": "DvPSettlement.expireSettlement - only INITIALIZED settlements can be expired"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4c4755c773e8ed26c113e5350fcd98a7fa8398743b45ad408fe599799927bd05",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - only INITIALIZED settlements can be expired\""
                        }
                      ],
                      "id": 17825,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5891:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5891:177:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17835,
                  "nodeType": "ExpressionStatement",
                  "src": "5891:177:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17844,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "6203:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17846,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17845,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17811,
                                    "src": "6215:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6203:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17847,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "creator",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17528,
                                "src": "6203:23:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17848,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "6244:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17850,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17849,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17811,
                                    "src": "6256:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6244:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17851,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "creatorAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17532,
                                "src": "6244:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 17838,
                                        "name": "settlements",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17549,
                                        "src": "6134:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                          "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                        }
                                      },
                                      "id": 17840,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 17839,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17811,
                                        "src": "6146:2:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6134:15:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                        "typeString": "struct DvPSettlement.Settlement storage ref"
                                      }
                                    },
                                    "id": 17841,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "creatorToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17530,
                                    "src": "6134:28:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17837,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39445,
                                  "src": "6127:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 17842,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6127:36:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$39445",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 17843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 39394,
                              "src": "6127:58:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 17852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6127:160:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 17853,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6126:162:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e657870697265536574746c656d656e74202d20726566756e64696e672063726561746f72206661696c6564",
                        "id": 17854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6302:59:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d1d9e2ef7d6f9a2c2f573da1970b57e7cdbdd790858a206ea0432541759f9146",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - refunding creator failed\""
                        },
                        "value": "DvPSettlement.expireSettlement - refunding creator failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d1d9e2ef7d6f9a2c2f573da1970b57e7cdbdd790858a206ea0432541759f9146",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - refunding creator failed\""
                        }
                      ],
                      "id": 17836,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6105:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6105:266:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17856,
                  "nodeType": "ExpressionStatement",
                  "src": "6105:266:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17857,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "6382:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17859,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17858,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17811,
                          "src": "6394:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6382:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17860,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17544,
                      "src": "6382:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17861,
                        "name": "SettlementStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17526,
                        "src": "6407:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                          "typeString": "type(enum DvPSettlement.SettlementStatus)"
                        }
                      },
                      "id": 17862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "EXPIRED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6407:24:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "src": "6382:49:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                      "typeString": "enum DvPSettlement.SettlementStatus"
                    }
                  },
                  "id": 17864,
                  "nodeType": "ExpressionStatement",
                  "src": "6382:49:46"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17866,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17811,
                        "src": "6464:2:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17865,
                      "name": "SettlementExpired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17521,
                      "src": "6446:17:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 17867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6446:21:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17868,
                  "nodeType": "EmitStatement",
                  "src": "6441:26:46"
                }
              ]
            },
            "documentation": {
              "id": 17809,
              "nodeType": "StructuredDocumentation",
              "src": "5328:340:46",
              "text": " @notice When called after a given settlement expires, it refunds tokens to the creator\n @dev This function can be called by anyone since there is no other possible outcome for\n a created settlement that has passed the expiration date\n @param id the unsigned integer ID value for the Settlement to expire"
            },
            "functionSelector": "22761cca",
            "id": 17870,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "expireSettlement",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 17812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17811,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17870,
                  "src": "5699:10:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5699:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5698:12:46"
            },
            "returnParameters": {
              "id": 17813,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5718:0:46"
            },
            "scope": 17871,
            "src": "5673:801:46",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 17872,
        "src": "337:6139:46"
      }
    ],
    "src": "41:6435:46"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/DvPSettlement.sol",
    "exportedSymbols": {
      "DvPSettlement": [
        17871
      ]
    },
    "id": 17872,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17496,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:46"
      },
      {
        "id": 17497,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:46"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 17498,
        "nodeType": "ImportDirective",
        "scope": 17872,
        "sourceUnit": 39446,
        "src": "101:64:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/utils/Counters.sol",
        "file": "openzeppelin-solidity/contracts/utils/Counters.sol",
        "id": 17499,
        "nodeType": "ImportDirective",
        "scope": 17872,
        "sourceUnit": 39560,
        "src": "166:60:46",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 17500,
          "nodeType": "StructuredDocumentation",
          "src": "228:108:46",
          "text": " @title DvPSettlement\n @dev Contract to manage any number of Delivery-versus-Payment Settlements"
        },
        "fullyImplemented": true,
        "id": 17871,
        "linearizedBaseContracts": [
          17871
        ],
        "name": "DvPSettlement",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 17503,
            "libraryName": {
              "contractScope": null,
              "id": 17501,
              "name": "Counters",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 39559,
              "src": "372:8:46",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Counters_$39559",
                "typeString": "library Counters"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "366:36:46",
            "typeName": {
              "contractScope": null,
              "id": 17502,
              "name": "Counters.Counter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 39519,
              "src": "385:16:46",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Counter_$39519_storage_ptr",
                "typeString": "struct Counters.Counter"
              }
            }
          },
          {
            "constant": false,
            "id": 17505,
            "mutability": "mutable",
            "name": "_settlementIds",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 17871,
            "src": "407:31:46",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Counter_$39519_storage",
              "typeString": "struct Counters.Counter"
            },
            "typeName": {
              "contractScope": null,
              "id": 17504,
              "name": "Counters.Counter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 39519,
              "src": "407:16:46",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Counter_$39519_storage_ptr",
                "typeString": "struct Counters.Counter"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17511,
            "name": "SettlementInitialized",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17507,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "settlementId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17511,
                  "src": "473:28:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17506,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "473:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17509,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "settlement",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17511,
                  "src": "503:21:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Settlement_$17545_memory_ptr",
                    "typeString": "struct DvPSettlement.Settlement"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 17508,
                    "name": "Settlement",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 17545,
                    "src": "503:10:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Settlement_$17545_storage_ptr",
                      "typeString": "struct DvPSettlement.Settlement"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "472:53:46"
            },
            "src": "445:81:46"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17517,
            "name": "SettlementExecuted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17516,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17513,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "settlementId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17517,
                  "src": "556:28:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17512,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "556:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17515,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "executor",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17517,
                  "src": "586:24:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17514,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "586:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "555:56:46"
            },
            "src": "531:81:46"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 17521,
            "name": "SettlementExpired",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 17520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17519,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "settlementId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17521,
                  "src": "641:28:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17518,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "641:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "640:30:46"
            },
            "src": "617:54:46"
          },
          {
            "canonicalName": "DvPSettlement.SettlementStatus",
            "id": 17526,
            "members": [
              {
                "id": 17522,
                "name": "NOT_EXISTS",
                "nodeType": "EnumValue",
                "src": "701:10:46"
              },
              {
                "id": 17523,
                "name": "INITIALIZED",
                "nodeType": "EnumValue",
                "src": "713:11:46"
              },
              {
                "id": 17524,
                "name": "EXECUTED",
                "nodeType": "EnumValue",
                "src": "726:8:46"
              },
              {
                "id": 17525,
                "name": "EXPIRED",
                "nodeType": "EnumValue",
                "src": "736:7:46"
              }
            ],
            "name": "SettlementStatus",
            "nodeType": "EnumDefinition",
            "src": "677:68:46"
          },
          {
            "canonicalName": "DvPSettlement.Settlement",
            "id": 17545,
            "members": [
              {
                "constant": false,
                "id": 17528,
                "mutability": "mutable",
                "name": "creator",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "779:15:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17527,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "779:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17530,
                "mutability": "mutable",
                "name": "creatorToken",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "804:20:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17529,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "804:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17532,
                "mutability": "mutable",
                "name": "creatorAmount",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "834:21:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17531,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "834:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17534,
                "mutability": "mutable",
                "name": "creatorBeneficiary",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "865:26:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17533,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "865:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17536,
                "mutability": "mutable",
                "name": "counterparty",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "901:20:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17535,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "901:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17538,
                "mutability": "mutable",
                "name": "counterpartyToken",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "931:25:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 17537,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "931:7:46",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17540,
                "mutability": "mutable",
                "name": "counterpartyAmount",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "966:26:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17539,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "966:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17542,
                "mutability": "mutable",
                "name": "expirationDate",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "1002:22:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17541,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1002:7:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17544,
                "mutability": "mutable",
                "name": "status",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 17545,
                "src": "1034:23:46",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                  "typeString": "enum DvPSettlement.SettlementStatus"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 17543,
                  "name": "SettlementStatus",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 17526,
                  "src": "1034:16:46",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                    "typeString": "enum DvPSettlement.SettlementStatus"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Settlement",
            "nodeType": "StructDefinition",
            "scope": 17871,
            "src": "751:313:46",
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "08df7dc8",
            "id": 17549,
            "mutability": "mutable",
            "name": "settlements",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 17871,
            "src": "1070:50:46",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
              "typeString": "mapping(uint256 => struct DvPSettlement.Settlement)"
            },
            "typeName": {
              "id": 17548,
              "keyType": {
                "id": 17546,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1079:7:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1070:31:46",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement)"
              },
              "valueType": {
                "contractScope": null,
                "id": 17547,
                "name": "Settlement",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 17545,
                "src": "1090:10:46",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Settlement_$17545_storage_ptr",
                  "typeString": "struct DvPSettlement.Settlement"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17682,
              "nodeType": "Block",
              "src": "2046:1134:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 17568,
                          "name": "expirationDate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17564,
                          "src": "2077:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17569,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "2094:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 17570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2094:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2077:32:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e637265617465536574746c656d656e74202d2065787069726174696f6e20646174652063616e6e6f7420626520696e207468652070617374",
                        "id": 17572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2123:72:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6b68c9c1637c0f177e8d3493fbf493ce3209c5532ed0c33e7d0e84cc4a2d98e3",
                          "typeString": "literal_string \"DvPSettlement.createSettlement - expiration date cannot be in the past\""
                        },
                        "value": "DvPSettlement.createSettlement - expiration date cannot be in the past"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6b68c9c1637c0f177e8d3493fbf493ce3209c5532ed0c33e7d0e84cc4a2d98e3",
                          "typeString": "literal_string \"DvPSettlement.createSettlement - expiration date cannot be in the past\""
                        }
                      ],
                      "id": 17567,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2056:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2056:149:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17574,
                  "nodeType": "ExpressionStatement",
                  "src": "2056:149:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17575,
                        "name": "_settlementIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17505,
                        "src": "2216:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$39519_storage",
                          "typeString": "struct Counters.Counter storage ref"
                        }
                      },
                      "id": 17577,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "increment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 39542,
                      "src": "2216:24:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$39519_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$39519_storage_ptr_$",
                        "typeString": "function (struct Counters.Counter storage pointer)"
                      }
                    },
                    "id": 17578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2216:26:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17579,
                  "nodeType": "ExpressionStatement",
                  "src": "2216:26:46"
                },
                {
                  "assignments": [
                    17581
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17581,
                      "mutability": "mutable",
                      "name": "id",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17682,
                      "src": "2252:10:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17580,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2252:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17585,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 17582,
                        "name": "_settlementIds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17505,
                        "src": "2265:14:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Counter_$39519_storage",
                          "typeString": "struct Counters.Counter storage ref"
                        }
                      },
                      "id": 17583,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "current",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 39530,
                      "src": "2265:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$39519_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$39519_storage_ptr_$",
                        "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)"
                      }
                    },
                    "id": 17584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2265:24:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2252:37:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17586,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2300:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17588,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17587,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2312:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2300:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17589,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17528,
                      "src": "2300:23:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17590,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "2326:3:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 17591,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2326:10:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2300:36:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17593,
                  "nodeType": "ExpressionStatement",
                  "src": "2300:36:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17594,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2346:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17596,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17595,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2358:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2346:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17597,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creatorToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17530,
                      "src": "2346:28:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17598,
                      "name": "creatorToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17552,
                      "src": "2377:12:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2346:43:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17600,
                  "nodeType": "ExpressionStatement",
                  "src": "2346:43:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17601,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2399:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17603,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17602,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2411:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2399:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17604,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creatorAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17532,
                      "src": "2399:29:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17605,
                      "name": "creatorAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17554,
                      "src": "2431:13:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2399:45:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17607,
                  "nodeType": "ExpressionStatement",
                  "src": "2399:45:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17608,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2454:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17610,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17609,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2466:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2454:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17611,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "creatorBeneficiary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17534,
                      "src": "2454:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17612,
                      "name": "creatorBeneficiary",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17556,
                      "src": "2491:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2454:55:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17614,
                  "nodeType": "ExpressionStatement",
                  "src": "2454:55:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17620,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17615,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2519:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17617,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17616,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2531:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2519:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17618,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "counterparty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17536,
                      "src": "2519:28:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17619,
                      "name": "counterparty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17558,
                      "src": "2550:12:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2519:43:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17621,
                  "nodeType": "ExpressionStatement",
                  "src": "2519:43:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17622,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2572:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17624,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17623,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2584:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2572:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17625,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "counterpartyToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17538,
                      "src": "2572:33:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17626,
                      "name": "counterpartyToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17560,
                      "src": "2608:17:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2572:53:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 17628,
                  "nodeType": "ExpressionStatement",
                  "src": "2572:53:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17634,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17629,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2635:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17631,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17630,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2647:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2635:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17632,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "counterpartyAmount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17540,
                      "src": "2635:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17633,
                      "name": "counterpartyAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17562,
                      "src": "2672:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2635:55:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17635,
                  "nodeType": "ExpressionStatement",
                  "src": "2635:55:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17636,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2700:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17638,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17637,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2712:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2700:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17639,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "expirationDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17542,
                      "src": "2700:30:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 17640,
                      "name": "expirationDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17564,
                      "src": "2733:14:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2700:47:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 17642,
                  "nodeType": "ExpressionStatement",
                  "src": "2700:47:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17649,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17643,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "2757:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17645,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17644,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "2769:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2757:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17646,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17544,
                      "src": "2757:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17647,
                        "name": "SettlementStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17526,
                        "src": "2782:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                          "typeString": "type(enum DvPSettlement.SettlementStatus)"
                        }
                      },
                      "id": 17648,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "INITIALIZED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2782:28:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "src": "2757:53:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                      "typeString": "enum DvPSettlement.SettlementStatus"
                    }
                  },
                  "id": 17650,
                  "nodeType": "ExpressionStatement",
                  "src": "2757:53:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17659,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "2922:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17661,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17660,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17581,
                                "src": "2934:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2922:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17662,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17528,
                            "src": "2922:23:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 17665,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "2971:4:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DvPSettlement_$17871",
                                  "typeString": "contract DvPSettlement"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DvPSettlement_$17871",
                                  "typeString": "contract DvPSettlement"
                                }
                              ],
                              "id": 17664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2963:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 17663,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2963:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 17666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2963:13:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17667,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "2994:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17669,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17668,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17581,
                                "src": "3006:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2994:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17670,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creatorAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17532,
                            "src": "2994:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17653,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "2849:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17655,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17654,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17581,
                                    "src": "2861:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2849:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17656,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "creatorToken",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17530,
                                "src": "2849:28:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 17652,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 39445,
                              "src": "2842:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 17657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2842:36:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$39445",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 17658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 39426,
                          "src": "2842:62:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 17671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2842:195:46",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e637265617465536574746c656d656e74202d207472616e7366657246726f6d206661696c6564",
                        "id": 17672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3051:54:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_03f1620064c05253727db20e02142edf4562176acfab6edbe85955d931c87a38",
                          "typeString": "literal_string \"DvPSettlement.createSettlement - transferFrom failed\""
                        },
                        "value": "DvPSettlement.createSettlement - transferFrom failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_03f1620064c05253727db20e02142edf4562176acfab6edbe85955d931c87a38",
                          "typeString": "literal_string \"DvPSettlement.createSettlement - transferFrom failed\""
                        }
                      ],
                      "id": 17651,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2821:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2821:294:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17674,
                  "nodeType": "ExpressionStatement",
                  "src": "2821:294:46"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17676,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17581,
                        "src": "3153:2:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17677,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "3157:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17679,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17678,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17581,
                          "src": "3169:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3157:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      ],
                      "id": 17675,
                      "name": "SettlementInitialized",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17511,
                      "src": "3131:21:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_struct$_Settlement_$17545_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,struct DvPSettlement.Settlement memory)"
                      }
                    },
                    "id": 17680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3131:42:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17681,
                  "nodeType": "EmitStatement",
                  "src": "3126:47:46"
                }
              ]
            },
            "documentation": {
              "id": 17550,
              "nodeType": "StructuredDocumentation",
              "src": "1127:641:46",
              "text": " @notice Creates a new Settlement in the contract's storage and transfers creator's tokens into the contract\n @dev The creator must approve for this contract at least `creatorAmount` of tokens\n @param creatorToken address of creator's ERC20 token\n @param creatorAmount amount of creator's ERC20 token to be exchanged\n @param counterparty address of counterparty OR 0x0 for open settlement\n @param counterpartyToken address of counterparty's ERC20 token\n @param counterpartyAmount amount of counterparty's ERC20 token to be exchanged\n @param expirationDate unix timestamp in seconds"
            },
            "functionSelector": "53fd599d",
            "id": 17683,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createSettlement",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 17565,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17552,
                  "mutability": "mutable",
                  "name": "creatorToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1808:20:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17551,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1808:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17554,
                  "mutability": "mutable",
                  "name": "creatorAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1838:21:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1838:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17556,
                  "mutability": "mutable",
                  "name": "creatorBeneficiary",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1869:26:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17555,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1869:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17558,
                  "mutability": "mutable",
                  "name": "counterparty",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1905:20:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17557,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1905:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17560,
                  "mutability": "mutable",
                  "name": "counterpartyToken",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1935:25:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17559,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1935:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17562,
                  "mutability": "mutable",
                  "name": "counterpartyAmount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "1970:26:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17561,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1970:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17564,
                  "mutability": "mutable",
                  "name": "expirationDate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17683,
                  "src": "2006:22:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17563,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2006:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1798:236:46"
            },
            "returnParameters": {
              "id": 17566,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2046:0:46"
            },
            "scope": 17871,
            "src": "1773:1407:46",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17807,
              "nodeType": "Block",
              "src": "3712:1610:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                          "typeString": "enum DvPSettlement.SettlementStatus"
                        },
                        "id": 17696,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17690,
                              "name": "settlements",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17549,
                              "src": "3743:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                              }
                            },
                            "id": 17692,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17691,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17686,
                              "src": "3755:2:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3743:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                              "typeString": "struct DvPSettlement.Settlement storage ref"
                            }
                          },
                          "id": 17693,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17544,
                          "src": "3743:22:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                            "typeString": "enum DvPSettlement.SettlementStatus"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17694,
                            "name": "SettlementStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17526,
                            "src": "3769:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                              "typeString": "type(enum DvPSettlement.SettlementStatus)"
                            }
                          },
                          "id": 17695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "INITIALIZED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3769:28:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                            "typeString": "enum DvPSettlement.SettlementStatus"
                          }
                        },
                        "src": "3743:54:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d20736574746c656d656e74206d75737420626520696e20696e697469616c697a656420737461747573",
                        "id": 17697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3811:76:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_77930d0aceb3dff328d46c651eee9836b8f939da1f656f617a65c768a46f900e",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - settlement must be in initialized status\""
                        },
                        "value": "DvPSettlement.executeSettlement - settlement must be in initialized status"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_77930d0aceb3dff328d46c651eee9836b8f939da1f656f617a65c768a46f900e",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - settlement must be in initialized status\""
                        }
                      ],
                      "id": 17689,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3722:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17698,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3722:175:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17699,
                  "nodeType": "ExpressionStatement",
                  "src": "3722:175:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17707,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17701,
                              "name": "settlements",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17549,
                              "src": "3928:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                              }
                            },
                            "id": 17703,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17702,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17686,
                              "src": "3940:2:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3928:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                              "typeString": "struct DvPSettlement.Settlement storage ref"
                            }
                          },
                          "id": 17704,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expirationDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17542,
                          "src": "3928:30:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17705,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "3961:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 17706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3961:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3928:48:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d20736574746c656d656e742065787069726564",
                        "id": 17708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3990:54:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8b90238e664a7f293b76c1336ec60163f396953a26549bdc19a59d099e21aa08",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - settlement expired\""
                        },
                        "value": "DvPSettlement.executeSettlement - settlement expired"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8b90238e664a7f293b76c1336ec60163f396953a26549bdc19a59d099e21aa08",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - settlement expired\""
                        }
                      ],
                      "id": 17700,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3907:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17709,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3907:147:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17710,
                  "nodeType": "ExpressionStatement",
                  "src": "3907:147:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 17728,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 17720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17712,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "4167:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17714,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17713,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17686,
                                "src": "4179:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4167:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17715,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "counterparty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17536,
                            "src": "4167:28:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4207:1:46",
                                "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": 17717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4199:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 17716,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4199:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 17719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4199:10:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4167:42:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 17727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17721,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "4213:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17723,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17722,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17686,
                                "src": "4225:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4213:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17724,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "counterparty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17536,
                            "src": "4213:28:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 17725,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4245:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 17726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4245:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4213:42:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4167:88:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d2073656e646572206e6f7420616c6c6f77656420746f206578656375746520736574746c656d656e74",
                        "id": 17729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4269:76:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a412d7e6f114713bbde7a83b1cc97a3f4c8db26b9f2c8fa660074f28295c1149",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - sender not allowed to execute settlement\""
                        },
                        "value": "DvPSettlement.executeSettlement - sender not allowed to execute settlement"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a412d7e6f114713bbde7a83b1cc97a3f4c8db26b9f2c8fa660074f28295c1149",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - sender not allowed to execute settlement\""
                        }
                      ],
                      "id": 17711,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4146:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4146:209:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17731,
                  "nodeType": "ExpressionStatement",
                  "src": "4146:209:46"
                },
                {
                  "assignments": [
                    17733
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17733,
                      "mutability": "mutable",
                      "name": "creatorReveiver",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 17807,
                      "src": "4442:23:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 17732,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4442:7:46",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 17753,
                  "initialValue": {
                    "argumentTypes": null,
                    "condition": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 17742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 17734,
                                "name": "settlements",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17549,
                                "src": "4469:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                  "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                }
                              },
                              "id": 17736,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 17735,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17686,
                                "src": "4481:2:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4469:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                "typeString": "struct DvPSettlement.Settlement storage ref"
                              }
                            },
                            "id": 17737,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creatorBeneficiary",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17534,
                            "src": "4469:34:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 17740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4515:1:46",
                                "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": 17739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4507:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 17738,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4507:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 17741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4507:10:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4469:48:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        }
                      ],
                      "id": 17743,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "4468:50:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17748,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "4559:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17750,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17749,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17686,
                          "src": "4571:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4559:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17751,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "creatorBeneficiary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17534,
                      "src": "4559:34:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 17752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "4468:125:46",
                    "trueExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17744,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "4533:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17746,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17745,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17686,
                          "src": "4545:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4533:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17747,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "creator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17528,
                      "src": "4533:23:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4442:151:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17762,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4743:3:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4743:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 17764,
                                "name": "creatorReveiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17733,
                                "src": "4771:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17765,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "4804:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17767,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17766,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17686,
                                    "src": "4816:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4804:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17768,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "counterpartyAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17540,
                                "src": "4804:34:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 17756,
                                        "name": "settlements",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17549,
                                        "src": "4665:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                          "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                        }
                                      },
                                      "id": 17758,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 17757,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17686,
                                        "src": "4677:2:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4665:15:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                        "typeString": "struct DvPSettlement.Settlement storage ref"
                                      }
                                    },
                                    "id": 17759,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "counterpartyToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17538,
                                    "src": "4665:33:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17755,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39445,
                                  "src": "4658:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 17760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4658:41:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$39445",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 17761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transferFrom",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 39426,
                              "src": "4658:67:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,address,uint256) external returns (bool)"
                              }
                            },
                            "id": 17769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4658:194:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 17770,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4657:196:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d207472616e7366657246726f6d2073656e646572206661696c6564",
                        "id": 17771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4867:62:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_75f2b646951e6b894b228b0fe9ab74c1c3f54f6fa7f0b07db5fb0ebbf73b25e0",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - transferFrom sender failed\""
                        },
                        "value": "DvPSettlement.executeSettlement - transferFrom sender failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_75f2b646951e6b894b228b0fe9ab74c1c3f54f6fa7f0b07db5fb0ebbf73b25e0",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - transferFrom sender failed\""
                        }
                      ],
                      "id": 17754,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4636:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17772,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4636:303:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17773,
                  "nodeType": "ExpressionStatement",
                  "src": "4636:303:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 17782,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "5048:3:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 17783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5048:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17784,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "5076:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17786,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17785,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17686,
                                    "src": "5088:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5076:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17787,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "creatorAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17532,
                                "src": "5076:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 17776,
                                        "name": "settlements",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17549,
                                        "src": "4979:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                          "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                        }
                                      },
                                      "id": 17778,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 17777,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17686,
                                        "src": "4991:2:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4979:15:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                        "typeString": "struct DvPSettlement.Settlement storage ref"
                                      }
                                    },
                                    "id": 17779,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "creatorToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17530,
                                    "src": "4979:28:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17775,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39445,
                                  "src": "4972:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 17780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4972:36:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$39445",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 17781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 39394,
                              "src": "4972:58:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 17788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4972:147:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 17789,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4971:149:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e65786563757465536574746c656d656e74202d207472616e7366657220746f2073656e646572206661696c6564",
                        "id": 17790,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5134:61:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9f052cd32deaf089702c5a633cc2fa86f56d193511cd34a598a09ee7c8981d59",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - transfer to sender failed\""
                        },
                        "value": "DvPSettlement.executeSettlement - transfer to sender failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9f052cd32deaf089702c5a633cc2fa86f56d193511cd34a598a09ee7c8981d59",
                          "typeString": "literal_string \"DvPSettlement.executeSettlement - transfer to sender failed\""
                        }
                      ],
                      "id": 17774,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4950:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17791,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4950:255:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17792,
                  "nodeType": "ExpressionStatement",
                  "src": "4950:255:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17793,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "5216:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17795,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17794,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17686,
                          "src": "5228:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5216:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17796,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17544,
                      "src": "5216:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17797,
                        "name": "SettlementStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17526,
                        "src": "5241:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                          "typeString": "type(enum DvPSettlement.SettlementStatus)"
                        }
                      },
                      "id": 17798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "EXECUTED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5241:25:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "src": "5216:50:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                      "typeString": "enum DvPSettlement.SettlementStatus"
                    }
                  },
                  "id": 17800,
                  "nodeType": "ExpressionStatement",
                  "src": "5216:50:46"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17802,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17686,
                        "src": "5300:2:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 17803,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "5304:3:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 17804,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5304:10:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 17801,
                      "name": "SettlementExecuted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17517,
                      "src": "5281:18:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address)"
                      }
                    },
                    "id": 17805,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5281:34:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17806,
                  "nodeType": "EmitStatement",
                  "src": "5276:39:46"
                }
              ]
            },
            "documentation": {
              "id": 17684,
              "nodeType": "StructuredDocumentation",
              "src": "3187:474:46",
              "text": " @notice Executes an existing Settlement with the sender as the counterparty\n @dev This function can only be successfully called by the designated counterparty unless\n the counterparty address is empty (0x0) in which case anyone can fulfill and execute the settlement\n @dev The counterparty must approve for this contract at least `counterpartyAmount` of tokens\n @param id the unsigned integer ID value for the Settlement to execute"
            },
            "functionSelector": "83c0b8ac",
            "id": 17808,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "executeSettlement",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 17687,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17686,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17808,
                  "src": "3693:10:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3693:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3692:12:46"
            },
            "returnParameters": {
              "id": 17688,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3712:0:46"
            },
            "scope": 17871,
            "src": "3666:1656:46",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 17869,
              "nodeType": "Block",
              "src": "5718:756:46",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17815,
                              "name": "settlements",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17549,
                              "src": "5749:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                              }
                            },
                            "id": 17817,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17816,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17811,
                              "src": "5761:2:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5749:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                              "typeString": "struct DvPSettlement.Settlement storage ref"
                            }
                          },
                          "id": 17818,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "expirationDate",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17542,
                          "src": "5749:30:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17819,
                            "name": "block",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -4,
                            "src": "5782:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_block",
                              "typeString": "block"
                            }
                          },
                          "id": 17820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "timestamp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5782:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5749:48:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e657870697265536574746c656d656e74202d20736574746c656d656e74206973206e6f742065787069726564",
                        "id": 17822,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5811:60:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33065fd5e95a3cb4596a63cffcee0cf5a01dd961d07f1bf70726c613993c2f4a",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - settlement is not expired\""
                        },
                        "value": "DvPSettlement.expireSettlement - settlement is not expired"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33065fd5e95a3cb4596a63cffcee0cf5a01dd961d07f1bf70726c613993c2f4a",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - settlement is not expired\""
                        }
                      ],
                      "id": 17814,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5728:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17823,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5728:153:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17824,
                  "nodeType": "ExpressionStatement",
                  "src": "5728:153:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                          "typeString": "enum DvPSettlement.SettlementStatus"
                        },
                        "id": 17832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 17826,
                              "name": "settlements",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17549,
                              "src": "5912:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                              }
                            },
                            "id": 17828,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 17827,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17811,
                              "src": "5924:2:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5912:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                              "typeString": "struct DvPSettlement.Settlement storage ref"
                            }
                          },
                          "id": 17829,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17544,
                          "src": "5912:22:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                            "typeString": "enum DvPSettlement.SettlementStatus"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 17830,
                            "name": "SettlementStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17526,
                            "src": "5938:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                              "typeString": "type(enum DvPSettlement.SettlementStatus)"
                            }
                          },
                          "id": 17831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "INITIALIZED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5938:28:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                            "typeString": "enum DvPSettlement.SettlementStatus"
                          }
                        },
                        "src": "5912:54:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e657870697265536574746c656d656e74202d206f6e6c7920494e495449414c495a454420736574746c656d656e74732063616e2062652065787069726564",
                        "id": 17833,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5980:78:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_4c4755c773e8ed26c113e5350fcd98a7fa8398743b45ad408fe599799927bd05",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - only INITIALIZED settlements can be expired\""
                        },
                        "value": "DvPSettlement.expireSettlement - only INITIALIZED settlements can be expired"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_4c4755c773e8ed26c113e5350fcd98a7fa8398743b45ad408fe599799927bd05",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - only INITIALIZED settlements can be expired\""
                        }
                      ],
                      "id": 17825,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5891:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5891:177:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17835,
                  "nodeType": "ExpressionStatement",
                  "src": "5891:177:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17844,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "6203:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17846,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17845,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17811,
                                    "src": "6215:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6203:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17847,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "creator",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17528,
                                "src": "6203:23:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 17848,
                                    "name": "settlements",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17549,
                                    "src": "6244:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                      "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                    }
                                  },
                                  "id": 17850,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 17849,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17811,
                                    "src": "6256:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6244:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                    "typeString": "struct DvPSettlement.Settlement storage ref"
                                  }
                                },
                                "id": 17851,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "creatorAmount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17532,
                                "src": "6244:29:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 17838,
                                        "name": "settlements",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17549,
                                        "src": "6134:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                                          "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                                        }
                                      },
                                      "id": 17840,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 17839,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17811,
                                        "src": "6146:2:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6134:15:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                                        "typeString": "struct DvPSettlement.Settlement storage ref"
                                      }
                                    },
                                    "id": 17841,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "creatorToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 17530,
                                    "src": "6134:28:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17837,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39445,
                                  "src": "6127:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$39445_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 17842,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6127:36:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$39445",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 17843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 39394,
                              "src": "6127:58:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 17852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6127:160:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 17853,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6126:162:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "447650536574746c656d656e742e657870697265536574746c656d656e74202d20726566756e64696e672063726561746f72206661696c6564",
                        "id": 17854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6302:59:46",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d1d9e2ef7d6f9a2c2f573da1970b57e7cdbdd790858a206ea0432541759f9146",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - refunding creator failed\""
                        },
                        "value": "DvPSettlement.expireSettlement - refunding creator failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d1d9e2ef7d6f9a2c2f573da1970b57e7cdbdd790858a206ea0432541759f9146",
                          "typeString": "literal_string \"DvPSettlement.expireSettlement - refunding creator failed\""
                        }
                      ],
                      "id": 17836,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6105:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6105:266:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17856,
                  "nodeType": "ExpressionStatement",
                  "src": "6105:266:46"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 17863,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 17857,
                          "name": "settlements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17549,
                          "src": "6382:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Settlement_$17545_storage_$",
                            "typeString": "mapping(uint256 => struct DvPSettlement.Settlement storage ref)"
                          }
                        },
                        "id": 17859,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 17858,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17811,
                          "src": "6394:2:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6382:15:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Settlement_$17545_storage",
                          "typeString": "struct DvPSettlement.Settlement storage ref"
                        }
                      },
                      "id": 17860,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17544,
                      "src": "6382:22:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 17861,
                        "name": "SettlementStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17526,
                        "src": "6407:16:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_SettlementStatus_$17526_$",
                          "typeString": "type(enum DvPSettlement.SettlementStatus)"
                        }
                      },
                      "id": 17862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "EXPIRED",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6407:24:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                        "typeString": "enum DvPSettlement.SettlementStatus"
                      }
                    },
                    "src": "6382:49:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_SettlementStatus_$17526",
                      "typeString": "enum DvPSettlement.SettlementStatus"
                    }
                  },
                  "id": 17864,
                  "nodeType": "ExpressionStatement",
                  "src": "6382:49:46"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 17866,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17811,
                        "src": "6464:2:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17865,
                      "name": "SettlementExpired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17521,
                      "src": "6446:17:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 17867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6446:21:46",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17868,
                  "nodeType": "EmitStatement",
                  "src": "6441:26:46"
                }
              ]
            },
            "documentation": {
              "id": 17809,
              "nodeType": "StructuredDocumentation",
              "src": "5328:340:46",
              "text": " @notice When called after a given settlement expires, it refunds tokens to the creator\n @dev This function can be called by anyone since there is no other possible outcome for\n a created settlement that has passed the expiration date\n @param id the unsigned integer ID value for the Settlement to expire"
            },
            "functionSelector": "22761cca",
            "id": 17870,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "expireSettlement",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 17812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17811,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 17870,
                  "src": "5699:10:46",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5699:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5698:12:46"
            },
            "returnParameters": {
              "id": 17813,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5718:0:46"
            },
            "scope": 17871,
            "src": "5673:801:46",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 17872,
        "src": "337:6139:46"
      }
    ],
    "src": "41:6435:46"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "1994": {
      "events": {
        "0xf059ff22963b773739a912cc5c0f2f358be1a072c66ba18e2c31e503fd012195": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "settlementId",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "executor",
              "type": "address"
            }
          ],
          "name": "SettlementExecuted",
          "type": "event"
        },
        "0xb225d3ed70d8e9aba9eff208c9b1d055ec421670b5037f3f1b3b3a7bd923efac": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "settlementId",
              "type": "uint256"
            }
          ],
          "name": "SettlementExpired",
          "type": "event"
        },
        "0xdfaefcb59efc7722ebdeb8d1ec6d1c3bb1c07a742e178a458fa00a45203cfbe2": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "settlementId",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "creator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "creatorToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creatorAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "creatorBeneficiary",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "counterparty",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "counterpartyToken",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "counterpartyAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expirationDate",
                  "type": "uint256"
                },
                {
                  "internalType": "enum DvPSettlement.SettlementStatus",
                  "name": "status",
                  "type": "uint8"
                }
              ],
              "indexed": false,
              "internalType": "struct DvPSettlement.Settlement",
              "name": "settlement",
              "type": "tuple"
            }
          ],
          "name": "SettlementInitialized",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x57Ae4f6526f9B23AefB2D9bD0377483CF591Aa42",
      "transactionHash": "0xee139008d10f526db7cfbd32d80ff367288f8af99f7679491c2eee27eb4b8823"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:18.059Z",
  "devdoc": {
    "details": "Contract to manage any number of Delivery-versus-Payment Settlements",
    "kind": "dev",
    "methods": {
      "createSettlement(address,uint256,address,address,address,uint256,uint256)": {
        "details": "The creator must approve for this contract at least `creatorAmount` of tokens",
        "params": {
          "counterparty": "address of counterparty OR 0x0 for open settlement",
          "counterpartyAmount": "amount of counterparty's ERC20 token to be exchanged",
          "counterpartyToken": "address of counterparty's ERC20 token",
          "creatorAmount": "amount of creator's ERC20 token to be exchanged",
          "creatorToken": "address of creator's ERC20 token",
          "expirationDate": "unix timestamp in seconds"
        }
      },
      "executeSettlement(uint256)": {
        "details": "This function can only be successfully called by the designated counterparty unless the counterparty address is empty (0x0) in which case anyone can fulfill and execute the settlementThe counterparty must approve for this contract at least `counterpartyAmount` of tokens",
        "params": {
          "id": "the unsigned integer ID value for the Settlement to execute"
        }
      },
      "expireSettlement(uint256)": {
        "details": "This function can be called by anyone since there is no other possible outcome for a created settlement that has passed the expiration date",
        "params": {
          "id": "the unsigned integer ID value for the Settlement to expire"
        }
      }
    },
    "title": "DvPSettlement",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "createSettlement(address,uint256,address,address,address,uint256,uint256)": {
        "notice": "Creates a new Settlement in the contract's storage and transfers creator's tokens into the contract"
      },
      "executeSettlement(uint256)": {
        "notice": "Executes an existing Settlement with the sender as the counterparty"
      },
      "expireSettlement(uint256)": {
        "notice": "When called after a given settlement expires, it refunds tokens to the creator"
      }
    },
    "version": 1
  }
}