{
  "contractName": "BaseLock",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC1155",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "collateralTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "CollateralWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "customer",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "condition",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "ConditionCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IERC1155",
          "name": "collateralContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "collateralTokenId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "DonateCollateral",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        }
      ],
      "name": "OracleCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        }
      ],
      "name": "OracleFinished",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oracleOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint64",
          "name": "oracleId",
          "type": "uint64"
        }
      ],
      "name": "OracleOwnerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "conditionOwners",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastCollateralBalanceFirstRoundMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastCollateralBalanceSecondRoundMap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxConditionId",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxOracleId",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155BatchReceived",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC1155Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "name": "usersWithdrewInFirstRound",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOracleOwner",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "changeOracleOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_time",
          "type": "uint256"
        }
      ],
      "name": "updateGracePeriodEnds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "donate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "gatherDeFiProfit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "collateralOwing",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC1155",
          "name": "_collateralContractAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_collateralTokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "withdrawCollateral",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "oracleOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "name": "isOracleFinished",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_condition",
          "type": "uint256"
        }
      ],
      "name": "isConditionalLocked",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_oracleId",
          "type": "uint64"
        }
      ],
      "name": "gracePeriodEnd",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC1155\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"collateralTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CollateralWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"customer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"condition\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ConditionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC1155\",\"name\":\"collateralContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"collateralTokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"DonateCollateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"}],\"name\":\"OracleCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"}],\"name\":\"OracleFinished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracleOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"oracleId\",\"type\":\"uint64\"}],\"name\":\"OracleOwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOracleOwner\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"changeOracleOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"collateralOwing\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"conditionOwners\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"donate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"gatherDeFiProfit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"gracePeriodEnd\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"}],\"name\":\"isConditionalLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"isOracleFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastCollateralBalanceFirstRoundMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"lastCollateralBalanceSecondRoundMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxConditionId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxOracleId\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"}],\"name\":\"oracleOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_time\",\"type\":\"uint256\"}],\"name\":\"updateGracePeriodEnds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"usersWithdrewInFirstRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC1155\",\"name\":\"_collateralContractAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_collateralTokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_oracleId\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_condition\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"withdrawCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Victor Porton One can also donate/bequest a smart wallet (explain how). We have two kinds of ERC-1155 token IDs: - conditional tokens: numbers < 2**64 - a combination of a collateral contract address and collateral token ID   (a counter of donated amount of collateral tokens, don't confuse with collateral tokens themselves) Inheriting from here don't forget to create `createOracle()` external method.\",\"events\":{\"CollateralWithdrawn(address,uint256,uint64,address,uint256)\":{\"params\":{\"amount\":\"The amount withdrawn.\",\"collateralTokenId\":\"The ERC-1155 token ID of the collateral.\",\"contractAddress\":\"The ERC-1155 contract of the collateral token.\",\"oracleId\":\"The oracle ID for which withdrawal is done.\",\"user\":\"Who has withdrawn.\"}},\"ConditionCreated(address,address,uint256,bytes)\":{\"params\":{\"condition\":\"The created condition ID.\",\"customer\":\"The owner of the condition.\",\"sender\":\"Who created the condition\"}},\"DonateCollateral(address,uint256,address,uint256,address,bytes)\":{\"params\":{\"amount\":\"The amount donated.\",\"collateralContractAddress\":\"The ERC-1155 contract of the donated token.\",\"collateralTokenId\":\"The ERC-1155 ID of the donated token.\",\"data\":\"Additional transaction data.\",\"sender\":\"Who donated.\",\"to\":\"Whose account the donation is assigned to.\"}},\"OracleCreated(address,uint64)\":{\"params\":{\"oracleId\":\"The ID of the created oracle.\"}},\"OracleFinished(uint64)\":{\"params\":{\"oracleId\":\"The oracle ID.\"}},\"OracleOwnerChanged(address,uint64)\":{\"params\":{\"oracleId\":\"The ID of the oracle.\",\"oracleOwner\":\"Who created an oracle\"}}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"changeOracleOwner(address,uint64)\":{\"params\":{\"_newOracleOwner\":\"New owner.\",\"_oracleId\":\"The oracle whose owner to change.\"}},\"collateralOwing(address,uint256,uint64,uint256,address)\":{\"params\":{\"_collateralContractAddress\":\"The ERC-1155 collateral token contract.\",\"_collateralTokenId\":\"The ERC-1155 collateral token ID.\",\"_condition\":\"The condition (the original receiver of a conditional token).\",\"_oracleId\":\"From which oracle's \\\"account\\\" to withdraw.\",\"_user\":\"The user to which we may owe.\"}},\"constructor\":{\"params\":{\"_uri\":\"Our ERC-1155 tokens description URI.\"}},\"donate(address,uint256,uint64,uint256,address,address,bytes)\":{\"params\":{\"_amount\":\"The amount to donate.\",\"_collateralContractAddress\":\"The collateral ERC-1155 contract address.\",\"_collateralTokenId\":\"The collateral ERC-1155 token ID.\",\"_data\":\"Additional transaction data.\",\"_from\":\"From whom to take the donation.\",\"_oracleId\":\"The oracle ID to whose ecosystem to donate to.\",\"_to\":\"On whose account the donation amount is assigned.\"}},\"gatherDeFiProfit(address,uint256,uint64,bytes)\":{\"params\":{\"_collateralContractAddress\":\"The collateral ERC-1155 contract address.\",\"_collateralTokenId\":\"The collateral ERC-1155 token ID.\",\"_data\":\"Additional transaction data.\",\"_oracleId\":\"The oracle ID to whose ecosystem to donate to.\"}},\"gracePeriodEnd(uint64)\":{\"params\":{\"_oracleId\":\"For which oracle.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"isConditionalLocked(address,uint256)\":{\"params\":{\"_condition\":\"The condition (the original receiver of a conditional token).\",\"_user\":\"Querying if locked for this user.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`.\"},\"oracleOwner(uint64)\":{\"params\":{\"_oracleId\":\"The oracle ID.\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"totalSupply(uint256)\":{\"params\":{\"id\":\"Token ID.\"},\"returns\":{\"_0\":\"Total supply.\"}},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"},\"withdrawCollateral(address,uint256,uint64,uint256,bytes)\":{\"params\":{\"_collateralContractAddress\":\"The ERC-1155 collateral token contract.\",\"_collateralTokenId\":\"The ERC-1155 collateral token ID.\",\"_condition\":\"The condition.\",\"_data\":\"Additional data. Notes: - It is made impossible to withdraw somebody's other collateral, as otherwise we can't mark non-active   accounts in grace period. - We can't transfer to somebody other than `msg.sender` because anybody can transfer   (needed for multi-level transfers). - After this function is called, it becomes impossible to transfer the corresponding conditional token   of `msg.sender` (to prevent its repeated withdrawal).\",\"_oracleId\":\"From which oracle's \\\"account\\\" to withdraw.\"}}},\"title\":\"A base class to lock collaterals and distribute them proportional to an oracle result.\",\"version\":1},\"userdoc\":{\"events\":{\"CollateralWithdrawn(address,uint256,uint64,address,uint256)\":{\"notice\":\"Emitted when collateral is withdrawn.\"},\"ConditionCreated(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an oracle owner is set.\"},\"DonateCollateral(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"Emitted when a collateral is donated.\"},\"OracleCreated(address,uint64)\":{\"notice\":\"Emitted when an oracle is created.\"},\"OracleFinished(uint64)\":{\"notice\":\"Emitted when an oracle is marked as having finished its work.\"},\"OracleOwnerChanged(address,uint64)\":{\"notice\":\"Emitted when an oracle owner is set.\"}},\"kind\":\"user\",\"methods\":{\"changeOracleOwner(address,uint64)\":{\"notice\":\"Modify the owner of an oracle.\"},\"collateralOwing(address,uint256,uint64,uint256,address)\":{\"notice\":\"Calculate how much collateral is owed to a user.\"},\"constructor\":{\"notice\":\"Constructor.\"},\"donate(address,uint256,uint64,uint256,address,address,bytes)\":{\"notice\":\"Donate funds in an ERC-1155 token. First, the collateral token need to be approved to be spent by this contract from the address `_from`. It also mints a token (with a different ID), that counts donations in that token.\"},\"gatherDeFiProfit(address,uint256,uint64,bytes)\":{\"notice\":\"Gather a DeFi profit of a token previous donated to this contact.\"},\"gracePeriodEnd(uint64)\":{\"notice\":\"Retrieve the end of the grace period.\"},\"isConditionalLocked(address,uint256)\":{\"notice\":\"Are transfers of a conditinal token locked? This is used to prevent its repeated withdrawal.\"},\"isOracleFinished(uint64)\":{\"notice\":\"Is the oracle marked as having finished its work? `oracleId` is the oracle ID.\"},\"oracleOwner(uint64)\":{\"notice\":\"Get the oracle owner.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \\\"gathering\\\" them before redeeming each oracle.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"notice\":\"An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \\\"gathering\\\" them before redeeming each oracle.\"},\"totalSupply(uint256)\":{\"notice\":\"Total supply of a token (conforms to `IERC1155Views`).\"},\"updateGracePeriodEnds(uint64,uint256)\":{\"notice\":\"Set the end time of the grace period. The first withdrawal can be done *only* during the grace period. The second withdrawal can be done after the end of the grace period and only if the first withdrawal was done. The intention of the grace period is to check which of users are active (\\\"alive\\\").\"},\"usersWithdrewInFirstRound(uint64)\":{\"notice\":\"Mapping (oracleId => amount user withdrew in first round) (see `docs/Calculations.md`).\"},\"withdrawCollateral(address,uint256,uint64,uint256,bytes)\":{\"notice\":\"Transfer to `msg.sender` the collateral ERC-1155 token. The amount transferred is proportional to the score of `_condition` by the oracle.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/user/Projects/future-contracts/contracts/BaseLock.sol\":\"BaseLock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"/home/user/Projects/future-contracts/contracts/BaseLock.sol\":{\"keccak256\":\"0x477edfd8178110507dd44a101ec4d45bd82e073a8441c30062a9ca3cc3742184\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://0188608bd813e9e1de9472d2c71264fa24655ec646cc59be93d56a648fab1c6c\",\"dweb:/ipfs/QmdERM9oNEvHgmes3AWG8zAyx4ueAFKtXGsegAfXUKryDW\"]},\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x7dcdf324fd4d2dec68846958865ae833956cb4ad80cd83cf6f107e7c33500bf6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cddf52afd931cbf983100a0415f04e6646aa90d100fd91437d2a75e3b241206\",\"dweb:/ipfs/QmXXJ2qoC1rSsKdg5s87m3BPQ3RFGw2rNrNv7KygzGJ9zQ\"]},\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol\":{\"keccak256\":\"0x1d5fcf7a70d6f5dcd4ddf25caece633a9b4d17154fb98b5fc9a5ae4600b2db15\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://9638d138ecec5f7f6651cf690295fdaaa99023d58555360fa801ace5cac88a9d\",\"dweb:/ipfs/QmUWf56QEe5uSfpHB7inMUGzufNZSxyu8aszLzoYMZHMYf\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xd6b90e604fb2eb2d641c7110c72440bf2dc999ec6ab8ff60f200e71ca75d1d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b92d8ab83b21ff984b1f0d6d66897d5afb1f2052004cbcb133cea023e0ae468\",\"dweb:/ipfs/QmTarypkQrFp4UMjTh7Zzhz2nZLz5uPS4nJQtHDEuwBVe6\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol\":{\"keccak256\":\"0x21428ca879b2437107322dfc1e214d25ecd6b966344961025ee412c3acfd5fc0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9747c875899d05823aede28b60ca8d3719b8c28018f397521c4ffb05041e1ac5\",\"dweb:/ipfs/QmQEQ4jJYEGFNfcngfZ3gPkcrcWYWKbo1Bq2F57scJxbmE\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol\":{\"keccak256\":\"0xfce008c2ddf19a62e29e056fdddfa10204b19417ae0f711913703e4ee9dec92c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37a7bb9249c0e8aaecd0c6f33fae7f03d15aebb015f5f7f1face393cfd58d75b\",\"dweb:/ipfs/QmevqbHb43sTLnpWzrGW9WvWvktMzuP5EzYHhqZox2A5v3\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x61321d2c86346045bf394885ee3afeecc65f9daad2694bc19110967588fd7b5d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1703b877203e0447ede72dcf73f1c4f2089b415bd1c44877904128a64fafed5b\",\"dweb:/ipfs/QmaZoYDo2FWtKcwCc9zuabU6zri8KV9xJrhU614d93sLid\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xd918cca1b659f588a6d12d05fd7196179a8b1eac9133d7f77da7ef3133e13256\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c75d578f42e2e2e427b934e6c41cc759be2d0a52155868308e915328c8feb2b\",\"dweb:/ipfs/QmbFNHtWAoNhe82Hy6yKTePWJRczqzp1APSBfLS9XfAN6e\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x2690a9b7f4f7489b8d25a4fc6bffc02ec3971fb41ed6c8b59adef2833bdab07c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8148c99452b6793ac9599abdc8bdaf4eeb47f34590beea8aa01089be14e2990c\",\"dweb:/ipfs/QmNdenmZ4EDfH9TuBas3pHeGuZvDNo2rsfgUj6ka8vuH37\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Holder.sol\":{\"keccak256\":\"0xdb2133d55b8f3a94313af8f4371ae0501a58e412d471b03d8581214c5ea2ce33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cea1e4bf769f27c8c9c1442f1518b49ef6c8b71a4bd4ce88353da9e9a8ba1704\",\"dweb:/ipfs/QmR1b8sj7fxgeHqDksV4GYTjZS1qajWC3yg9VCMUJus2bF\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x52146049d6709c870e8ddcd988b5155cb6c5d640cfcd8978aee52bc1ba2ec4eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ada84513617b7c1b2f890b44503735abaec73a1acd030112a17aac7e6c66a4a1\",\"dweb:/ipfs/QmaiFwdio67iJrfjAdkMac24eJ5sS1qD7CZW6PhUU6KjiK\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6a15ddddcbf29d2922a1e0d4151b5d2d33da24b93cc9ebc12390e0d855532f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c119bcaecfa853d564ac88d312777f75fa1126a3bca88a3371adb0ad9f35cb0\",\"dweb:/ipfs/QmY9UPuXeSKq86Zh38fE43VGQPhKMN34mkuFSFqPcr6nvZ\"]},\"abdk-libraries-solidity/ABDKMath64x64.sol\":{\"keccak256\":\"0x67609bc0923563d05d3a8a7c681056f9702a92120777cb0bcbb40d0afbb4a015\",\"license\":\"BSD-4-Clause\",\"urls\":[\"bzz-raw://55e817969394d4e0201a8cd3763ad6776bc9fddc986febe9b4acf120e8b7ad0d\",\"dweb:/ipfs/QmNMve5ZjUfA8DJYic4sYTrDEAN6VyxcC7jWUTX25Wmnnp\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: LGPL-3.0-or-later\npragma solidity ^0.7.1;\nimport { SafeMath } from \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport { ABDKMath64x64 } from \"abdk-libraries-solidity/ABDKMath64x64.sol\";\nimport { ERC1155WithTotals } from \"./ERC1155/ERC1155WithTotals.sol\";\nimport { ERC1155Holder } from \"@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol\";\nimport { IERC1155 } from \"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\";\nimport { ERC721Holder } from \"@openzeppelin/contracts/token/ERC721/ERC721Holder.sol\";\n\n/// @title A base class to lock collaterals and distribute them proportional to an oracle result.\n/// @author Victor Porton\n///\n/// One can also donate/bequest a smart wallet (explain how).\n///\n/// We have two kinds of ERC-1155 token IDs:\n/// - conditional tokens: numbers < 2**64\n/// - a combination of a collateral contract address and collateral token ID\n///   (a counter of donated amount of collateral tokens, don't confuse with collateral tokens themselves)\n///\n/// Inheriting from here don't forget to create `createOracle()` external method.\nabstract contract BaseLock is\n    ERC1155WithTotals,\n    ERC1155Holder, // You are recommended to use `donate()` function instead.\n    ERC721Holder // It can be used through an ERC-1155 wrapper.\n{\n    using ABDKMath64x64 for int128;\n    using SafeMath for uint256;\n\n    /// Emitted when an oracle is created.\n    /// @param oracleId The ID of the created oracle.\n    event OracleCreated(address sender, uint64 oracleId);\n\n    /// Emitted when an oracle owner is set.\n    /// @param oracleOwner Who created an oracle\n    /// @param oracleId The ID of the oracle.\n    event OracleOwnerChanged(address indexed oracleOwner, uint64 indexed oracleId);\n\n    /// Emitted when an oracle owner is set.\n    /// @param sender Who created the condition\n    /// @param customer The owner of the condition.\n    /// @param condition The created condition ID.\n    event ConditionCreated(address indexed sender, address indexed customer, uint256 indexed condition, bytes data);\n\n    /// Emitted when a collateral is donated.\n    /// @param collateralContractAddress The ERC-1155 contract of the donated token.\n    /// @param collateralTokenId The ERC-1155 ID of the donated token.\n    /// @param sender Who donated.\n    /// @param amount The amount donated.\n    /// @param to Whose account the donation is assigned to.\n    /// @param data Additional transaction data.\n    event DonateCollateral(\n        IERC1155 indexed collateralContractAddress,\n        uint256 indexed collateralTokenId,\n        address indexed sender,\n        uint256 amount,\n        address to,\n        bytes data\n    );\n\n    /// Emitted when an oracle is marked as having finished its work.\n    /// @param oracleId The oracle ID.\n    event OracleFinished(uint64 indexed oracleId);\n\n    /// Emitted when collateral is withdrawn.\n    /// @param contractAddress The ERC-1155 contract of the collateral token.\n    /// @param collateralTokenId The ERC-1155 token ID of the collateral.\n    /// @param oracleId The oracle ID for which withdrawal is done.\n    /// @param user Who has withdrawn.\n    /// @param amount The amount withdrawn.\n    event CollateralWithdrawn(\n        IERC1155 indexed contractAddress,\n        uint256 indexed collateralTokenId,\n        uint64 indexed oracleId,\n        address user,\n        uint256 amount\n    );\n\n    // Next ID.\n    uint64 public maxOracleId; // It doesn't really need to be public.\n    uint64 public maxConditionId; // It doesn't really need to be public.\n\n    // Mapping (oracleId => oracle owner).\n    mapping(uint64 => address) private oracleOwnersMap;\n    // Mapping (oracleId => time) the max time for first withdrawal.\n    mapping(uint64 => uint) private gracePeriodEnds;\n    // The user lost the right to transfer conditional tokens: (user => (conditionalToken => bool)).\n    mapping(address => mapping(uint256 => bool)) private userUsedRedeemMap;\n    // Mapping (token => (original user => amount)) used to calculate withdrawal of collateral amounts.\n    mapping(uint256 => mapping(address => uint256)) public lastCollateralBalanceFirstRoundMap;\n    // Mapping (token => (original user => amount)) used to calculate withdrawal of collateral amounts.\n    mapping(uint256 => mapping(address => uint256)) public lastCollateralBalanceSecondRoundMap;\n    /// Mapping (oracleId => amount user withdrew in first round) (see `docs/Calculations.md`).\n    mapping(uint64 => uint256) public usersWithdrewInFirstRound;\n\n    // Mapping (condition ID => original account)\n    mapping(uint256 => address) public conditionOwners;\n\n    /// Constructor.\n    /// @param _uri Our ERC-1155 tokens description URI.\n    constructor(string memory _uri) ERC1155WithTotals(_uri) {\n        _registerInterface(\n            BaseLock(0).onERC1155Received.selector ^\n            BaseLock(0).onERC1155BatchReceived.selector ^\n            BaseLock(0).onERC721Received.selector\n        );\n    }\n\n    /// This function makes no sense, because it would produce a condition with zero tokens.\n    // function createCondition() public returns (uint64) {\n    //     return _createCondition();\n    // }\n\n    /// Modify the owner of an oracle.\n    /// @param _newOracleOwner New owner.\n    /// @param _oracleId The oracle whose owner to change.\n    function changeOracleOwner(address _newOracleOwner, uint64 _oracleId) public _isOracle(_oracleId) {\n        oracleOwnersMap[_oracleId] = _newOracleOwner;\n        emit OracleOwnerChanged(_newOracleOwner, _oracleId);\n    }\n\n    /// Set the end time of the grace period.\n    ///\n    /// The first withdrawal can be done *only* during the grace period.\n    /// The second withdrawal can be done after the end of the grace period and only if the first withdrawal was done.\n    ///\n    /// The intention of the grace period is to check which of users are active (\"alive\").\n    function updateGracePeriodEnds(uint64 _oracleId, uint _time) public _isOracle(_oracleId) {\n        gracePeriodEnds[_oracleId] = _time;\n    }\n\n    /// Donate funds in an ERC-1155 token.\n    ///\n    /// First, the collateral token need to be approved to be spent by this contract from the address `_from`.\n    ///\n    /// It also mints a token (with a different ID), that counts donations in that token.\n    ///\n    /// @param _collateralContractAddress The collateral ERC-1155 contract address.\n    /// @param _collateralTokenId The collateral ERC-1155 token ID.\n    /// @param _oracleId The oracle ID to whose ecosystem to donate to.\n    /// @param _amount The amount to donate.\n    /// @param _from From whom to take the donation.\n    /// @param _to On whose account the donation amount is assigned.\n    /// @param _data Additional transaction data.\n    function donate(\n        IERC1155 _collateralContractAddress,\n        uint256 _collateralTokenId,\n        uint64 _oracleId,\n        uint256 _amount,\n        address _from,\n        address _to,\n        bytes calldata _data) public\n    {\n        uint _donatedPerOracleCollateralTokenId = _collateralDonatedPerOracleTokenId(_collateralContractAddress, _collateralTokenId, _oracleId);\n        _mint(_to, _donatedPerOracleCollateralTokenId, _amount, _data);\n        uint _donatedCollateralTokenId = _collateralDonatedTokenId(_collateralContractAddress, _collateralTokenId);\n        _mint(_to, _donatedCollateralTokenId, _amount, _data);\n        emit DonateCollateral(_collateralContractAddress, _collateralTokenId, _from, _amount, _to, _data);\n        _collateralContractAddress.safeTransferFrom(_from, address(this), _collateralTokenId, _amount, _data); // last against reentrancy attack\n    }\n\n    /// Gather a DeFi profit of a token previous donated to this contact.\n    /// @param _collateralContractAddress The collateral ERC-1155 contract address.\n    /// @param _collateralTokenId The collateral ERC-1155 token ID.\n    /// @param _oracleId The oracle ID to whose ecosystem to donate to.\n    /// @param _data Additional transaction data.\n    function gatherDeFiProfit(\n        IERC1155 _collateralContractAddress,\n        uint256 _collateralTokenId,\n        uint64 _oracleId,\n        bytes calldata _data) external\n    {\n        uint _donatedPerOracleCollateralTokenId = _collateralDonatedPerOracleTokenId(_collateralContractAddress, _collateralTokenId, _oracleId);\n        uint _donatedCollateralTokenId = _collateralDonatedTokenId(_collateralContractAddress, _collateralTokenId);\n\n        // We consider an overflow an error and just revert:\n        uint256 _difference =\n            _collateralContractAddress.balanceOf(address(this), _collateralTokenId).sub(\n                balanceOf(address(this), _donatedCollateralTokenId));\n        uint256 _amount = // rounding down to prevent overflows\n            _difference *\n            balanceOf(address(this), _donatedPerOracleCollateralTokenId) /\n            balanceOf(address(this), _donatedCollateralTokenId);\n\n        // Last to avoid reentrancy vulnerability.\n        donate(\n            _collateralContractAddress,\n            _collateralTokenId,\n            _oracleId,\n            _amount,\n            address(this),\n            address(this),\n            _data);\n    }\n\n    /// Calculate how much collateral is owed to a user.\n    /// @param _collateralContractAddress The ERC-1155 collateral token contract.\n    /// @param _collateralTokenId The ERC-1155 collateral token ID.\n    /// @param _oracleId From which oracle's \"account\" to withdraw.\n    /// @param _condition The condition (the original receiver of a conditional token).\n    /// @param _user The user to which we may owe.\n    function collateralOwing(\n        IERC1155 _collateralContractAddress,\n        uint256 _collateralTokenId,\n        uint64 _oracleId,\n        uint256 _condition,\n        address _user\n    ) external view returns(uint256) {\n        bool _inFirstRound = _isInFirstRound(_oracleId);\n        (, uint256 _donated) =\n            _collateralOwingBase(_collateralContractAddress, _collateralTokenId, _oracleId, _condition, _user, _inFirstRound);\n        return _donated;\n    }\n\n    /// Transfer to `msg.sender` the collateral ERC-1155 token.\n    ///\n    /// The amount transferred is proportional to the score of `_condition` by the oracle.\n    /// @param _collateralContractAddress The ERC-1155 collateral token contract.\n    /// @param _collateralTokenId The ERC-1155 collateral token ID.\n    /// @param _oracleId From which oracle's \"account\" to withdraw.\n    /// @param _condition The condition.\n    /// @param _data Additional data.\n    ///\n    /// Notes:\n    /// - It is made impossible to withdraw somebody's other collateral, as otherwise we can't mark non-active\n    ///   accounts in grace period.\n    /// - We can't transfer to somebody other than `msg.sender` because anybody can transfer\n    ///   (needed for multi-level transfers).\n    /// - After this function is called, it becomes impossible to transfer the corresponding conditional token\n    ///   of `msg.sender` (to prevent its repeated withdrawal).\n    function withdrawCollateral(\n        IERC1155 _collateralContractAddress,\n        uint256 _collateralTokenId,\n        uint64 _oracleId,\n        uint256 _condition,\n        bytes calldata _data) external\n    {\n        require(isOracleFinished(_oracleId), \"too early\"); // to prevent the denominator or the numerators change meantime\n        bool _inFirstRound = _isInFirstRound(_oracleId);\n        userUsedRedeemMap[msg.sender][_condition] = true;\n        // _burn(msg.sender, _condition, conditionalBalance); // Burning it would break using the same token for multiple markets.\n        (uint _donatedPerOracleCollateralTokenId, uint256 _owingDonated) =\n            _collateralOwingBase(_collateralContractAddress, _collateralTokenId, _oracleId, _condition, msg.sender, _inFirstRound);\n\n        // Against rounding errors. Not necessary because of rounding down.\n        // if(_owing > balanceOf(address(this), _collateralTokenId)) _owing = balanceOf(address(this), _collateralTokenId);\n\n        if (_owingDonated != 0) {\n            uint256 _newTotal = totalSupply(_donatedPerOracleCollateralTokenId);\n            if (_inFirstRound) {\n                lastCollateralBalanceFirstRoundMap[_donatedPerOracleCollateralTokenId][msg.sender] = _newTotal;\n            } else {\n                lastCollateralBalanceSecondRoundMap[_donatedPerOracleCollateralTokenId][msg.sender] = _newTotal;\n            }\n        }\n        if (!_inFirstRound) {\n            usersWithdrewInFirstRound[_oracleId] = usersWithdrewInFirstRound[_oracleId].add(_owingDonated);\n        }\n        // Last to prevent reentrancy attack:\n        _collateralContractAddress.safeTransferFrom(address(this), msg.sender, _collateralTokenId, _owingDonated, _data);\n        emit CollateralWithdrawn(\n            _collateralContractAddress,\n            _collateralTokenId,\n            _oracleId,\n            msg.sender,\n            _owingDonated\n        );\n    }\n\n    /// An ERC-1155 function.\n    ///\n    /// We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming\n    /// each oracle.\n    function safeTransferFrom(\n        address _from,\n        address _to,\n        uint256 _id,\n        uint256 _value,\n        bytes calldata _data\n    )\n        public override\n    {\n        _checkTransferAllowed(_id, _from);\n        _baseSafeTransferFrom(_from, _to, _id, _value, _data);\n    }\n\n    /// An ERC-1155 function.\n    ///\n    /// We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming\n    /// each oracle.\n    function safeBatchTransferFrom(\n        address _from,\n        address _to,\n        uint256[] calldata _ids,\n        uint256[] calldata _values,\n        bytes calldata _data\n    )\n        public override\n    {\n        for(uint _i = 0; _i < _ids.length; ++_i) {\n            _checkTransferAllowed(_ids[_i], _from);\n        }\n        _baseSafeBatchTransferFrom(_from, _to, _ids, _values, _data);\n    }\n\n    // Getters //\n\n    /// Get the oracle owner.\n    /// @param _oracleId The oracle ID.\n    function oracleOwner(uint64 _oracleId) public view returns (address) {\n        return oracleOwnersMap[_oracleId];\n    }\n\n    /// Is the oracle marked as having finished its work?\n    ///\n    /// `oracleId` is the oracle ID.\n    function isOracleFinished(uint64 /*oracleId*/) public virtual view returns (bool) {\n        return true;\n    }\n\n    /// Are transfers of a conditinal token locked?\n    ///\n    /// This is used to prevent its repeated withdrawal.\n    /// @param _user Querying if locked for this user.\n    /// @param _condition The condition (the original receiver of a conditional token).\n    function isConditionalLocked(address _user, uint256 _condition) public view returns (bool) {\n        return userUsedRedeemMap[_user][_condition];\n    }\n\n    /// Retrieve the end of the grace period.\n    /// @param _oracleId For which oracle.\n    function gracePeriodEnd(uint64 _oracleId) public view returns (uint) {\n        return gracePeriodEnds[_oracleId];\n    }\n\n    // Virtual functions //\n\n    /// Current address of a user.\n    /// @param _originalAddress The original address of the user.\n    function originalToCurrentAddress(address _originalAddress) internal virtual returns (address) {\n        return _originalAddress;\n    }\n\n    /// Mint a conditional to a customer.\n    function _mintToCustomer(address _customer, uint256 _condition, uint256 _amount, bytes memory _data)\n        internal virtual\n    {\n        require(conditionOwners[_condition] == _customer, \"Other's salary get attempt.\");\n        _mint(originalToCurrentAddress(_customer), _condition, _amount, _data);\n    }\n\n    /// Calculate the share of a condition in an oracle's market.\n    /// @param _oracleId The oracle ID.\n    /// @return Uses `ABDKMath64x64` number ID.\n    function _calcRewardShare(uint64 _oracleId, uint256 _condition) internal virtual view returns (int128);\n\n    function _calcMultiplier(uint64 _oracleId, uint256 _condition, int128 _oracleShare) internal virtual view returns (int128) {\n        int128 _rewardShare = _calcRewardShare(_oracleId, _condition);\n        return _oracleShare.mul(_rewardShare);\n    }\n\n    function _doTransfer(uint256 _id, address _from, address _to, uint256 _value) internal virtual {\n        _balances[_id][_from] = _balances[_id][_from].sub(_value);\n        _balances[_id][_to] = _value.add(_balances[_id][_to]);\n    }\n\n    // Internal //\n\n    /// Generate the ERC-1155 token ID that counts amount of donations per oracle for a ERC-1155 collateral token.\n    /// @param _collateralContractAddress The ERC-1155 contract of the collateral token.\n    /// @param _collateralTokenId The ERC-1155 ID of the collateral token.\n    /// @param _oracleId The oracle ID.\n    /// Note: It does not conflict with other tokens kinds, because the only other one is the uint64 conditional.\n    function _collateralDonatedPerOracleTokenId(IERC1155 _collateralContractAddress, uint256 _collateralTokenId, uint64 _oracleId)\n        internal pure returns (uint256)\n    {\n        return uint256(keccak256(abi.encodePacked(_collateralContractAddress, _collateralTokenId, _oracleId)));\n    }\n\n    /// Generate the ERC-1155 token ID that counts amount of donations for a ERC-1155 collateral token.\n    /// @param _collateralContractAddress The ERC-1155 contract of the collateral token.\n    /// @param _collateralTokenId The ERC-1155 ID of the collateral token.\n    /// Note: It does not conflict with other tokens kinds, because the only other one is the uint64 conditional.\n    function _collateralDonatedTokenId(IERC1155 _collateralContractAddress, uint256 _collateralTokenId)\n        internal pure returns (uint256)\n    {\n        return uint256(keccak256(abi.encodePacked(_collateralContractAddress, _collateralTokenId)));\n    }\n\n    function _checkTransferAllowed(uint256 _id, address _from) internal view {\n        require(!userUsedRedeemMap[_from][_id], \"You can't trade conditional tokens after redeem.\");\n    }\n\n    function _baseSafeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes memory _data) private {\n        require(_to != address(0), \"ERC1155: target address must be non-zero\");\n        require(\n            _from == msg.sender || _operatorApprovals[_from][msg.sender] == true,\n            \"ERC1155: need operator approval for 3rd party transfers.\"\n        );\n\n        _doTransfer(_id, _from, _to, _value);\n\n        emit TransferSingle(msg.sender, _from, _to, _id, _value);\n\n        _doSafeTransferAcceptanceCheck(msg.sender, _from, _to, _id, _value, _data);\n    }\n\n    function _baseSafeBatchTransferFrom(\n        address _from,\n        address _to,\n        uint256[] memory _ids,\n        uint256[] memory _values,\n        bytes memory _data\n    )\n        private\n    {\n        require(_ids.length == _values.length, \"ERC1155: IDs and _values must have same lengths\");\n        require(_to != address(0), \"ERC1155: target address must be non-zero\");\n        require(\n            _from == msg.sender || _operatorApprovals[_from][msg.sender] == true,\n            \"ERC1155: need operator approval for 3rd party transfers.\"\n        );\n\n        for (uint256 _i = 0; _i < _ids.length; ++_i) {\n            uint256 _id = _ids[_i];\n            uint256 _value = _values[_i];\n\n            _doTransfer(_id, _from, _to, _value);\n        }\n\n        emit TransferBatch(msg.sender, _from, _to, _ids, _values);\n\n        _doSafeBatchTransferAcceptanceCheck(msg.sender, _from, _to, _ids, _values, _data);\n    }\n\n    function _createOracle(address _oracleOwner) internal returns (uint64) {\n        uint64 _oracleId = ++maxOracleId;\n        oracleOwnersMap[_oracleId] = _oracleOwner;\n        emit OracleCreated(msg.sender, _oracleId);\n        emit OracleOwnerChanged(_oracleOwner, _oracleId);\n        return _oracleId;\n    }\n\n    /// Start with 1, not 0, to avoid glitch with `conditionalTokens` variable.\n    ///\n    /// TODO: Use uint64 variables instead?\n    function _doCreateCondition(address _customer, bytes memory _data) internal virtual returns (uint256) {\n        uint64 _condition = ++maxConditionId;\n\n        conditionOwners[_condition] = _customer;\n\n        emit ConditionCreated(msg.sender, _customer, _condition, _data);\n\n        return _condition;\n    }\n\n    function _collateralOwingBase(\n        IERC1155 _collateralContractAddress,\n        uint256 _collateralTokenId,\n        uint64 _oracleId,\n        uint256 _condition,\n        address _user,\n        bool _inFirstRound\n    )\n        private view returns (uint _donatedPerOracleCollateralTokenId, uint256 _donated)\n    {\n        uint256 _conditionalBalance = balanceOf(_user, _condition);\n        uint256 _totalConditionalBalance =\n            _inFirstRound ? totalSupply(_condition) : usersWithdrewInFirstRound[_oracleId];\n        _donatedPerOracleCollateralTokenId = _collateralDonatedPerOracleTokenId(_collateralContractAddress, _collateralTokenId, _oracleId);\n        // Rounded to below for no out-of-funds:\n        int128 _oracleShare = ABDKMath64x64.divu(_conditionalBalance, _totalConditionalBalance);\n        uint256 _newDividendsDonated =\n            totalSupply(_donatedPerOracleCollateralTokenId) -\n            (_inFirstRound\n                ? lastCollateralBalanceFirstRoundMap[_donatedPerOracleCollateralTokenId][_user] \n                : lastCollateralBalanceSecondRoundMap[_donatedPerOracleCollateralTokenId][_user]);\n        int128 _multiplier = _calcMultiplier(_oracleId, _condition, _oracleShare);\n        _donated = _multiplier.mulu(_newDividendsDonated);\n    }\n\n    function _isInFirstRound(uint64 _oracleId) internal view returns (bool) {\n        return block.timestamp <= gracePeriodEnds[_oracleId];\n    }\n\n    function _isConditional(uint256 _tokenId) internal pure returns (bool) {\n        // Zero 2**-192 probability that tokenId < (1<<64) if it's not a conditional.\n        // Note to auditor: It's a hack, check for no errors carefully.\n        return _tokenId < (1<<64);\n    }\n\n    modifier _isOracle(uint64 _oracleId) {\n        require(oracleOwnersMap[_oracleId] == msg.sender, \"Not the oracle owner.\");\n        _;\n    }\n\n    modifier checkIsConditional(uint256 _tokenId) {\n        require(_isConditional(_tokenId), \"It's not your conditional.\");\n        _;\n    }\n}\n",
  "sourcePath": "/home/user/Projects/future-contracts/contracts/BaseLock.sol",
  "ast": {
    "absolutePath": "/home/user/Projects/future-contracts/contracts/BaseLock.sol",
    "exportedSymbols": {
      "ABDKMath64x64": [
        9904
      ],
      "BaseLock": [
        1494
      ],
      "ERC1155Holder": [
        4504
      ],
      "ERC1155WithTotals": [
        3651
      ],
      "ERC721Holder": [
        5668
      ],
      "IERC1155": [
        4654
      ],
      "SafeMath": [
        4453
      ]
    },
    "id": 1495,
    "license": "LGPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 294,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".1"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:1"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 296,
        "nodeType": "ImportDirective",
        "scope": 1495,
        "sourceUnit": 4454,
        "src": "70:69:1",
        "symbolAliases": [
          {
            "foreign": {
              "id": 295,
              "name": "SafeMath",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "79:8:1",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "abdk-libraries-solidity/ABDKMath64x64.sol",
        "file": "abdk-libraries-solidity/ABDKMath64x64.sol",
        "id": 298,
        "nodeType": "ImportDirective",
        "scope": 1495,
        "sourceUnit": 9905,
        "src": "140:74:1",
        "symbolAliases": [
          {
            "foreign": {
              "id": 297,
              "name": "ABDKMath64x64",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "149:13:1",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol",
        "file": "./ERC1155/ERC1155WithTotals.sol",
        "id": 300,
        "nodeType": "ImportDirective",
        "scope": 1495,
        "sourceUnit": 3652,
        "src": "215:68:1",
        "symbolAliases": [
          {
            "foreign": {
              "id": 299,
              "name": "ERC1155WithTotals",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "224:17:1",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol",
        "id": 302,
        "nodeType": "ImportDirective",
        "scope": 1495,
        "sourceUnit": 4505,
        "src": "284:88:1",
        "symbolAliases": [
          {
            "foreign": {
              "id": 301,
              "name": "ERC1155Holder",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "293:13:1",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
        "id": 304,
        "nodeType": "ImportDirective",
        "scope": 1495,
        "sourceUnit": 4655,
        "src": "373:78:1",
        "symbolAliases": [
          {
            "foreign": {
              "id": 303,
              "name": "IERC1155",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "382:8:1",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Holder.sol",
        "file": "@openzeppelin/contracts/token/ERC721/ERC721Holder.sol",
        "id": 306,
        "nodeType": "ImportDirective",
        "scope": 1495,
        "sourceUnit": 5669,
        "src": "452:85:1",
        "symbolAliases": [
          {
            "foreign": {
              "id": 305,
              "name": "ERC721Holder",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "461:12:1",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 308,
              "name": "ERC1155WithTotals",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3651,
              "src": "1123:17:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1155WithTotals_$3651",
                "typeString": "contract ERC1155WithTotals"
              }
            },
            "id": 309,
            "nodeType": "InheritanceSpecifier",
            "src": "1123:17:1"
          },
          {
            "baseName": {
              "id": 310,
              "name": "ERC1155Holder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4504,
              "src": "1146:13:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1155Holder_$4504",
                "typeString": "contract ERC1155Holder"
              }
            },
            "id": 311,
            "nodeType": "InheritanceSpecifier",
            "src": "1146:13:1"
          },
          {
            "baseName": {
              "id": 312,
              "name": "ERC721Holder",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5668,
              "src": "1224:12:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC721Holder_$5668",
                "typeString": "contract ERC721Holder"
              }
            },
            "id": 313,
            "nodeType": "InheritanceSpecifier",
            "src": "1224:12:1"
          }
        ],
        "contractDependencies": [
          3318,
          3651,
          4079,
          4245,
          4257,
          4504,
          4532,
          4654,
          4669,
          4710,
          5668,
          5860
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 307,
          "nodeType": "StructuredDocumentation",
          "src": "539:550:1",
          "text": "@title A base class to lock collaterals and distribute them proportional to an oracle result.\n @author Victor Porton\n One can also donate/bequest a smart wallet (explain how).\n We have two kinds of ERC-1155 token IDs:\n - conditional tokens: numbers < 2**64\n - a combination of a collateral contract address and collateral token ID\n   (a counter of donated amount of collateral tokens, don't confuse with collateral tokens themselves)\n Inheriting from here don't forget to create `createOracle()` external method."
        },
        "fullyImplemented": false,
        "id": 1494,
        "linearizedBaseContracts": [
          1494,
          5668,
          5860,
          4504,
          4532,
          4710,
          3651,
          3318,
          4669,
          4654,
          4245,
          4257,
          4079
        ],
        "name": "BaseLock",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 316,
            "libraryName": {
              "id": 314,
              "name": "ABDKMath64x64",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9904,
              "src": "1296:13:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ABDKMath64x64_$9904",
                "typeString": "library ABDKMath64x64"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1290:31:1",
            "typeName": {
              "id": 315,
              "name": "int128",
              "nodeType": "ElementaryTypeName",
              "src": "1314:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_int128",
                "typeString": "int128"
              }
            }
          },
          {
            "id": 319,
            "libraryName": {
              "id": 317,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4453,
              "src": "1332:8:1",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$4453",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1326:27:1",
            "typeName": {
              "id": 318,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1345:7:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 320,
              "nodeType": "StructuredDocumentation",
              "src": "1359:92:1",
              "text": "Emitted when an oracle is created.\n @param oracleId The ID of the created oracle."
            },
            "id": 326,
            "name": "OracleCreated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 325,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 322,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 326,
                  "src": "1476:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 321,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1476:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 324,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 326,
                  "src": "1492:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 323,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1492:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1475:33:1"
            },
            "src": "1456:53:1"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 327,
              "nodeType": "StructuredDocumentation",
              "src": "1515:135:1",
              "text": "Emitted when an oracle owner is set.\n @param oracleOwner Who created an oracle\n @param oracleId The ID of the oracle."
            },
            "id": 333,
            "name": "OracleOwnerChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 329,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "oracleOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 333,
                  "src": "1680:27:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 328,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1680:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 331,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 333,
                  "src": "1709:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 330,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1709:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1679:54:1"
            },
            "src": "1655:79:1"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 334,
              "nodeType": "StructuredDocumentation",
              "src": "1740:191:1",
              "text": "Emitted when an oracle owner is set.\n @param sender Who created the condition\n @param customer The owner of the condition.\n @param condition The created condition ID."
            },
            "id": 344,
            "name": "ConditionCreated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 343,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 336,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 344,
                  "src": "1959:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 335,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1959:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 338,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "customer",
                  "nodeType": "VariableDeclaration",
                  "scope": 344,
                  "src": "1983:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 337,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1983:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 340,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 344,
                  "src": "2009:25:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 339,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2009:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 342,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 344,
                  "src": "2036:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 341,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2036:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1958:89:1"
            },
            "src": "1936:112:1"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 345,
              "nodeType": "StructuredDocumentation",
              "src": "2054:384:1",
              "text": "Emitted when a collateral is donated.\n @param collateralContractAddress The ERC-1155 contract of the donated token.\n @param collateralTokenId The ERC-1155 ID of the donated token.\n @param sender Who donated.\n @param amount The amount donated.\n @param to Whose account the donation is assigned to.\n @param data Additional transaction data."
            },
            "id": 359,
            "name": "DonateCollateral",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 347,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "collateralContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "2475:42:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 346,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4654,
                    "src": "2475:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 349,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "collateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "2527:33:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 348,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2527:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 351,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "2570:22:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 350,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2570:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 353,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "2602:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 352,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2602:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 355,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "2626:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2626:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 357,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 359,
                  "src": "2646:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 356,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2646:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2465:197:1"
            },
            "src": "2443:220:1"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 360,
              "nodeType": "StructuredDocumentation",
              "src": "2669:104:1",
              "text": "Emitted when an oracle is marked as having finished its work.\n @param oracleId The oracle ID."
            },
            "id": 364,
            "name": "OracleFinished",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 362,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 364,
                  "src": "2799:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 361,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2799:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2798:25:1"
            },
            "src": "2778:46:1"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 365,
              "nodeType": "StructuredDocumentation",
              "src": "2830:344:1",
              "text": "Emitted when collateral is withdrawn.\n @param contractAddress The ERC-1155 contract of the collateral token.\n @param collateralTokenId The ERC-1155 token ID of the collateral.\n @param oracleId The oracle ID for which withdrawal is done.\n @param user Who has withdrawn.\n @param amount The amount withdrawn."
            },
            "id": 377,
            "name": "CollateralWithdrawn",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 376,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 367,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 377,
                  "src": "3214:32:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 366,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4654,
                    "src": "3214:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 369,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "collateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 377,
                  "src": "3256:33:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 368,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3256:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 371,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 377,
                  "src": "3299:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 370,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3299:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 373,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "scope": 377,
                  "src": "3332:12:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 372,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3332:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 375,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 377,
                  "src": "3354:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 374,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3354:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3204:170:1"
            },
            "src": "3179:196:1"
          },
          {
            "constant": false,
            "functionSelector": "837b0f84",
            "id": 379,
            "mutability": "mutable",
            "name": "maxOracleId",
            "nodeType": "VariableDeclaration",
            "scope": 1494,
            "src": "3397:25:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 378,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "3397:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "47a2fd8d",
            "id": 381,
            "mutability": "mutable",
            "name": "maxConditionId",
            "nodeType": "VariableDeclaration",
            "scope": 1494,
            "src": "3468:28:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint64",
              "typeString": "uint64"
            },
            "typeName": {
              "id": 380,
              "name": "uint64",
              "nodeType": "ElementaryTypeName",
              "src": "3468:6:1",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 385,
            "mutability": "mutable",
            "name": "oracleOwnersMap",
            "nodeType": "VariableDeclaration",
            "scope": 1494,
            "src": "3586:50:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint64_$_t_address_$",
              "typeString": "mapping(uint64 => address)"
            },
            "typeName": {
              "id": 384,
              "keyType": {
                "id": 382,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "3594:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "nodeType": "Mapping",
              "src": "3586:26:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint64_$_t_address_$",
                "typeString": "mapping(uint64 => address)"
              },
              "valueType": {
                "id": 383,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "3604:7:1",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 389,
            "mutability": "mutable",
            "name": "gracePeriodEnds",
            "nodeType": "VariableDeclaration",
            "scope": 1494,
            "src": "3711:47:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
              "typeString": "mapping(uint64 => uint256)"
            },
            "typeName": {
              "id": 388,
              "keyType": {
                "id": 386,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "3719:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "nodeType": "Mapping",
              "src": "3711:23:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
                "typeString": "mapping(uint64 => uint256)"
              },
              "valueType": {
                "id": 387,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "3729:4:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 395,
            "mutability": "mutable",
            "name": "userUsedRedeemMap",
            "nodeType": "VariableDeclaration",
            "scope": 1494,
            "src": "3865:70:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$",
              "typeString": "mapping(address => mapping(uint256 => bool))"
            },
            "typeName": {
              "id": 394,
              "keyType": {
                "id": 390,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "3873:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "3865:44:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$",
                "typeString": "mapping(address => mapping(uint256 => bool))"
              },
              "valueType": {
                "id": 393,
                "keyType": {
                  "id": 391,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3892:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "3884:24:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                  "typeString": "mapping(uint256 => bool)"
                },
                "valueType": {
                  "id": 392,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3903:4:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "functionSelector": "6695821f",
            "id": 401,
            "mutability": "mutable",
            "name": "lastCollateralBalanceFirstRoundMap",
            "nodeType": "VariableDeclaration",
            "scope": 1494,
            "src": "4045:89:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(uint256 => mapping(address => uint256))"
            },
            "typeName": {
              "id": 400,
              "keyType": {
                "id": 396,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4053:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "4045:47:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(uint256 => mapping(address => uint256))"
              },
              "valueType": {
                "id": 399,
                "keyType": {
                  "id": 397,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4072:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "4064:27:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueType": {
                  "id": 398,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4083:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "01a983df",
            "id": 407,
            "mutability": "mutable",
            "name": "lastCollateralBalanceSecondRoundMap",
            "nodeType": "VariableDeclaration",
            "scope": 1494,
            "src": "4244:90:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(uint256 => mapping(address => uint256))"
            },
            "typeName": {
              "id": 406,
              "keyType": {
                "id": 402,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4252:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "4244:47:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(uint256 => mapping(address => uint256))"
              },
              "valueType": {
                "id": 405,
                "keyType": {
                  "id": 403,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4271:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "4263:27:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueType": {
                  "id": 404,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4282:7:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "documentation": {
              "id": 408,
              "nodeType": "StructuredDocumentation",
              "src": "4340:91:1",
              "text": "Mapping (oracleId => amount user withdrew in first round) (see `docs/Calculations.md`)."
            },
            "functionSelector": "77074448",
            "id": 412,
            "mutability": "mutable",
            "name": "usersWithdrewInFirstRound",
            "nodeType": "VariableDeclaration",
            "scope": 1494,
            "src": "4436:59:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
              "typeString": "mapping(uint64 => uint256)"
            },
            "typeName": {
              "id": 411,
              "keyType": {
                "id": 409,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "4444:6:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "nodeType": "Mapping",
              "src": "4436:26:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
                "typeString": "mapping(uint64 => uint256)"
              },
              "valueType": {
                "id": 410,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4454:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "61fbc14a",
            "id": 416,
            "mutability": "mutable",
            "name": "conditionOwners",
            "nodeType": "VariableDeclaration",
            "scope": 1494,
            "src": "4552:50:1",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 415,
              "keyType": {
                "id": 413,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4560:7:1",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "4552:27:1",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueType": {
                "id": 414,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "4571:7:1",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 445,
              "nodeType": "Block",
              "src": "4743:207:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 427,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4794:1:1",
                                    "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": 426,
                                  "name": "BaseLock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1494,
                                  "src": "4785:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BaseLock_$1494_$",
                                    "typeString": "type(contract BaseLock)"
                                  }
                                },
                                "id": 428,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4785:11:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BaseLock_$1494",
                                  "typeString": "contract BaseLock"
                                }
                              },
                              "id": 429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "onERC1155Received",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4480,
                              "src": "4785:29:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                              }
                            },
                            "id": 430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "4785:38:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "^",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 432,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4847:1:1",
                                    "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": 431,
                                  "name": "BaseLock",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1494,
                                  "src": "4838:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_BaseLock_$1494_$",
                                    "typeString": "type(contract BaseLock)"
                                  }
                                },
                                "id": 433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4838:11:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BaseLock_$1494",
                                  "typeString": "contract BaseLock"
                                }
                              },
                              "id": 434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "onERC1155BatchReceived",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4503,
                              "src": "4838:34:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                              }
                            },
                            "id": 435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "4838:43:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "4785:96:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "^",
                        "rightExpression": {
                          "expression": {
                            "expression": {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 438,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4905:1:1",
                                  "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": 437,
                                "name": "BaseLock",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1494,
                                "src": "4896:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_BaseLock_$1494_$",
                                  "typeString": "type(contract BaseLock)"
                                }
                              },
                              "id": 439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4896:11:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseLock_$1494",
                                "typeString": "contract BaseLock"
                              }
                            },
                            "id": 440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "onERC721Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5667,
                            "src": "4896:28:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "4896:37:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "4785:148:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 425,
                      "name": "_registerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4244,
                      "src": "4753:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                        "typeString": "function (bytes4)"
                      }
                    },
                    "id": 443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4753:190:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 444,
                  "nodeType": "ExpressionStatement",
                  "src": "4753:190:1"
                }
              ]
            },
            "documentation": {
              "id": 417,
              "nodeType": "StructuredDocumentation",
              "src": "4609:73:1",
              "text": "Constructor.\n @param _uri Our ERC-1155 tokens description URI."
            },
            "id": 446,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 422,
                    "name": "_uri",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 419,
                    "src": "4737:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 423,
                "modifierName": {
                  "id": 421,
                  "name": "ERC1155WithTotals",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3651,
                  "src": "4719:17:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC1155WithTotals_$3651_$",
                    "typeString": "type(contract ERC1155WithTotals)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4719:23:1"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 419,
                  "mutability": "mutable",
                  "name": "_uri",
                  "nodeType": "VariableDeclaration",
                  "scope": 446,
                  "src": "4699:18:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 418,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4699:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4698:20:1"
            },
            "returnParameters": {
              "id": 424,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4743:0:1"
            },
            "scope": 1494,
            "src": "4687:263:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 468,
              "nodeType": "Block",
              "src": "5395:122:1",
              "statements": [
                {
                  "expression": {
                    "id": 461,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 457,
                        "name": "oracleOwnersMap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 385,
                        "src": "5405:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint64_$_t_address_$",
                          "typeString": "mapping(uint64 => address)"
                        }
                      },
                      "id": 459,
                      "indexExpression": {
                        "id": 458,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 451,
                        "src": "5421:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5405:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 460,
                      "name": "_newOracleOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 449,
                      "src": "5434:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "5405:44:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 462,
                  "nodeType": "ExpressionStatement",
                  "src": "5405:44:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 464,
                        "name": "_newOracleOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 449,
                        "src": "5483:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 465,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 451,
                        "src": "5500:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 463,
                      "name": "OracleOwnerChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 333,
                      "src": "5464:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$",
                        "typeString": "function (address,uint64)"
                      }
                    },
                    "id": 466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5464:46:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 467,
                  "nodeType": "EmitStatement",
                  "src": "5459:51:1"
                }
              ]
            },
            "documentation": {
              "id": 447,
              "nodeType": "StructuredDocumentation",
              "src": "5157:135:1",
              "text": "Modify the owner of an oracle.\n @param _newOracleOwner New owner.\n @param _oracleId The oracle whose owner to change."
            },
            "functionSelector": "c3dcfd41",
            "id": 469,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 454,
                    "name": "_oracleId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 451,
                    "src": "5384:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  }
                ],
                "id": 455,
                "modifierName": {
                  "id": 453,
                  "name": "_isOracle",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1480,
                  "src": "5374:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint64_$",
                    "typeString": "modifier (uint64)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5374:20:1"
              }
            ],
            "name": "changeOracleOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 449,
                  "mutability": "mutable",
                  "name": "_newOracleOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 469,
                  "src": "5324:23:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 448,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5324:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 451,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 469,
                  "src": "5349:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 450,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "5349:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5323:43:1"
            },
            "returnParameters": {
              "id": 456,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5395:0:1"
            },
            "scope": 1494,
            "src": "5297:220:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 486,
              "nodeType": "Block",
              "src": "5957:51:1",
              "statements": [
                {
                  "expression": {
                    "id": 484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 480,
                        "name": "gracePeriodEnds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 389,
                        "src": "5967:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
                          "typeString": "mapping(uint64 => uint256)"
                        }
                      },
                      "id": 482,
                      "indexExpression": {
                        "id": 481,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 472,
                        "src": "5983:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5967:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 483,
                      "name": "_time",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 474,
                      "src": "5996:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5967:34:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 485,
                  "nodeType": "ExpressionStatement",
                  "src": "5967:34:1"
                }
              ]
            },
            "documentation": {
              "id": 470,
              "nodeType": "StructuredDocumentation",
              "src": "5523:340:1",
              "text": "Set the end time of the grace period.\n The first withdrawal can be done *only* during the grace period.\n The second withdrawal can be done after the end of the grace period and only if the first withdrawal was done.\n The intention of the grace period is to check which of users are active (\"alive\")."
            },
            "functionSelector": "f59407b4",
            "id": 487,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 477,
                    "name": "_oracleId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 472,
                    "src": "5946:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  }
                ],
                "id": 478,
                "modifierName": {
                  "id": 476,
                  "name": "_isOracle",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1480,
                  "src": "5936:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_uint64_$",
                    "typeString": "modifier (uint64)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5936:20:1"
              }
            ],
            "name": "updateGracePeriodEnds",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 475,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 472,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 487,
                  "src": "5899:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 471,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "5899:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 474,
                  "mutability": "mutable",
                  "name": "_time",
                  "nodeType": "VariableDeclaration",
                  "scope": 487,
                  "src": "5917:10:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 473,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5917:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5898:30:1"
            },
            "returnParameters": {
              "id": 479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5957:0:1"
            },
            "scope": 1494,
            "src": "5868:140:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 556,
              "nodeType": "Block",
              "src": "6957:655:1",
              "statements": [
                {
                  "assignments": [
                    506
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 506,
                      "mutability": "mutable",
                      "name": "_donatedPerOracleCollateralTokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 556,
                      "src": "6967:39:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 505,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6967:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 512,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 508,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 490,
                        "src": "7044:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 509,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 492,
                        "src": "7072:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 510,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 494,
                        "src": "7092:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 507,
                      "name": "_collateralDonatedPerOracleTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1071,
                      "src": "7009:34:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_contract$_IERC1155_$4654_$_t_uint256_$_t_uint64_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC1155,uint256,uint64) pure returns (uint256)"
                      }
                    },
                    "id": 511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7009:93:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6967:135:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 514,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 500,
                        "src": "7118:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 515,
                        "name": "_donatedPerOracleCollateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 506,
                        "src": "7123:34:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 516,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 496,
                        "src": "7159:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 517,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 502,
                        "src": "7168:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 513,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3411
                      ],
                      "referencedDeclaration": 3411,
                      "src": "7112:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7112:62:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 519,
                  "nodeType": "ExpressionStatement",
                  "src": "7112:62:1"
                },
                {
                  "assignments": [
                    521
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 521,
                      "mutability": "mutable",
                      "name": "_donatedCollateralTokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 556,
                      "src": "7184:30:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 520,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7184:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 526,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 523,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 490,
                        "src": "7243:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 524,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 492,
                        "src": "7271:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 522,
                      "name": "_collateralDonatedTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1093,
                      "src": "7217:25:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_contract$_IERC1155_$4654_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC1155,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7217:73:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7184:106:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 528,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 500,
                        "src": "7306:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 529,
                        "name": "_donatedCollateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 521,
                        "src": "7311:25:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 530,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 496,
                        "src": "7338:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 531,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 502,
                        "src": "7347:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 527,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3411
                      ],
                      "referencedDeclaration": 3411,
                      "src": "7300:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 532,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7300:53:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 533,
                  "nodeType": "ExpressionStatement",
                  "src": "7300:53:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 535,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 490,
                        "src": "7385:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 536,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 492,
                        "src": "7413:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 537,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "7433:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 538,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 496,
                        "src": "7440:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 539,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 500,
                        "src": "7449:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 540,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 502,
                        "src": "7454:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 534,
                      "name": "DonateCollateral",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 359,
                      "src": "7368:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC1155_$4654_$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (contract IERC1155,uint256,address,uint256,address,bytes memory)"
                      }
                    },
                    "id": 541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7368:92:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 542,
                  "nodeType": "EmitStatement",
                  "src": "7363:97:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 546,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 498,
                        "src": "7514:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 549,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "7529:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                              "typeString": "contract BaseLock"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                              "typeString": "contract BaseLock"
                            }
                          ],
                          "id": 548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7521:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 547,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7521:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 550,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7521:13:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 551,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 492,
                        "src": "7536:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 552,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 496,
                        "src": "7556:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 553,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 502,
                        "src": "7565:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "id": 543,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 490,
                        "src": "7470:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      "id": 545,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4637,
                      "src": "7470:43:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7470:101:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 555,
                  "nodeType": "ExpressionStatement",
                  "src": "7470:101:1"
                }
              ]
            },
            "documentation": {
              "id": 488,
              "nodeType": "StructuredDocumentation",
              "src": "6014:704:1",
              "text": "Donate funds in an ERC-1155 token.\n First, the collateral token need to be approved to be spent by this contract from the address `_from`.\n It also mints a token (with a different ID), that counts donations in that token.\n @param _collateralContractAddress The collateral ERC-1155 contract address.\n @param _collateralTokenId The collateral ERC-1155 token ID.\n @param _oracleId The oracle ID to whose ecosystem to donate to.\n @param _amount The amount to donate.\n @param _from From whom to take the donation.\n @param _to On whose account the donation amount is assigned.\n @param _data Additional transaction data."
            },
            "functionSelector": "2ef0ce78",
            "id": 557,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "donate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 503,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 490,
                  "mutability": "mutable",
                  "name": "_collateralContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 557,
                  "src": "6748:35:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 489,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4654,
                    "src": "6748:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 492,
                  "mutability": "mutable",
                  "name": "_collateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 557,
                  "src": "6793:26:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 491,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6793:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 494,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 557,
                  "src": "6829:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 493,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "6829:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 496,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 557,
                  "src": "6855:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 495,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6855:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 498,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 557,
                  "src": "6880:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 497,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6880:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 500,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 557,
                  "src": "6903:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 499,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6903:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 502,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 557,
                  "src": "6924:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 501,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6924:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6738:207:1"
            },
            "returnParameters": {
              "id": 504,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6957:0:1"
            },
            "scope": 1494,
            "src": "6723:889:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 640,
              "nodeType": "Block",
              "src": "8143:1007:1",
              "statements": [
                {
                  "assignments": [
                    570
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 570,
                      "mutability": "mutable",
                      "name": "_donatedPerOracleCollateralTokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 640,
                      "src": "8153:39:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 569,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8153:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 576,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 572,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 560,
                        "src": "8230:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 573,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 562,
                        "src": "8258:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 574,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 564,
                        "src": "8278:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 571,
                      "name": "_collateralDonatedPerOracleTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1071,
                      "src": "8195:34:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_contract$_IERC1155_$4654_$_t_uint256_$_t_uint64_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC1155,uint256,uint64) pure returns (uint256)"
                      }
                    },
                    "id": 575,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8195:93:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8153:135:1"
                },
                {
                  "assignments": [
                    578
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 578,
                      "mutability": "mutable",
                      "name": "_donatedCollateralTokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 640,
                      "src": "8298:30:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 577,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8298:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 583,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 580,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 560,
                        "src": "8357:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 581,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 562,
                        "src": "8385:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 579,
                      "name": "_collateralDonatedTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1093,
                      "src": "8331:25:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_contract$_IERC1155_$4654_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (contract IERC1155,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8331:73:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8298:106:1"
                },
                {
                  "assignments": [
                    585
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 585,
                      "mutability": "mutable",
                      "name": "_difference",
                      "nodeType": "VariableDeclaration",
                      "scope": 640,
                      "src": "8476:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 584,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8476:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 603,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 598,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "8621:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BaseLock_$1494",
                                  "typeString": "contract BaseLock"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BaseLock_$1494",
                                  "typeString": "contract BaseLock"
                                }
                              ],
                              "id": 597,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8613:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 596,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8613:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8613:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 600,
                            "name": "_donatedCollateralTokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 578,
                            "src": "8628:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 595,
                          "name": "balanceOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2400,
                          "src": "8603:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (address,uint256) view returns (uint256)"
                          }
                        },
                        "id": 601,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8603:51:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 590,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "8555:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BaseLock_$1494",
                                  "typeString": "contract BaseLock"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BaseLock_$1494",
                                  "typeString": "contract BaseLock"
                                }
                              ],
                              "id": 589,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8547:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 588,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8547:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8547:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 592,
                            "name": "_collateralTokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 562,
                            "src": "8562:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 586,
                            "name": "_collateralContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 560,
                            "src": "8510:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC1155_$4654",
                              "typeString": "contract IERC1155"
                            }
                          },
                          "id": 587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4592,
                          "src": "8510:36:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (address,uint256) view external returns (uint256)"
                          }
                        },
                        "id": 593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8510:71:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 594,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sub",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4303,
                      "src": "8510:75:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8510:145:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8476:179:1"
                },
                {
                  "assignments": [
                    605
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 605,
                      "mutability": "mutable",
                      "name": "_amount",
                      "nodeType": "VariableDeclaration",
                      "scope": 640,
                      "src": "8665:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 604,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "8665:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 623,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 614,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 606,
                        "name": "_difference",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 585,
                        "src": "8733:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "*",
                      "rightExpression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 610,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967268,
                                "src": "8777:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BaseLock_$1494",
                                  "typeString": "contract BaseLock"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BaseLock_$1494",
                                  "typeString": "contract BaseLock"
                                }
                              ],
                              "id": 609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8769:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 608,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8769:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8769:13:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 612,
                            "name": "_donatedPerOracleCollateralTokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 570,
                            "src": "8784:34:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 607,
                          "name": "balanceOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2400,
                          "src": "8759:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (address,uint256) view returns (uint256)"
                          }
                        },
                        "id": 613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8759:60:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "8733:86:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 618,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967268,
                              "src": "8852:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BaseLock_$1494",
                                "typeString": "contract BaseLock"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_BaseLock_$1494",
                                "typeString": "contract BaseLock"
                              }
                            ],
                            "id": 617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8844:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 616,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8844:7:1",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8844:13:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 620,
                          "name": "_donatedCollateralTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 578,
                          "src": "8859:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 615,
                        "name": "balanceOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2400,
                        "src": "8834:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (address,uint256) view returns (uint256)"
                        }
                      },
                      "id": 621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8834:51:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8733:152:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8665:220:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 625,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 560,
                        "src": "8967:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 626,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 562,
                        "src": "9007:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 627,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 564,
                        "src": "9039:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 628,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 605,
                        "src": "9062:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 631,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "9091:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                              "typeString": "contract BaseLock"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                              "typeString": "contract BaseLock"
                            }
                          ],
                          "id": 630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9083:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 629,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9083:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9083:13:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 635,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "9118:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                              "typeString": "contract BaseLock"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                              "typeString": "contract BaseLock"
                            }
                          ],
                          "id": 634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9110:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 633,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9110:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9110:13:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 637,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 566,
                        "src": "9137:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 624,
                      "name": "donate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 557,
                      "src": "8947:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC1155_$4654_$_t_uint256_$_t_uint64_$_t_uint256_$_t_address_$_t_address_$_t_bytes_calldata_ptr_$returns$__$",
                        "typeString": "function (contract IERC1155,uint256,uint64,uint256,address,address,bytes calldata)"
                      }
                    },
                    "id": 638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8947:196:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 639,
                  "nodeType": "ExpressionStatement",
                  "src": "8947:196:1"
                }
              ]
            },
            "documentation": {
              "id": 558,
              "nodeType": "StructuredDocumentation",
              "src": "7618:343:1",
              "text": "Gather a DeFi profit of a token previous donated to this contact.\n @param _collateralContractAddress The collateral ERC-1155 contract address.\n @param _collateralTokenId The collateral ERC-1155 token ID.\n @param _oracleId The oracle ID to whose ecosystem to donate to.\n @param _data Additional transaction data."
            },
            "functionSelector": "05096f25",
            "id": 641,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "gatherDeFiProfit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 560,
                  "mutability": "mutable",
                  "name": "_collateralContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 641,
                  "src": "8001:35:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 559,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4654,
                    "src": "8001:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 562,
                  "mutability": "mutable",
                  "name": "_collateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 641,
                  "src": "8046:26:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 561,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8046:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 564,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 641,
                  "src": "8082:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 563,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "8082:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 566,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 641,
                  "src": "8108:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 565,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8108:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7991:138:1"
            },
            "returnParameters": {
              "id": 568,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8143:0:1"
            },
            "scope": 1494,
            "src": "7966:1184:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 676,
              "nodeType": "Block",
              "src": "9790:247:1",
              "statements": [
                {
                  "assignments": [
                    658
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 658,
                      "mutability": "mutable",
                      "name": "_inFirstRound",
                      "nodeType": "VariableDeclaration",
                      "scope": 676,
                      "src": "9800:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 657,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "9800:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 662,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 660,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 648,
                        "src": "9837:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 659,
                      "name": "_isInFirstRound",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1449,
                      "src": "9821:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$_t_bool_$",
                        "typeString": "function (uint64) view returns (bool)"
                      }
                    },
                    "id": 661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9821:26:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9800:47:1"
                },
                {
                  "assignments": [
                    null,
                    664
                  ],
                  "declarations": [
                    null,
                    {
                      "constant": false,
                      "id": 664,
                      "mutability": "mutable",
                      "name": "_donated",
                      "nodeType": "VariableDeclaration",
                      "scope": 676,
                      "src": "9860:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 663,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9860:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 673,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 666,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 644,
                        "src": "9913:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 667,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 646,
                        "src": "9941:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 668,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 648,
                        "src": "9961:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 669,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 650,
                        "src": "9972:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 670,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 652,
                        "src": "9984:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 671,
                        "name": "_inFirstRound",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 658,
                        "src": "9991:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 665,
                      "name": "_collateralOwingBase",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1434,
                      "src": "9892:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC1155_$4654_$_t_uint256_$_t_uint64_$_t_uint256_$_t_address_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (contract IERC1155,uint256,uint64,uint256,address,bool) view returns (uint256,uint256)"
                      }
                    },
                    "id": 672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9892:113:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9857:148:1"
                },
                {
                  "expression": {
                    "id": 674,
                    "name": "_donated",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 664,
                    "src": "10022:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 656,
                  "id": 675,
                  "nodeType": "Return",
                  "src": "10015:15:1"
                }
              ]
            },
            "documentation": {
              "id": 642,
              "nodeType": "StructuredDocumentation",
              "src": "9156:409:1",
              "text": "Calculate how much collateral is owed to a user.\n @param _collateralContractAddress The ERC-1155 collateral token contract.\n @param _collateralTokenId The ERC-1155 collateral token ID.\n @param _oracleId From which oracle's \"account\" to withdraw.\n @param _condition The condition (the original receiver of a conditional token).\n @param _user The user to which we may owe."
            },
            "functionSelector": "ebf38ffb",
            "id": 677,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "collateralOwing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 653,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 644,
                  "mutability": "mutable",
                  "name": "_collateralContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "9604:35:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 643,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4654,
                    "src": "9604:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 646,
                  "mutability": "mutable",
                  "name": "_collateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "9649:26:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 645,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9649:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 648,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "9685:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 647,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "9685:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 650,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "9711:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 649,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9711:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 652,
                  "mutability": "mutable",
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "9739:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 651,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9739:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9594:164:1"
            },
            "returnParameters": {
              "id": 656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 655,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "9781:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 654,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9781:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9780:9:1"
            },
            "scope": 1494,
            "src": "9570:467:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 798,
              "nodeType": "Block",
              "src": "11194:1709:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 693,
                            "name": "_oracleId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 684,
                            "src": "11229:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          ],
                          "id": 692,
                          "name": "isOracleFinished",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 898,
                          "src": "11212:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$_t_bool_$",
                            "typeString": "function (uint64) view returns (bool)"
                          }
                        },
                        "id": 694,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11212:27:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "746f6f206561726c79",
                        "id": 695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11241:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d87d05e52726880c4bb1003e00ed00463d214b7b936d9983b909b11b18ccd468",
                          "typeString": "literal_string \"too early\""
                        },
                        "value": "too early"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d87d05e52726880c4bb1003e00ed00463d214b7b936d9983b909b11b18ccd468",
                          "typeString": "literal_string \"too early\""
                        }
                      ],
                      "id": 691,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "11204:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11204:49:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 697,
                  "nodeType": "ExpressionStatement",
                  "src": "11204:49:1"
                },
                {
                  "assignments": [
                    699
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 699,
                      "mutability": "mutable",
                      "name": "_inFirstRound",
                      "nodeType": "VariableDeclaration",
                      "scope": 798,
                      "src": "11327:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 698,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "11327:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 703,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 701,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 684,
                        "src": "11364:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 700,
                      "name": "_isInFirstRound",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1449,
                      "src": "11348:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint64_$returns$_t_bool_$",
                        "typeString": "function (uint64) view returns (bool)"
                      }
                    },
                    "id": 702,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11348:26:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11327:47:1"
                },
                {
                  "expression": {
                    "id": 711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 704,
                          "name": "userUsedRedeemMap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 395,
                          "src": "11384:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$",
                            "typeString": "mapping(address => mapping(uint256 => bool))"
                          }
                        },
                        "id": 708,
                        "indexExpression": {
                          "expression": {
                            "id": 705,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "11402:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "11402:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11384:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                          "typeString": "mapping(uint256 => bool)"
                        }
                      },
                      "id": 709,
                      "indexExpression": {
                        "id": 707,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 686,
                        "src": "11414:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11384:41:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 710,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11428:4:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "11384:48:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 712,
                  "nodeType": "ExpressionStatement",
                  "src": "11384:48:1"
                },
                {
                  "assignments": [
                    714,
                    716
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 714,
                      "mutability": "mutable",
                      "name": "_donatedPerOracleCollateralTokenId",
                      "nodeType": "VariableDeclaration",
                      "scope": 798,
                      "src": "11574:39:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 713,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11574:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 716,
                      "mutability": "mutable",
                      "name": "_owingDonated",
                      "nodeType": "VariableDeclaration",
                      "scope": 798,
                      "src": "11615:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 715,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11615:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 726,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 718,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 680,
                        "src": "11673:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 719,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 682,
                        "src": "11701:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 720,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 684,
                        "src": "11721:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 721,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 686,
                        "src": "11732:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 722,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "11744:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 723,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "11744:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 724,
                        "name": "_inFirstRound",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 699,
                        "src": "11756:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 717,
                      "name": "_collateralOwingBase",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1434,
                      "src": "11652:20:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_contract$_IERC1155_$4654_$_t_uint256_$_t_uint64_$_t_uint256_$_t_address_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                        "typeString": "function (contract IERC1155,uint256,uint64,uint256,address,bool) view returns (uint256,uint256)"
                      }
                    },
                    "id": 725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11652:118:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11573:197:1"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 727,
                      "name": "_owingDonated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 716,
                      "src": "11986:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12003:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11986:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 759,
                  "nodeType": "IfStatement",
                  "src": "11982:409:1",
                  "trueBody": {
                    "id": 758,
                    "nodeType": "Block",
                    "src": "12006:385:1",
                    "statements": [
                      {
                        "assignments": [
                          731
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 731,
                            "mutability": "mutable",
                            "name": "_newTotal",
                            "nodeType": "VariableDeclaration",
                            "scope": 758,
                            "src": "12020:17:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 730,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12020:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 735,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 733,
                              "name": "_donatedPerOracleCollateralTokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 714,
                              "src": "12052:34:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 732,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3356,
                            "src": "12040:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) view returns (uint256)"
                            }
                          },
                          "id": 734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12040:47:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12020:67:1"
                      },
                      {
                        "condition": {
                          "id": 736,
                          "name": "_inFirstRound",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 699,
                          "src": "12105:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 756,
                          "nodeType": "Block",
                          "src": "12253:128:1",
                          "statements": [
                            {
                              "expression": {
                                "id": 754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 747,
                                      "name": "lastCollateralBalanceSecondRoundMap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 407,
                                      "src": "12271:35:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 751,
                                    "indexExpression": {
                                      "id": 748,
                                      "name": "_donatedPerOracleCollateralTokenId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 714,
                                      "src": "12307:34:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12271:71:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 752,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 749,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967281,
                                      "src": "12343:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 750,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "12343:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "12271:83:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 753,
                                  "name": "_newTotal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 731,
                                  "src": "12357:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12271:95:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 755,
                              "nodeType": "ExpressionStatement",
                              "src": "12271:95:1"
                            }
                          ]
                        },
                        "id": 757,
                        "nodeType": "IfStatement",
                        "src": "12101:280:1",
                        "trueBody": {
                          "id": 746,
                          "nodeType": "Block",
                          "src": "12120:127:1",
                          "statements": [
                            {
                              "expression": {
                                "id": 744,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 737,
                                      "name": "lastCollateralBalanceFirstRoundMap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 401,
                                      "src": "12138:34:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(uint256 => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 741,
                                    "indexExpression": {
                                      "id": 738,
                                      "name": "_donatedPerOracleCollateralTokenId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 714,
                                      "src": "12173:34:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12138:70:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 742,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 739,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4294967281,
                                      "src": "12209:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 740,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "12209:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "12138:82:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 743,
                                  "name": "_newTotal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 731,
                                  "src": "12223:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12138:94:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 745,
                              "nodeType": "ExpressionStatement",
                              "src": "12138:94:1"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "id": 761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "12404:14:1",
                    "subExpression": {
                      "id": 760,
                      "name": "_inFirstRound",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 699,
                      "src": "12405:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 774,
                  "nodeType": "IfStatement",
                  "src": "12400:139:1",
                  "trueBody": {
                    "id": 773,
                    "nodeType": "Block",
                    "src": "12420:119:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 762,
                              "name": "usersWithdrewInFirstRound",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 412,
                              "src": "12434:25:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
                                "typeString": "mapping(uint64 => uint256)"
                              }
                            },
                            "id": 764,
                            "indexExpression": {
                              "id": 763,
                              "name": "_oracleId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 684,
                              "src": "12460:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12434:36:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 769,
                                "name": "_owingDonated",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 716,
                                "src": "12514:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "id": 765,
                                  "name": "usersWithdrewInFirstRound",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 412,
                                  "src": "12473:25:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
                                    "typeString": "mapping(uint64 => uint256)"
                                  }
                                },
                                "id": 767,
                                "indexExpression": {
                                  "id": 766,
                                  "name": "_oracleId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 684,
                                  "src": "12499:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12473:36:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4286,
                              "src": "12473:40:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12473:55:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12434:94:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 772,
                        "nodeType": "ExpressionStatement",
                        "src": "12434:94:1"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 780,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967268,
                            "src": "12646:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                              "typeString": "contract BaseLock"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                              "typeString": "contract BaseLock"
                            }
                          ],
                          "id": 779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "12638:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 778,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12638:7:1",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12638:13:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 782,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "12653:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "12653:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 784,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 682,
                        "src": "12665:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 785,
                        "name": "_owingDonated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 716,
                        "src": "12685:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 786,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 688,
                        "src": "12700:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "id": 775,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 680,
                        "src": "12594:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      "id": 777,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "safeTransferFrom",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4637,
                      "src": "12594:43:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                      }
                    },
                    "id": 787,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12594:112:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 788,
                  "nodeType": "ExpressionStatement",
                  "src": "12594:112:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 790,
                        "name": "_collateralContractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 680,
                        "src": "12754:26:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        }
                      },
                      {
                        "id": 791,
                        "name": "_collateralTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 682,
                        "src": "12794:18:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 792,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 684,
                        "src": "12826:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "expression": {
                          "id": 793,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "12849:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "12849:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 795,
                        "name": "_owingDonated",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 716,
                        "src": "12873:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                          "typeString": "contract IERC1155"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 789,
                      "name": "CollateralWithdrawn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 377,
                      "src": "12721:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IERC1155_$4654_$_t_uint256_$_t_uint64_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (contract IERC1155,uint256,uint64,address,uint256)"
                      }
                    },
                    "id": 796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12721:175:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 797,
                  "nodeType": "EmitStatement",
                  "src": "12716:180:1"
                }
              ]
            },
            "documentation": {
              "id": 678,
              "nodeType": "StructuredDocumentation",
              "src": "10043:939:1",
              "text": "Transfer to `msg.sender` the collateral ERC-1155 token.\n The amount transferred is proportional to the score of `_condition` by the oracle.\n @param _collateralContractAddress The ERC-1155 collateral token contract.\n @param _collateralTokenId The ERC-1155 collateral token ID.\n @param _oracleId From which oracle's \"account\" to withdraw.\n @param _condition The condition.\n @param _data Additional data.\n Notes:\n - It is made impossible to withdraw somebody's other collateral, as otherwise we can't mark non-active\n   accounts in grace period.\n - We can't transfer to somebody other than `msg.sender` because anybody can transfer\n   (needed for multi-level transfers).\n - After this function is called, it becomes impossible to transfer the corresponding conditional token\n   of `msg.sender` (to prevent its repeated withdrawal)."
            },
            "functionSelector": "922aac9c",
            "id": 799,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "withdrawCollateral",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 689,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 680,
                  "mutability": "mutable",
                  "name": "_collateralContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "11024:35:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 679,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4654,
                    "src": "11024:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 682,
                  "mutability": "mutable",
                  "name": "_collateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "11069:26:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 681,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11069:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 684,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "11105:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 683,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "11105:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 686,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "11131:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 685,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11131:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 688,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 799,
                  "src": "11159:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 687,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "11159:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11014:166:1"
            },
            "returnParameters": {
              "id": 690,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11194:0:1"
            },
            "scope": 1494,
            "src": "10987:1916:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              2635
            ],
            "body": {
              "id": 827,
              "nodeType": "Block",
              "src": "13260:113:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 815,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 806,
                        "src": "13292:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 816,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 802,
                        "src": "13297:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 814,
                      "name": "_checkTransferAllowed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1111,
                      "src": "13270:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (uint256,address) view"
                      }
                    },
                    "id": 817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13270:33:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 818,
                  "nodeType": "ExpressionStatement",
                  "src": "13270:33:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 820,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 802,
                        "src": "13335:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 821,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 804,
                        "src": "13342:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 822,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 806,
                        "src": "13347:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 823,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 808,
                        "src": "13352:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 824,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 810,
                        "src": "13360:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 819,
                      "name": "_baseSafeTransferFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1178,
                      "src": "13313:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 825,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13313:53:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 826,
                  "nodeType": "ExpressionStatement",
                  "src": "13313:53:1"
                }
              ]
            },
            "documentation": {
              "id": 800,
              "nodeType": "StructuredDocumentation",
              "src": "12909:167:1",
              "text": "An ERC-1155 function.\n We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming\n each oracle."
            },
            "functionSelector": "f242432a",
            "id": 828,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 812,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13247:8:1"
            },
            "parameters": {
              "id": 811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 802,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 828,
                  "src": "13116:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 801,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13116:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 804,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 828,
                  "src": "13139:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 803,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13139:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 806,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 828,
                  "src": "13160:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 805,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13160:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 808,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 828,
                  "src": "13181:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 807,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13181:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 810,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 828,
                  "src": "13205:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 809,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13205:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13106:125:1"
            },
            "returnParameters": {
              "id": 813,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13260:0:1"
            },
            "scope": 1494,
            "src": "13081:292:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2773
            ],
            "body": {
              "id": 873,
              "nodeType": "Block",
              "src": "13759:190:1",
              "statements": [
                {
                  "body": {
                    "id": 863,
                    "nodeType": "Block",
                    "src": "13810:63:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 857,
                                "name": "_ids",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 836,
                                "src": "13846:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 859,
                              "indexExpression": {
                                "id": 858,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 846,
                                "src": "13851:2:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13846:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 860,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 831,
                              "src": "13856:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 856,
                            "name": "_checkTransferAllowed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1111,
                            "src": "13824:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address) view"
                            }
                          },
                          "id": 861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13824:38:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 862,
                        "nodeType": "ExpressionStatement",
                        "src": "13824:38:1"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 852,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 849,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 846,
                      "src": "13786:2:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 850,
                        "name": "_ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 836,
                        "src": "13791:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 851,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "13791:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "13786:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 864,
                  "initializationExpression": {
                    "assignments": [
                      846
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 846,
                        "mutability": "mutable",
                        "name": "_i",
                        "nodeType": "VariableDeclaration",
                        "scope": 864,
                        "src": "13773:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 845,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13773:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 848,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 847,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "13783:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "13773:11:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "13804:4:1",
                      "subExpression": {
                        "id": 853,
                        "name": "_i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 846,
                        "src": "13806:2:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 855,
                    "nodeType": "ExpressionStatement",
                    "src": "13804:4:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "13769:104:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 866,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 831,
                        "src": "13909:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 867,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 833,
                        "src": "13916:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 868,
                        "name": "_ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 836,
                        "src": "13921:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "id": 869,
                        "name": "_values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 839,
                        "src": "13927:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "id": 870,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 841,
                        "src": "13936:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 865,
                      "name": "_baseSafeBatchTransferFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1281,
                      "src": "13882:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "id": 871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13882:60:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 872,
                  "nodeType": "ExpressionStatement",
                  "src": "13882:60:1"
                }
              ]
            },
            "documentation": {
              "id": 829,
              "nodeType": "StructuredDocumentation",
              "src": "13379:167:1",
              "text": "An ERC-1155 function.\n We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming\n each oracle."
            },
            "functionSelector": "2eb2c2d6",
            "id": 874,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeBatchTransferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 843,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "13746:8:1"
            },
            "parameters": {
              "id": 842,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 831,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 874,
                  "src": "13591:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 830,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13591:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 833,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 874,
                  "src": "13614:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 832,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13614:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 836,
                  "mutability": "mutable",
                  "name": "_ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 874,
                  "src": "13635:23:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 834,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "13635:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 835,
                    "nodeType": "ArrayTypeName",
                    "src": "13635:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 839,
                  "mutability": "mutable",
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 874,
                  "src": "13668:26:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 837,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "13668:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 838,
                    "nodeType": "ArrayTypeName",
                    "src": "13668:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 841,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 874,
                  "src": "13704:20:1",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 840,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13704:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13581:149:1"
            },
            "returnParameters": {
              "id": 844,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13759:0:1"
            },
            "scope": 1494,
            "src": "13551:398:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 886,
              "nodeType": "Block",
              "src": "14113:50:1",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 882,
                      "name": "oracleOwnersMap",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 385,
                      "src": "14130:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint64_$_t_address_$",
                        "typeString": "mapping(uint64 => address)"
                      }
                    },
                    "id": 884,
                    "indexExpression": {
                      "id": 883,
                      "name": "_oracleId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 877,
                      "src": "14146:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14130:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 881,
                  "id": 885,
                  "nodeType": "Return",
                  "src": "14123:33:1"
                }
              ]
            },
            "documentation": {
              "id": 875,
              "nodeType": "StructuredDocumentation",
              "src": "13974:65:1",
              "text": "Get the oracle owner.\n @param _oracleId The oracle ID."
            },
            "functionSelector": "56c742dc",
            "id": 887,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "oracleOwner",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 878,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 877,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 887,
                  "src": "14065:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 876,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "14065:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14064:18:1"
            },
            "returnParameters": {
              "id": 881,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 880,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 887,
                  "src": "14104:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 879,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14104:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14103:9:1"
            },
            "scope": 1494,
            "src": "14044:119:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 897,
              "nodeType": "Block",
              "src": "14354:28:1",
              "statements": [
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "14371:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 894,
                  "id": 896,
                  "nodeType": "Return",
                  "src": "14364:11:1"
                }
              ]
            },
            "documentation": {
              "id": 888,
              "nodeType": "StructuredDocumentation",
              "src": "14169:98:1",
              "text": "Is the oracle marked as having finished its work?\n `oracleId` is the oracle ID."
            },
            "functionSelector": "92d2a6bc",
            "id": 898,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isOracleFinished",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 891,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 890,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 898,
                  "src": "14298:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 889,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "14298:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14297:21:1"
            },
            "returnParameters": {
              "id": 894,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 893,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 898,
                  "src": "14348:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 892,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14348:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14347:6:1"
            },
            "scope": 1494,
            "src": "14272:110:1",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 914,
              "nodeType": "Block",
              "src": "14739:60:1",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 908,
                        "name": "userUsedRedeemMap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 395,
                        "src": "14756:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$",
                          "typeString": "mapping(address => mapping(uint256 => bool))"
                        }
                      },
                      "id": 910,
                      "indexExpression": {
                        "id": 909,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 901,
                        "src": "14774:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "14756:24:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                        "typeString": "mapping(uint256 => bool)"
                      }
                    },
                    "id": 912,
                    "indexExpression": {
                      "id": 911,
                      "name": "_condition",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 903,
                      "src": "14781:10:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14756:36:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 907,
                  "id": 913,
                  "nodeType": "Return",
                  "src": "14749:43:1"
                }
              ]
            },
            "documentation": {
              "id": 899,
              "nodeType": "StructuredDocumentation",
              "src": "14388:255:1",
              "text": "Are transfers of a conditinal token locked?\n This is used to prevent its repeated withdrawal.\n @param _user Querying if locked for this user.\n @param _condition The condition (the original receiver of a conditional token)."
            },
            "functionSelector": "f52f368d",
            "id": 915,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isConditionalLocked",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 904,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 901,
                  "mutability": "mutable",
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 915,
                  "src": "14677:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 900,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14677:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 903,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 915,
                  "src": "14692:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 902,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14692:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14676:35:1"
            },
            "returnParameters": {
              "id": 907,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 906,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 915,
                  "src": "14733:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 905,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14733:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14732:6:1"
            },
            "scope": 1494,
            "src": "14648:151:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 927,
              "nodeType": "Block",
              "src": "14963:50:1",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 923,
                      "name": "gracePeriodEnds",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 389,
                      "src": "14980:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
                        "typeString": "mapping(uint64 => uint256)"
                      }
                    },
                    "id": 925,
                    "indexExpression": {
                      "id": 924,
                      "name": "_oracleId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 918,
                      "src": "14996:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14980:26:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 922,
                  "id": 926,
                  "nodeType": "Return",
                  "src": "14973:33:1"
                }
              ]
            },
            "documentation": {
              "id": 916,
              "nodeType": "StructuredDocumentation",
              "src": "14805:84:1",
              "text": "Retrieve the end of the grace period.\n @param _oracleId For which oracle."
            },
            "functionSelector": "34fc81c4",
            "id": 928,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "gracePeriodEnd",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 918,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 928,
                  "src": "14918:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 917,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "14918:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14917:18:1"
            },
            "returnParameters": {
              "id": 922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 921,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 928,
                  "src": "14957:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 920,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "14957:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14956:6:1"
            },
            "scope": 1494,
            "src": "14894:119:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 938,
              "nodeType": "Block",
              "src": "15244:40:1",
              "statements": [
                {
                  "expression": {
                    "id": 936,
                    "name": "_originalAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 931,
                    "src": "15261:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 935,
                  "id": 937,
                  "nodeType": "Return",
                  "src": "15254:23:1"
                }
              ]
            },
            "documentation": {
              "id": 929,
              "nodeType": "StructuredDocumentation",
              "src": "15048:96:1",
              "text": "Current address of a user.\n @param _originalAddress The original address of the user."
            },
            "id": 939,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "originalToCurrentAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 932,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 931,
                  "mutability": "mutable",
                  "name": "_originalAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 939,
                  "src": "15183:24:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 930,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15183:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15182:26:1"
            },
            "returnParameters": {
              "id": 935,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 934,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 939,
                  "src": "15235:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 933,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15235:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15234:9:1"
            },
            "scope": 1494,
            "src": "15149:135:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 969,
              "nodeType": "Block",
              "src": "15462:177:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 956,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "id": 952,
                            "name": "conditionOwners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 416,
                            "src": "15480:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 954,
                          "indexExpression": {
                            "id": 953,
                            "name": "_condition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 944,
                            "src": "15496:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15480:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 955,
                          "name": "_customer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 942,
                          "src": "15511:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "15480:40:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4f7468657227732073616c6172792067657420617474656d70742e",
                        "id": 957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15522:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c6145208743ca451a397a8c1d08dbc51f2eaa8aaedd186481a66ebda8bef28cf",
                          "typeString": "literal_string \"Other's salary get attempt.\""
                        },
                        "value": "Other's salary get attempt."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c6145208743ca451a397a8c1d08dbc51f2eaa8aaedd186481a66ebda8bef28cf",
                          "typeString": "literal_string \"Other's salary get attempt.\""
                        }
                      ],
                      "id": 951,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "15472:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15472:80:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 959,
                  "nodeType": "ExpressionStatement",
                  "src": "15472:80:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 962,
                            "name": "_customer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 942,
                            "src": "15593:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 961,
                          "name": "originalToCurrentAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 939,
                          "src": "15568:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$",
                            "typeString": "function (address) returns (address)"
                          }
                        },
                        "id": 963,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15568:35:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 964,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 944,
                        "src": "15605:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 965,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 946,
                        "src": "15617:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 966,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 948,
                        "src": "15626:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 960,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3411
                      ],
                      "referencedDeclaration": 3411,
                      "src": "15562:5:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 967,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15562:70:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 968,
                  "nodeType": "ExpressionStatement",
                  "src": "15562:70:1"
                }
              ]
            },
            "documentation": {
              "id": 940,
              "nodeType": "StructuredDocumentation",
              "src": "15290:37:1",
              "text": "Mint a conditional to a customer."
            },
            "id": 970,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mintToCustomer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 942,
                  "mutability": "mutable",
                  "name": "_customer",
                  "nodeType": "VariableDeclaration",
                  "scope": 970,
                  "src": "15357:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 941,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15357:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 944,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 970,
                  "src": "15376:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 943,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15376:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 946,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 970,
                  "src": "15396:15:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 945,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15396:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 948,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 970,
                  "src": "15413:18:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 947,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15413:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15356:76:1"
            },
            "returnParameters": {
              "id": 950,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15462:0:1"
            },
            "scope": 1494,
            "src": "15332:307:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "documentation": {
              "id": 971,
              "nodeType": "StructuredDocumentation",
              "src": "15645:149:1",
              "text": "Calculate the share of a condition in an oracle's market.\n @param _oracleId The oracle ID.\n @return Uses `ABDKMath64x64` number ID."
            },
            "id": 980,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "_calcRewardShare",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 976,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 973,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 980,
                  "src": "15825:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 972,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "15825:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 975,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 980,
                  "src": "15843:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 974,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15843:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15824:38:1"
            },
            "returnParameters": {
              "id": 979,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 978,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 980,
                  "src": "15894:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 977,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "15894:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15893:8:1"
            },
            "scope": 1494,
            "src": "15799:103:1",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1003,
              "nodeType": "Block",
              "src": "16031:125:1",
              "statements": [
                {
                  "assignments": [
                    992
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 992,
                      "mutability": "mutable",
                      "name": "_rewardShare",
                      "nodeType": "VariableDeclaration",
                      "scope": 1003,
                      "src": "16041:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      },
                      "typeName": {
                        "id": 991,
                        "name": "int128",
                        "nodeType": "ElementaryTypeName",
                        "src": "16041:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 997,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 994,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 982,
                        "src": "16080:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 995,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 984,
                        "src": "16091:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 993,
                      "name": "_calcRewardShare",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 980,
                      "src": "16063:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint256_$returns$_t_int128_$",
                        "typeString": "function (uint64,uint256) view returns (int128)"
                      }
                    },
                    "id": 996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16063:39:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16041:61:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1000,
                        "name": "_rewardShare",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 992,
                        "src": "16136:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      ],
                      "expression": {
                        "id": 998,
                        "name": "_oracleShare",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 986,
                        "src": "16119:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "id": 999,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7376,
                      "src": "16119:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int128_$_t_int128_$returns$_t_int128_$bound_to$_t_int128_$",
                        "typeString": "function (int128,int128) pure returns (int128)"
                      }
                    },
                    "id": 1001,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16119:30:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "functionReturnParameters": 990,
                  "id": 1002,
                  "nodeType": "Return",
                  "src": "16112:37:1"
                }
              ]
            },
            "id": 1004,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_calcMultiplier",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 987,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 982,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1004,
                  "src": "15933:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 981,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "15933:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 984,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1004,
                  "src": "15951:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 983,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "15951:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 986,
                  "mutability": "mutable",
                  "name": "_oracleShare",
                  "nodeType": "VariableDeclaration",
                  "scope": 1004,
                  "src": "15971:19:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 985,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "15971:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15932:59:1"
            },
            "returnParameters": {
              "id": 990,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 989,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1004,
                  "src": "16023:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int128",
                    "typeString": "int128"
                  },
                  "typeName": {
                    "id": 988,
                    "name": "int128",
                    "nodeType": "ElementaryTypeName",
                    "src": "16023:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16022:8:1"
            },
            "scope": 1494,
            "src": "15908:248:1",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1045,
              "nodeType": "Block",
              "src": "16257:137:1",
              "statements": [
                {
                  "expression": {
                    "id": 1028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 1015,
                          "name": "_balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2327,
                          "src": "16267:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 1018,
                        "indexExpression": {
                          "id": 1016,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1006,
                          "src": "16277:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16267:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 1019,
                      "indexExpression": {
                        "id": 1017,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1008,
                        "src": "16282:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16267:21:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1026,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1012,
                          "src": "16317:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1020,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2327,
                              "src": "16291:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 1022,
                            "indexExpression": {
                              "id": 1021,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1006,
                              "src": "16301:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16291:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1024,
                          "indexExpression": {
                            "id": 1023,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1008,
                            "src": "16306:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16291:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4303,
                        "src": "16291:25:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1027,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16291:33:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16267:57:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1029,
                  "nodeType": "ExpressionStatement",
                  "src": "16267:57:1"
                },
                {
                  "expression": {
                    "id": 1043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 1030,
                          "name": "_balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2327,
                          "src": "16334:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 1033,
                        "indexExpression": {
                          "id": 1031,
                          "name": "_id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1006,
                          "src": "16344:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16334:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 1034,
                      "indexExpression": {
                        "id": 1032,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1010,
                        "src": "16349:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16334:19:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1037,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2327,
                              "src": "16367:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 1039,
                            "indexExpression": {
                              "id": 1038,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1006,
                              "src": "16377:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16367:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 1041,
                          "indexExpression": {
                            "id": 1040,
                            "name": "_to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1010,
                            "src": "16382:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16367:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 1035,
                          "name": "_value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1012,
                          "src": "16356:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4286,
                        "src": "16356:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "16356:31:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "16334:53:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1044,
                  "nodeType": "ExpressionStatement",
                  "src": "16334:53:1"
                }
              ]
            },
            "id": 1046,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1006,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1046,
                  "src": "16183:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1005,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16183:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1008,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 1046,
                  "src": "16196:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1007,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16196:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1010,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 1046,
                  "src": "16211:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1009,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16211:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1012,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1046,
                  "src": "16224:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1011,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16224:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16182:57:1"
            },
            "returnParameters": {
              "id": 1014,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16257:0:1"
            },
            "scope": 1494,
            "src": "16162:232:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1070,
              "nodeType": "Block",
              "src": "17024:119:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 1063,
                                "name": "_collateralContractAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "17076:26:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                }
                              },
                              {
                                "id": 1064,
                                "name": "_collateralTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1051,
                                "src": "17104:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1065,
                                "name": "_oracleId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1053,
                                "src": "17124:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "expression": {
                                "id": 1061,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967295,
                                "src": "17059:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "17059:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 1066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17059:75:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1060,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967288,
                          "src": "17049:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 1067,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17049:86:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1059,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "17041:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 1058,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17041:7:1",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17041:95:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1057,
                  "id": 1069,
                  "nodeType": "Return",
                  "src": "17034:102:1"
                }
              ]
            },
            "documentation": {
              "id": 1047,
              "nodeType": "StructuredDocumentation",
              "src": "16420:428:1",
              "text": "Generate the ERC-1155 token ID that counts amount of donations per oracle for a ERC-1155 collateral token.\n @param _collateralContractAddress The ERC-1155 contract of the collateral token.\n @param _collateralTokenId The ERC-1155 ID of the collateral token.\n @param _oracleId The oracle ID.\n Note: It does not conflict with other tokens kinds, because the only other one is the uint64 conditional."
            },
            "id": 1071,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_collateralDonatedPerOracleTokenId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1049,
                  "mutability": "mutable",
                  "name": "_collateralContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1071,
                  "src": "16897:35:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 1048,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4654,
                    "src": "16897:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1051,
                  "mutability": "mutable",
                  "name": "_collateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1071,
                  "src": "16934:26:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1050,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16934:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1053,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1071,
                  "src": "16962:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 1052,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "16962:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16896:83:1"
            },
            "returnParameters": {
              "id": 1057,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1056,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1071,
                  "src": "17011:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1055,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17011:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17010:9:1"
            },
            "scope": 1494,
            "src": "16853:290:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1092,
              "nodeType": "Block",
              "src": "17675:108:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 1086,
                                "name": "_collateralContractAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1074,
                                "src": "17727:26:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                }
                              },
                              {
                                "id": 1087,
                                "name": "_collateralTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1076,
                                "src": "17755:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 1084,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967295,
                                "src": "17710:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "17710:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 1088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17710:64:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 1083,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967288,
                          "src": "17700:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 1089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17700:75:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 1082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "17692:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 1081,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "17692:7:1",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 1090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17692:84:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1080,
                  "id": 1091,
                  "nodeType": "Return",
                  "src": "17685:91:1"
                }
              ]
            },
            "documentation": {
              "id": 1072,
              "nodeType": "StructuredDocumentation",
              "src": "17149:377:1",
              "text": "Generate the ERC-1155 token ID that counts amount of donations for a ERC-1155 collateral token.\n @param _collateralContractAddress The ERC-1155 contract of the collateral token.\n @param _collateralTokenId The ERC-1155 ID of the collateral token.\n Note: It does not conflict with other tokens kinds, because the only other one is the uint64 conditional."
            },
            "id": 1093,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_collateralDonatedTokenId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1077,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1074,
                  "mutability": "mutable",
                  "name": "_collateralContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1093,
                  "src": "17566:35:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 1073,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4654,
                    "src": "17566:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1076,
                  "mutability": "mutable",
                  "name": "_collateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1093,
                  "src": "17603:26:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1075,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17603:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17565:65:1"
            },
            "returnParameters": {
              "id": 1080,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1079,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1093,
                  "src": "17662:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1078,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17662:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17661:9:1"
            },
            "scope": 1494,
            "src": "17531:252:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1110,
              "nodeType": "Block",
              "src": "17862:108:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1106,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "17880:30:1",
                        "subExpression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1101,
                              "name": "userUsedRedeemMap",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 395,
                              "src": "17881:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(uint256 => bool))"
                              }
                            },
                            "id": 1103,
                            "indexExpression": {
                              "id": 1102,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1097,
                              "src": "17899:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "17881:24:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_bool_$",
                              "typeString": "mapping(uint256 => bool)"
                            }
                          },
                          "id": 1105,
                          "indexExpression": {
                            "id": 1104,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1095,
                            "src": "17906:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17881:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "596f752063616e277420747261646520636f6e646974696f6e616c20746f6b656e732061667465722072656465656d2e",
                        "id": 1107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17912:50:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_24eedc11b69e1557102d15fe4820d3e0eda711106ce99878f9bcbdadb17f3db3",
                          "typeString": "literal_string \"You can't trade conditional tokens after redeem.\""
                        },
                        "value": "You can't trade conditional tokens after redeem."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_24eedc11b69e1557102d15fe4820d3e0eda711106ce99878f9bcbdadb17f3db3",
                          "typeString": "literal_string \"You can't trade conditional tokens after redeem.\""
                        }
                      ],
                      "id": 1100,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "17872:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17872:91:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1109,
                  "nodeType": "ExpressionStatement",
                  "src": "17872:91:1"
                }
              ]
            },
            "id": 1111,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkTransferAllowed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1095,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1111,
                  "src": "17820:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1094,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "17820:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1097,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 1111,
                  "src": "17833:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1096,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17833:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17819:28:1"
            },
            "returnParameters": {
              "id": 1099,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17862:0:1"
            },
            "scope": 1494,
            "src": "17789:181:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1177,
              "nodeType": "Block",
              "src": "18092:467:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1125,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1115,
                          "src": "18110:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 1128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18125:1:1",
                              "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": 1127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "18117:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1126,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "18117:7:1",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18117:10:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "18110:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a207461726765742061646472657373206d757374206265206e6f6e2d7a65726f",
                        "id": 1131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18129:42:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_27e9709d7b383cbb3da52b4dd7d393e8e9934271a7b9c0afe05a8be1f2b0321f",
                          "typeString": "literal_string \"ERC1155: target address must be non-zero\""
                        },
                        "value": "ERC1155: target address must be non-zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_27e9709d7b383cbb3da52b4dd7d393e8e9934271a7b9c0afe05a8be1f2b0321f",
                          "typeString": "literal_string \"ERC1155: target address must be non-zero\""
                        }
                      ],
                      "id": 1124,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "18102:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18102:70:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1133,
                  "nodeType": "ExpressionStatement",
                  "src": "18102:70:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1147,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1135,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1113,
                            "src": "18203:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 1136,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "18212:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "18212:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "18203:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1139,
                                "name": "_operatorApprovals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2333,
                                "src": "18226:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1141,
                              "indexExpression": {
                                "id": 1140,
                                "name": "_from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1113,
                                "src": "18245:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18226:25:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1144,
                            "indexExpression": {
                              "expression": {
                                "id": 1142,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "18252:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "18252:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "18226:37:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "74727565",
                            "id": 1145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18267:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "18226:45:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "18203:68:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a206e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e",
                        "id": 1148,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18285:58:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d24e8bd2be59f2f2cd9e29721be8ace2141eaffefd4f01fbcbae98946443b091",
                          "typeString": "literal_string \"ERC1155: need operator approval for 3rd party transfers.\""
                        },
                        "value": "ERC1155: need operator approval for 3rd party transfers."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d24e8bd2be59f2f2cd9e29721be8ace2141eaffefd4f01fbcbae98946443b091",
                          "typeString": "literal_string \"ERC1155: need operator approval for 3rd party transfers.\""
                        }
                      ],
                      "id": 1134,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "18182:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1149,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18182:171:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1150,
                  "nodeType": "ExpressionStatement",
                  "src": "18182:171:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1152,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1117,
                        "src": "18376:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1153,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1113,
                        "src": "18381:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1154,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1115,
                        "src": "18388:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1155,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1119,
                        "src": "18393:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1151,
                      "name": "_doTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1046,
                      "src": "18364:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,address,uint256)"
                      }
                    },
                    "id": 1156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18364:36:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1157,
                  "nodeType": "ExpressionStatement",
                  "src": "18364:36:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1159,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "18431:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1160,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "18431:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1161,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1113,
                        "src": "18443:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1162,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1115,
                        "src": "18450:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1163,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1117,
                        "src": "18455:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1164,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1119,
                        "src": "18460:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1158,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4551,
                      "src": "18416:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 1165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18416:51:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1166,
                  "nodeType": "EmitStatement",
                  "src": "18411:56:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1168,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "18509:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1169,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "18509:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1170,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1113,
                        "src": "18521:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1171,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1115,
                        "src": "18528:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1172,
                        "name": "_id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1117,
                        "src": "18533:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1173,
                        "name": "_value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1119,
                        "src": "18538:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1174,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1121,
                        "src": "18546:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1167,
                      "name": "_doSafeTransferAcceptanceCheck",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3222,
                      "src": "18478:30:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 1175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18478:74:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1176,
                  "nodeType": "ExpressionStatement",
                  "src": "18478:74:1"
                }
              ]
            },
            "id": 1178,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_baseSafeTransferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1113,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 1178,
                  "src": "18007:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1112,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18007:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1115,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 1178,
                  "src": "18022:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1114,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18022:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1117,
                  "mutability": "mutable",
                  "name": "_id",
                  "nodeType": "VariableDeclaration",
                  "scope": 1178,
                  "src": "18035:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1116,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18035:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1119,
                  "mutability": "mutable",
                  "name": "_value",
                  "nodeType": "VariableDeclaration",
                  "scope": 1178,
                  "src": "18048:14:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1118,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "18048:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1121,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1178,
                  "src": "18064:18:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1120,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "18064:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18006:77:1"
            },
            "returnParameters": {
              "id": 1123,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18092:0:1"
            },
            "scope": 1494,
            "src": "17976:583:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1280,
              "nodeType": "Block",
              "src": "18764:722:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 1194,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1185,
                            "src": "18782:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 1195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "18782:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 1196,
                            "name": "_values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1188,
                            "src": "18797:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 1197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "18797:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "18782:29:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a2049447320616e64205f76616c756573206d75737420686176652073616d65206c656e67746873",
                        "id": 1199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18813:49:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e0ba74382668489e23fed437e59bd794c88254b3bd9c626aad1b1f2980daa4af",
                          "typeString": "literal_string \"ERC1155: IDs and _values must have same lengths\""
                        },
                        "value": "ERC1155: IDs and _values must have same lengths"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e0ba74382668489e23fed437e59bd794c88254b3bd9c626aad1b1f2980daa4af",
                          "typeString": "literal_string \"ERC1155: IDs and _values must have same lengths\""
                        }
                      ],
                      "id": 1193,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "18774:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18774:89:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1201,
                  "nodeType": "ExpressionStatement",
                  "src": "18774:89:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1203,
                          "name": "_to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1182,
                          "src": "18881:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 1206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18896:1:1",
                              "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": 1205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "18888:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1204,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "18888:7:1",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18888:10:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "18881:17:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a207461726765742061646472657373206d757374206265206e6f6e2d7a65726f",
                        "id": 1209,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18900:42:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_27e9709d7b383cbb3da52b4dd7d393e8e9934271a7b9c0afe05a8be1f2b0321f",
                          "typeString": "literal_string \"ERC1155: target address must be non-zero\""
                        },
                        "value": "ERC1155: target address must be non-zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_27e9709d7b383cbb3da52b4dd7d393e8e9934271a7b9c0afe05a8be1f2b0321f",
                          "typeString": "literal_string \"ERC1155: target address must be non-zero\""
                        }
                      ],
                      "id": 1202,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "18873:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1210,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18873:70:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1211,
                  "nodeType": "ExpressionStatement",
                  "src": "18873:70:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1225,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1213,
                            "name": "_from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1180,
                            "src": "18974:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 1214,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "18983:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "18983:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "18974:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1217,
                                "name": "_operatorApprovals",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2333,
                                "src": "18997:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 1219,
                              "indexExpression": {
                                "id": 1218,
                                "name": "_from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1180,
                                "src": "19016:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18997:25:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1222,
                            "indexExpression": {
                              "expression": {
                                "id": 1220,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4294967281,
                                "src": "19023:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "19023:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "18997:37:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "74727565",
                            "id": 1223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19038:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "18997:45:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "18974:68:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a206e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e",
                        "id": 1226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19056:58:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d24e8bd2be59f2f2cd9e29721be8ace2141eaffefd4f01fbcbae98946443b091",
                          "typeString": "literal_string \"ERC1155: need operator approval for 3rd party transfers.\""
                        },
                        "value": "ERC1155: need operator approval for 3rd party transfers."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d24e8bd2be59f2f2cd9e29721be8ace2141eaffefd4f01fbcbae98946443b091",
                          "typeString": "literal_string \"ERC1155: need operator approval for 3rd party transfers.\""
                        }
                      ],
                      "id": 1212,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "18953:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18953:171:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1228,
                  "nodeType": "ExpressionStatement",
                  "src": "18953:171:1"
                },
                {
                  "body": {
                    "id": 1259,
                    "nodeType": "Block",
                    "src": "19180:140:1",
                    "statements": [
                      {
                        "assignments": [
                          1241
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1241,
                            "mutability": "mutable",
                            "name": "_id",
                            "nodeType": "VariableDeclaration",
                            "scope": 1259,
                            "src": "19194:11:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1240,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19194:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1245,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1242,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1185,
                            "src": "19208:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 1244,
                          "indexExpression": {
                            "id": 1243,
                            "name": "_i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1230,
                            "src": "19213:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "19208:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19194:22:1"
                      },
                      {
                        "assignments": [
                          1247
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1247,
                            "mutability": "mutable",
                            "name": "_value",
                            "nodeType": "VariableDeclaration",
                            "scope": 1259,
                            "src": "19230:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1246,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19230:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1251,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1248,
                            "name": "_values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1188,
                            "src": "19247:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 1250,
                          "indexExpression": {
                            "id": 1249,
                            "name": "_i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1230,
                            "src": "19255:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "19247:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19230:28:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1253,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1241,
                              "src": "19285:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1254,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1180,
                              "src": "19290:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1255,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1182,
                              "src": "19297:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1256,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1247,
                              "src": "19302:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1252,
                            "name": "_doTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1046,
                            "src": "19273:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,address,address,uint256)"
                            }
                          },
                          "id": 1257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19273:36:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1258,
                        "nodeType": "ExpressionStatement",
                        "src": "19273:36:1"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1233,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1230,
                      "src": "19156:2:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 1234,
                        "name": "_ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1185,
                        "src": "19161:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 1235,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "19161:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "19156:16:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1260,
                  "initializationExpression": {
                    "assignments": [
                      1230
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1230,
                        "mutability": "mutable",
                        "name": "_i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1260,
                        "src": "19140:10:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1229,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19140:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 1232,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 1231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "19153:1:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "19140:14:1"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 1238,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "19174:4:1",
                      "subExpression": {
                        "id": 1237,
                        "name": "_i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1230,
                        "src": "19176:2:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1239,
                    "nodeType": "ExpressionStatement",
                    "src": "19174:4:1"
                  },
                  "nodeType": "ForStatement",
                  "src": "19135:185:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1262,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "19349:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "19349:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1264,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1180,
                        "src": "19361:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1265,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "19368:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1266,
                        "name": "_ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1185,
                        "src": "19373:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 1267,
                        "name": "_values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1188,
                        "src": "19379:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "id": 1261,
                      "name": "TransferBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4566,
                      "src": "19335:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                      }
                    },
                    "id": 1268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19335:52:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1269,
                  "nodeType": "EmitStatement",
                  "src": "19330:57:1"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1271,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "19434:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "19434:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1273,
                        "name": "_from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1180,
                        "src": "19446:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1274,
                        "name": "_to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "19453:3:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1275,
                        "name": "_ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1185,
                        "src": "19458:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 1276,
                        "name": "_values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1188,
                        "src": "19464:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 1277,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1190,
                        "src": "19473:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1270,
                      "name": "_doSafeBatchTransferAcceptanceCheck",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3289,
                      "src": "19398:35:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "id": 1278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19398:81:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1279,
                  "nodeType": "ExpressionStatement",
                  "src": "19398:81:1"
                }
              ]
            },
            "id": 1281,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_baseSafeBatchTransferFrom",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1180,
                  "mutability": "mutable",
                  "name": "_from",
                  "nodeType": "VariableDeclaration",
                  "scope": 1281,
                  "src": "18610:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1179,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18610:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1182,
                  "mutability": "mutable",
                  "name": "_to",
                  "nodeType": "VariableDeclaration",
                  "scope": 1281,
                  "src": "18633:11:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1181,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18633:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1185,
                  "mutability": "mutable",
                  "name": "_ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 1281,
                  "src": "18654:21:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1183,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "18654:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1184,
                    "nodeType": "ArrayTypeName",
                    "src": "18654:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1188,
                  "mutability": "mutable",
                  "name": "_values",
                  "nodeType": "VariableDeclaration",
                  "scope": 1281,
                  "src": "18685:24:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1186,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "18685:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1187,
                    "nodeType": "ArrayTypeName",
                    "src": "18685:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1190,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1281,
                  "src": "18719:18:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1189,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "18719:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18600:143:1"
            },
            "returnParameters": {
              "id": 1192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18764:0:1"
            },
            "scope": 1494,
            "src": "18565:921:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1312,
              "nodeType": "Block",
              "src": "19563:235:1",
              "statements": [
                {
                  "assignments": [
                    1289
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1289,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1312,
                      "src": "19573:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 1288,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "19573:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1292,
                  "initialValue": {
                    "id": 1291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": true,
                    "src": "19592:13:1",
                    "subExpression": {
                      "id": 1290,
                      "name": "maxOracleId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 379,
                      "src": "19594:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19573:32:1"
                },
                {
                  "expression": {
                    "id": 1297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 1293,
                        "name": "oracleOwnersMap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 385,
                        "src": "19615:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint64_$_t_address_$",
                          "typeString": "mapping(uint64 => address)"
                        }
                      },
                      "id": 1295,
                      "indexExpression": {
                        "id": 1294,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1289,
                        "src": "19631:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "19615:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 1296,
                      "name": "_oracleOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1283,
                      "src": "19644:12:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "19615:41:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1298,
                  "nodeType": "ExpressionStatement",
                  "src": "19615:41:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1300,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "19685:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "19685:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1302,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1289,
                        "src": "19697:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 1299,
                      "name": "OracleCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 326,
                      "src": "19671:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$",
                        "typeString": "function (address,uint64)"
                      }
                    },
                    "id": 1303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19671:36:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1304,
                  "nodeType": "EmitStatement",
                  "src": "19666:41:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1306,
                        "name": "_oracleOwner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1283,
                        "src": "19741:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1307,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1289,
                        "src": "19755:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      ],
                      "id": 1305,
                      "name": "OracleOwnerChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 333,
                      "src": "19722:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$",
                        "typeString": "function (address,uint64)"
                      }
                    },
                    "id": 1308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19722:43:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1309,
                  "nodeType": "EmitStatement",
                  "src": "19717:48:1"
                },
                {
                  "expression": {
                    "id": 1310,
                    "name": "_oracleId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1289,
                    "src": "19782:9:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 1287,
                  "id": 1311,
                  "nodeType": "Return",
                  "src": "19775:16:1"
                }
              ]
            },
            "id": 1313,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_createOracle",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1284,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1283,
                  "mutability": "mutable",
                  "name": "_oracleOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 1313,
                  "src": "19515:20:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1282,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19515:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19514:22:1"
            },
            "returnParameters": {
              "id": 1287,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1286,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1313,
                  "src": "19555:6:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 1285,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "19555:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19554:8:1"
            },
            "scope": 1494,
            "src": "19492:306:1",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1344,
              "nodeType": "Block",
              "src": "20038:205:1",
              "statements": [
                {
                  "assignments": [
                    1324
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1324,
                      "mutability": "mutable",
                      "name": "_condition",
                      "nodeType": "VariableDeclaration",
                      "scope": 1344,
                      "src": "20048:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 1323,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "20048:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1327,
                  "initialValue": {
                    "id": 1326,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": true,
                    "src": "20068:16:1",
                    "subExpression": {
                      "id": 1325,
                      "name": "maxConditionId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 381,
                      "src": "20070:14:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20048:36:1"
                },
                {
                  "expression": {
                    "id": 1332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 1328,
                        "name": "conditionOwners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 416,
                        "src": "20095:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 1330,
                      "indexExpression": {
                        "id": 1329,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1324,
                        "src": "20111:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "20095:27:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 1331,
                      "name": "_customer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1316,
                      "src": "20125:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "20095:39:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1333,
                  "nodeType": "ExpressionStatement",
                  "src": "20095:39:1"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 1335,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "20167:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1336,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "20167:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 1337,
                        "name": "_customer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1316,
                        "src": "20179:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1338,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1324,
                        "src": "20190:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 1339,
                        "name": "_data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1318,
                        "src": "20202:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1334,
                      "name": "ConditionCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 344,
                      "src": "20150:16:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,bytes memory)"
                      }
                    },
                    "id": 1340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20150:58:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1341,
                  "nodeType": "EmitStatement",
                  "src": "20145:63:1"
                },
                {
                  "expression": {
                    "id": 1342,
                    "name": "_condition",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1324,
                    "src": "20226:10:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 1322,
                  "id": 1343,
                  "nodeType": "Return",
                  "src": "20219:17:1"
                }
              ]
            },
            "documentation": {
              "id": 1314,
              "nodeType": "StructuredDocumentation",
              "src": "19804:127:1",
              "text": "Start with 1, not 0, to avoid glitch with `conditionalTokens` variable.\n TODO: Use uint64 variables instead?"
            },
            "id": 1345,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doCreateCondition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1316,
                  "mutability": "mutable",
                  "name": "_customer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "19964:17:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1315,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19964:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1318,
                  "mutability": "mutable",
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "19983:18:1",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1317,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19983:5:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19963:39:1"
            },
            "returnParameters": {
              "id": 1322,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1321,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "20029:7:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1320,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20029:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20028:9:1"
            },
            "scope": 1494,
            "src": "19936:307:1",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1433,
              "nodeType": "Block",
              "src": "20564:962:1",
              "statements": [
                {
                  "assignments": [
                    1365
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1365,
                      "mutability": "mutable",
                      "name": "_conditionalBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 1433,
                      "src": "20574:27:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1364,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20574:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1370,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1367,
                        "name": "_user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1355,
                        "src": "20614:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1368,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1353,
                        "src": "20621:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1366,
                      "name": "balanceOf",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2400,
                      "src": "20604:9:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view returns (uint256)"
                      }
                    },
                    "id": 1369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20604:28:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20574:58:1"
                },
                {
                  "assignments": [
                    1372
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1372,
                      "mutability": "mutable",
                      "name": "_totalConditionalBalance",
                      "nodeType": "VariableDeclaration",
                      "scope": 1433,
                      "src": "20642:32:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1371,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "20642:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1381,
                  "initialValue": {
                    "condition": {
                      "id": 1373,
                      "name": "_inFirstRound",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1357,
                      "src": "20689:13:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "baseExpression": {
                        "id": 1377,
                        "name": "usersWithdrewInFirstRound",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 412,
                        "src": "20731:25:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
                          "typeString": "mapping(uint64 => uint256)"
                        }
                      },
                      "id": 1379,
                      "indexExpression": {
                        "id": 1378,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1351,
                        "src": "20757:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "20731:36:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "20689:78:1",
                    "trueExpression": {
                      "arguments": [
                        {
                          "id": 1375,
                          "name": "_condition",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1353,
                          "src": "20717:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1374,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "20705:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256) view returns (uint256)"
                        }
                      },
                      "id": 1376,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20705:23:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20642:125:1"
                },
                {
                  "expression": {
                    "id": 1388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1382,
                      "name": "_donatedPerOracleCollateralTokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1360,
                      "src": "20777:34:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1384,
                          "name": "_collateralContractAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1347,
                          "src": "20849:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC1155_$4654",
                            "typeString": "contract IERC1155"
                          }
                        },
                        {
                          "id": 1385,
                          "name": "_collateralTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1349,
                          "src": "20877:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "id": 1386,
                          "name": "_oracleId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1351,
                          "src": "20897:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_IERC1155_$4654",
                            "typeString": "contract IERC1155"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 1383,
                        "name": "_collateralDonatedPerOracleTokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1071,
                        "src": "20814:34:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_contract$_IERC1155_$4654_$_t_uint256_$_t_uint64_$returns$_t_uint256_$",
                          "typeString": "function (contract IERC1155,uint256,uint64) pure returns (uint256)"
                        }
                      },
                      "id": 1387,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "20814:93:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "20777:130:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1389,
                  "nodeType": "ExpressionStatement",
                  "src": "20777:130:1"
                },
                {
                  "assignments": [
                    1391
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1391,
                      "mutability": "mutable",
                      "name": "_oracleShare",
                      "nodeType": "VariableDeclaration",
                      "scope": 1433,
                      "src": "20966:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      },
                      "typeName": {
                        "id": 1390,
                        "name": "int128",
                        "nodeType": "ElementaryTypeName",
                        "src": "20966:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1397,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1394,
                        "name": "_conditionalBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "21007:19:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1395,
                        "name": "_totalConditionalBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1372,
                        "src": "21028:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 1392,
                        "name": "ABDKMath64x64",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9904,
                        "src": "20988:13:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ABDKMath64x64_$9904_$",
                          "typeString": "type(library ABDKMath64x64)"
                        }
                      },
                      "id": 1393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "divu",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7723,
                      "src": "20988:18:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_int128_$",
                        "typeString": "function (uint256,uint256) pure returns (int128)"
                      }
                    },
                    "id": 1396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20988:65:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "20966:87:1"
                },
                {
                  "assignments": [
                    1399
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1399,
                      "mutability": "mutable",
                      "name": "_newDividendsDonated",
                      "nodeType": "VariableDeclaration",
                      "scope": 1433,
                      "src": "21063:28:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1398,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "21063:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1417,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 1401,
                          "name": "_donatedPerOracleCollateralTokenId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1360,
                          "src": "21118:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1400,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3356,
                        "src": "21106:11:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256) view returns (uint256)"
                        }
                      },
                      "id": 1402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21106:47:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "components": [
                        {
                          "condition": {
                            "id": 1403,
                            "name": "_inFirstRound",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1357,
                            "src": "21169:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1409,
                                "name": "lastCollateralBalanceSecondRoundMap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 407,
                                "src": "21298:35:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 1411,
                              "indexExpression": {
                                "id": 1410,
                                "name": "_donatedPerOracleCollateralTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1360,
                                "src": "21334:34:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21298:71:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1413,
                            "indexExpression": {
                              "id": 1412,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1355,
                              "src": "21370:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "21298:78:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "21169:207:1",
                          "trueExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 1404,
                                "name": "lastCollateralBalanceFirstRoundMap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 401,
                                "src": "21201:34:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 1406,
                              "indexExpression": {
                                "id": 1405,
                                "name": "_donatedPerOracleCollateralTokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1360,
                                "src": "21236:34:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21201:70:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 1408,
                            "indexExpression": {
                              "id": 1407,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1355,
                              "src": "21272:5:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "21201:77:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1415,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "21168:209:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21106:271:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21063:314:1"
                },
                {
                  "assignments": [
                    1419
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1419,
                      "mutability": "mutable",
                      "name": "_multiplier",
                      "nodeType": "VariableDeclaration",
                      "scope": 1433,
                      "src": "21387:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int128",
                        "typeString": "int128"
                      },
                      "typeName": {
                        "id": 1418,
                        "name": "int128",
                        "nodeType": "ElementaryTypeName",
                        "src": "21387:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1425,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 1421,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1351,
                        "src": "21424:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "id": 1422,
                        "name": "_condition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1353,
                        "src": "21435:10:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 1423,
                        "name": "_oracleShare",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1391,
                        "src": "21447:12:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        }
                      ],
                      "id": 1420,
                      "name": "_calcMultiplier",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1004,
                      "src": "21408:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint64_$_t_uint256_$_t_int128_$returns$_t_int128_$",
                        "typeString": "function (uint64,uint256,int128) view returns (int128)"
                      }
                    },
                    "id": 1424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21408:52:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int128",
                      "typeString": "int128"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21387:73:1"
                },
                {
                  "expression": {
                    "id": 1431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 1426,
                      "name": "_donated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1362,
                      "src": "21470:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 1429,
                          "name": "_newDividendsDonated",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1399,
                          "src": "21498:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "id": 1427,
                          "name": "_multiplier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1419,
                          "src": "21481:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "id": 1428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "mulu",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 7551,
                        "src": "21481:16:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_int128_$_t_uint256_$returns$_t_uint256_$bound_to$_t_int128_$",
                          "typeString": "function (int128,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 1430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "21481:38:1",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21470:49:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1432,
                  "nodeType": "ExpressionStatement",
                  "src": "21470:49:1"
                }
              ]
            },
            "id": 1434,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_collateralOwingBase",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1347,
                  "mutability": "mutable",
                  "name": "_collateralContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 1434,
                  "src": "20288:35:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$4654",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 1346,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4654,
                    "src": "20288:8:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1349,
                  "mutability": "mutable",
                  "name": "_collateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1434,
                  "src": "20333:26:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1348,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20333:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1351,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1434,
                  "src": "20369:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 1350,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "20369:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1353,
                  "mutability": "mutable",
                  "name": "_condition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1434,
                  "src": "20395:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1352,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20395:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1355,
                  "mutability": "mutable",
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 1434,
                  "src": "20423:13:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1354,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20423:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1357,
                  "mutability": "mutable",
                  "name": "_inFirstRound",
                  "nodeType": "VariableDeclaration",
                  "scope": 1434,
                  "src": "20446:18:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1356,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20446:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20278:192:1"
            },
            "returnParameters": {
              "id": 1363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1360,
                  "mutability": "mutable",
                  "name": "_donatedPerOracleCollateralTokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1434,
                  "src": "20501:39:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1359,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20501:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1362,
                  "mutability": "mutable",
                  "name": "_donated",
                  "nodeType": "VariableDeclaration",
                  "scope": 1434,
                  "src": "20542:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "20542:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20500:59:1"
            },
            "scope": 1494,
            "src": "20249:1277:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1448,
              "nodeType": "Block",
              "src": "21604:69:1",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 1441,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967292,
                        "src": "21621:5:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 1442,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "src": "21621:15:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "baseExpression": {
                        "id": 1443,
                        "name": "gracePeriodEnds",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 389,
                        "src": "21640:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint64_$_t_uint256_$",
                          "typeString": "mapping(uint64 => uint256)"
                        }
                      },
                      "id": 1445,
                      "indexExpression": {
                        "id": 1444,
                        "name": "_oracleId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1436,
                        "src": "21656:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "21640:26:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21621:45:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1440,
                  "id": 1447,
                  "nodeType": "Return",
                  "src": "21614:52:1"
                }
              ]
            },
            "id": 1449,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isInFirstRound",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1436,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1449,
                  "src": "21557:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 1435,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "21557:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21556:18:1"
            },
            "returnParameters": {
              "id": 1440,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1439,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1449,
                  "src": "21598:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1438,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21598:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21597:6:1"
            },
            "scope": 1494,
            "src": "21532:141:1",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1463,
              "nodeType": "Block",
              "src": "21750:200:1",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1461,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 1456,
                      "name": "_tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1451,
                      "src": "21925:8:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_rational_18446744073709551616_by_1",
                            "typeString": "int_const 18446744073709551616"
                          },
                          "id": 1459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "31",
                            "id": 1457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21937:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "hexValue": "3634",
                            "id": 1458,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21940:2:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_64_by_1",
                              "typeString": "int_const 64"
                            },
                            "value": "64"
                          },
                          "src": "21937:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18446744073709551616_by_1",
                            "typeString": "int_const 18446744073709551616"
                          }
                        }
                      ],
                      "id": 1460,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "21936:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18446744073709551616_by_1",
                        "typeString": "int_const 18446744073709551616"
                      }
                    },
                    "src": "21925:18:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 1455,
                  "id": 1462,
                  "nodeType": "Return",
                  "src": "21918:25:1"
                }
              ]
            },
            "id": 1464,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isConditional",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1451,
                  "mutability": "mutable",
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1464,
                  "src": "21703:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1450,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "21703:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21702:18:1"
            },
            "returnParameters": {
              "id": 1455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1454,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1464,
                  "src": "21744:4:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1453,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21744:4:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21743:6:1"
            },
            "scope": 1494,
            "src": "21679:271:1",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1479,
              "nodeType": "Block",
              "src": "21993:102:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1474,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "id": 1469,
                            "name": "oracleOwnersMap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 385,
                            "src": "22011:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint64_$_t_address_$",
                              "typeString": "mapping(uint64 => address)"
                            }
                          },
                          "id": 1471,
                          "indexExpression": {
                            "id": 1470,
                            "name": "_oracleId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1466,
                            "src": "22027:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22011:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 1472,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "22041:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "22041:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "22011:40:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f7420746865206f7261636c65206f776e65722e",
                        "id": 1475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22053:23:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f46be02995cbd79ceedc8890ecb258596bbcfdc4657689c39b0e87ec718e3121",
                          "typeString": "literal_string \"Not the oracle owner.\""
                        },
                        "value": "Not the oracle owner."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f46be02995cbd79ceedc8890ecb258596bbcfdc4657689c39b0e87ec718e3121",
                          "typeString": "literal_string \"Not the oracle owner.\""
                        }
                      ],
                      "id": 1468,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "22003:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22003:74:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1477,
                  "nodeType": "ExpressionStatement",
                  "src": "22003:74:1"
                },
                {
                  "id": 1478,
                  "nodeType": "PlaceholderStatement",
                  "src": "22087:1:1"
                }
              ]
            },
            "id": 1480,
            "name": "_isOracle",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1467,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1466,
                  "mutability": "mutable",
                  "name": "_oracleId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1480,
                  "src": "21975:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 1465,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "21975:6:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21974:18:1"
            },
            "src": "21956:139:1",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1492,
              "nodeType": "Block",
              "src": "22147:91:1",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 1486,
                            "name": "_tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1482,
                            "src": "22180:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1485,
                          "name": "_isConditional",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1464,
                          "src": "22165:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) pure returns (bool)"
                          }
                        },
                        "id": 1487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22165:24:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "49742773206e6f7420796f757220636f6e646974696f6e616c2e",
                        "id": 1488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22191:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d3276605e25a6784a1b2fd62993b736ac7e631e0a761b645ed154784a21e0329",
                          "typeString": "literal_string \"It's not your conditional.\""
                        },
                        "value": "It's not your conditional."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d3276605e25a6784a1b2fd62993b736ac7e631e0a761b645ed154784a21e0329",
                          "typeString": "literal_string \"It's not your conditional.\""
                        }
                      ],
                      "id": 1484,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "22157:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22157:63:1",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1490,
                  "nodeType": "ExpressionStatement",
                  "src": "22157:63:1"
                },
                {
                  "id": 1491,
                  "nodeType": "PlaceholderStatement",
                  "src": "22230:1:1"
                }
              ]
            },
            "id": 1493,
            "name": "checkIsConditional",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1482,
                  "mutability": "mutable",
                  "name": "_tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1493,
                  "src": "22129:16:1",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1481,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "22129:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22128:18:1"
            },
            "src": "22101:137:1",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 1495,
        "src": "1089:21151:1"
      }
    ],
    "src": "46:22195:1"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/user/Projects/future-contracts/contracts/BaseLock.sol",
      "exportedSymbols": {
        "ABDKMath64x64": [
          9904
        ],
        "BaseLock": [
          1494
        ],
        "ERC1155Holder": [
          4504
        ],
        "ERC1155WithTotals": [
          3651
        ],
        "ERC721Holder": [
          5668
        ],
        "IERC1155": [
          4654
        ],
        "SafeMath": [
          4453
        ]
      },
      "license": "LGPL-3.0-or-later"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.7",
            ".1"
          ]
        },
        "id": 294,
        "name": "PragmaDirective",
        "src": "46:23:1"
      },
      {
        "attributes": {
          "SourceUnit": 4454,
          "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
          "file": "@openzeppelin/contracts/math/SafeMath.sol",
          "scope": 1495,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "SafeMath"
                },
                "id": 295,
                "name": "Identifier",
                "src": "79:8:1"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 296,
        "name": "ImportDirective",
        "src": "70:69:1"
      },
      {
        "attributes": {
          "SourceUnit": 9905,
          "absolutePath": "abdk-libraries-solidity/ABDKMath64x64.sol",
          "file": "abdk-libraries-solidity/ABDKMath64x64.sol",
          "scope": 1495,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "ABDKMath64x64"
                },
                "id": 297,
                "name": "Identifier",
                "src": "149:13:1"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 298,
        "name": "ImportDirective",
        "src": "140:74:1"
      },
      {
        "attributes": {
          "SourceUnit": 3652,
          "absolutePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol",
          "file": "./ERC1155/ERC1155WithTotals.sol",
          "scope": 1495,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "ERC1155WithTotals"
                },
                "id": 299,
                "name": "Identifier",
                "src": "224:17:1"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 300,
        "name": "ImportDirective",
        "src": "215:68:1"
      },
      {
        "attributes": {
          "SourceUnit": 4505,
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol",
          "file": "@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol",
          "scope": 1495,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "ERC1155Holder"
                },
                "id": 301,
                "name": "Identifier",
                "src": "293:13:1"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 302,
        "name": "ImportDirective",
        "src": "284:88:1"
      },
      {
        "attributes": {
          "SourceUnit": 4655,
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
          "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
          "scope": 1495,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "IERC1155"
                },
                "id": 303,
                "name": "Identifier",
                "src": "382:8:1"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 304,
        "name": "ImportDirective",
        "src": "373:78:1"
      },
      {
        "attributes": {
          "SourceUnit": 5669,
          "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Holder.sol",
          "file": "@openzeppelin/contracts/token/ERC721/ERC721Holder.sol",
          "scope": 1495,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "ERC721Holder"
                },
                "id": 305,
                "name": "Identifier",
                "src": "461:12:1"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 306,
        "name": "ImportDirective",
        "src": "452:85:1"
      },
      {
        "attributes": {
          "abstract": true,
          "contractDependencies": [
            3318,
            3651,
            4079,
            4245,
            4257,
            4504,
            4532,
            4654,
            4669,
            4710,
            5668,
            5860
          ],
          "contractKind": "contract",
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            1494,
            5668,
            5860,
            4504,
            4532,
            4710,
            3651,
            3318,
            4669,
            4654,
            4245,
            4257,
            4079
          ],
          "name": "BaseLock",
          "scope": 1495
        },
        "children": [
          {
            "attributes": {
              "text": "@title A base class to lock collaterals and distribute them proportional to an oracle result.\n @author Victor Porton\n One can also donate/bequest a smart wallet (explain how).\n We have two kinds of ERC-1155 token IDs:\n - conditional tokens: numbers < 2**64\n - a combination of a collateral contract address and collateral token ID\n   (a counter of donated amount of collateral tokens, don't confuse with collateral tokens themselves)\n Inheriting from here don't forget to create `createOracle()` external method."
            },
            "id": 307,
            "name": "StructuredDocumentation",
            "src": "539:550:1"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "ERC1155WithTotals",
                  "referencedDeclaration": 3651,
                  "type": "contract ERC1155WithTotals"
                },
                "id": 308,
                "name": "UserDefinedTypeName",
                "src": "1123:17:1"
              }
            ],
            "id": 309,
            "name": "InheritanceSpecifier",
            "src": "1123:17:1"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "ERC1155Holder",
                  "referencedDeclaration": 4504,
                  "type": "contract ERC1155Holder"
                },
                "id": 310,
                "name": "UserDefinedTypeName",
                "src": "1146:13:1"
              }
            ],
            "id": 311,
            "name": "InheritanceSpecifier",
            "src": "1146:13:1"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "ERC721Holder",
                  "referencedDeclaration": 5668,
                  "type": "contract ERC721Holder"
                },
                "id": 312,
                "name": "UserDefinedTypeName",
                "src": "1224:12:1"
              }
            ],
            "id": 313,
            "name": "InheritanceSpecifier",
            "src": "1224:12:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "ABDKMath64x64",
                  "referencedDeclaration": 9904,
                  "type": "library ABDKMath64x64"
                },
                "id": 314,
                "name": "UserDefinedTypeName",
                "src": "1296:13:1"
              },
              {
                "attributes": {
                  "name": "int128",
                  "type": "int128"
                },
                "id": 315,
                "name": "ElementaryTypeName",
                "src": "1314:6:1"
              }
            ],
            "id": 316,
            "name": "UsingForDirective",
            "src": "1290:31:1"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "SafeMath",
                  "referencedDeclaration": 4453,
                  "type": "library SafeMath"
                },
                "id": 317,
                "name": "UserDefinedTypeName",
                "src": "1332:8:1"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 318,
                "name": "ElementaryTypeName",
                "src": "1345:7:1"
              }
            ],
            "id": 319,
            "name": "UsingForDirective",
            "src": "1326:27:1"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "OracleCreated"
            },
            "children": [
              {
                "attributes": {
                  "text": "Emitted when an oracle is created.\n @param oracleId The ID of the created oracle."
                },
                "id": 320,
                "name": "StructuredDocumentation",
                "src": "1359:92:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "sender",
                      "scope": 326,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 321,
                        "name": "ElementaryTypeName",
                        "src": "1476:7:1"
                      }
                    ],
                    "id": 322,
                    "name": "VariableDeclaration",
                    "src": "1476:14:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "oracleId",
                      "scope": 326,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 323,
                        "name": "ElementaryTypeName",
                        "src": "1492:6:1"
                      }
                    ],
                    "id": 324,
                    "name": "VariableDeclaration",
                    "src": "1492:15:1"
                  }
                ],
                "id": 325,
                "name": "ParameterList",
                "src": "1475:33:1"
              }
            ],
            "id": 326,
            "name": "EventDefinition",
            "src": "1456:53:1"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "OracleOwnerChanged"
            },
            "children": [
              {
                "attributes": {
                  "text": "Emitted when an oracle owner is set.\n @param oracleOwner Who created an oracle\n @param oracleId The ID of the oracle."
                },
                "id": 327,
                "name": "StructuredDocumentation",
                "src": "1515:135:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "oracleOwner",
                      "scope": 333,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 328,
                        "name": "ElementaryTypeName",
                        "src": "1680:7:1"
                      }
                    ],
                    "id": 329,
                    "name": "VariableDeclaration",
                    "src": "1680:27:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "oracleId",
                      "scope": 333,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 330,
                        "name": "ElementaryTypeName",
                        "src": "1709:6:1"
                      }
                    ],
                    "id": 331,
                    "name": "VariableDeclaration",
                    "src": "1709:23:1"
                  }
                ],
                "id": 332,
                "name": "ParameterList",
                "src": "1679:54:1"
              }
            ],
            "id": 333,
            "name": "EventDefinition",
            "src": "1655:79:1"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "ConditionCreated"
            },
            "children": [
              {
                "attributes": {
                  "text": "Emitted when an oracle owner is set.\n @param sender Who created the condition\n @param customer The owner of the condition.\n @param condition The created condition ID."
                },
                "id": 334,
                "name": "StructuredDocumentation",
                "src": "1740:191:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "scope": 344,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 335,
                        "name": "ElementaryTypeName",
                        "src": "1959:7:1"
                      }
                    ],
                    "id": 336,
                    "name": "VariableDeclaration",
                    "src": "1959:22:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "customer",
                      "scope": 344,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 337,
                        "name": "ElementaryTypeName",
                        "src": "1983:7:1"
                      }
                    ],
                    "id": 338,
                    "name": "VariableDeclaration",
                    "src": "1983:24:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "condition",
                      "scope": 344,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 339,
                        "name": "ElementaryTypeName",
                        "src": "2009:7:1"
                      }
                    ],
                    "id": 340,
                    "name": "VariableDeclaration",
                    "src": "2009:25:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 344,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 341,
                        "name": "ElementaryTypeName",
                        "src": "2036:5:1"
                      }
                    ],
                    "id": 342,
                    "name": "VariableDeclaration",
                    "src": "2036:10:1"
                  }
                ],
                "id": 343,
                "name": "ParameterList",
                "src": "1958:89:1"
              }
            ],
            "id": 344,
            "name": "EventDefinition",
            "src": "1936:112:1"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "DonateCollateral"
            },
            "children": [
              {
                "attributes": {
                  "text": "Emitted when a collateral is donated.\n @param collateralContractAddress The ERC-1155 contract of the donated token.\n @param collateralTokenId The ERC-1155 ID of the donated token.\n @param sender Who donated.\n @param amount The amount donated.\n @param to Whose account the donation is assigned to.\n @param data Additional transaction data."
                },
                "id": 345,
                "name": "StructuredDocumentation",
                "src": "2054:384:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "collateralContractAddress",
                      "scope": 359,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC1155",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "IERC1155",
                          "referencedDeclaration": 4654,
                          "type": "contract IERC1155"
                        },
                        "id": 346,
                        "name": "UserDefinedTypeName",
                        "src": "2475:8:1"
                      }
                    ],
                    "id": 347,
                    "name": "VariableDeclaration",
                    "src": "2475:42:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "collateralTokenId",
                      "scope": 359,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 348,
                        "name": "ElementaryTypeName",
                        "src": "2527:7:1"
                      }
                    ],
                    "id": 349,
                    "name": "VariableDeclaration",
                    "src": "2527:33:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "scope": 359,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 350,
                        "name": "ElementaryTypeName",
                        "src": "2570:7:1"
                      }
                    ],
                    "id": 351,
                    "name": "VariableDeclaration",
                    "src": "2570:22:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 359,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 352,
                        "name": "ElementaryTypeName",
                        "src": "2602:7:1"
                      }
                    ],
                    "id": 353,
                    "name": "VariableDeclaration",
                    "src": "2602:14:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 359,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 354,
                        "name": "ElementaryTypeName",
                        "src": "2626:7:1"
                      }
                    ],
                    "id": 355,
                    "name": "VariableDeclaration",
                    "src": "2626:10:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 359,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 356,
                        "name": "ElementaryTypeName",
                        "src": "2646:5:1"
                      }
                    ],
                    "id": 357,
                    "name": "VariableDeclaration",
                    "src": "2646:10:1"
                  }
                ],
                "id": 358,
                "name": "ParameterList",
                "src": "2465:197:1"
              }
            ],
            "id": 359,
            "name": "EventDefinition",
            "src": "2443:220:1"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "OracleFinished"
            },
            "children": [
              {
                "attributes": {
                  "text": "Emitted when an oracle is marked as having finished its work.\n @param oracleId The oracle ID."
                },
                "id": 360,
                "name": "StructuredDocumentation",
                "src": "2669:104:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "oracleId",
                      "scope": 364,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 361,
                        "name": "ElementaryTypeName",
                        "src": "2799:6:1"
                      }
                    ],
                    "id": 362,
                    "name": "VariableDeclaration",
                    "src": "2799:23:1"
                  }
                ],
                "id": 363,
                "name": "ParameterList",
                "src": "2798:25:1"
              }
            ],
            "id": 364,
            "name": "EventDefinition",
            "src": "2778:46:1"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "CollateralWithdrawn"
            },
            "children": [
              {
                "attributes": {
                  "text": "Emitted when collateral is withdrawn.\n @param contractAddress The ERC-1155 contract of the collateral token.\n @param collateralTokenId The ERC-1155 token ID of the collateral.\n @param oracleId The oracle ID for which withdrawal is done.\n @param user Who has withdrawn.\n @param amount The amount withdrawn."
                },
                "id": 365,
                "name": "StructuredDocumentation",
                "src": "2830:344:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "contractAddress",
                      "scope": 377,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC1155",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "IERC1155",
                          "referencedDeclaration": 4654,
                          "type": "contract IERC1155"
                        },
                        "id": 366,
                        "name": "UserDefinedTypeName",
                        "src": "3214:8:1"
                      }
                    ],
                    "id": 367,
                    "name": "VariableDeclaration",
                    "src": "3214:32:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "collateralTokenId",
                      "scope": 377,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 368,
                        "name": "ElementaryTypeName",
                        "src": "3256:7:1"
                      }
                    ],
                    "id": 369,
                    "name": "VariableDeclaration",
                    "src": "3256:33:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "oracleId",
                      "scope": 377,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 370,
                        "name": "ElementaryTypeName",
                        "src": "3299:6:1"
                      }
                    ],
                    "id": 371,
                    "name": "VariableDeclaration",
                    "src": "3299:23:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "user",
                      "scope": 377,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 372,
                        "name": "ElementaryTypeName",
                        "src": "3332:7:1"
                      }
                    ],
                    "id": 373,
                    "name": "VariableDeclaration",
                    "src": "3332:12:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 377,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 374,
                        "name": "ElementaryTypeName",
                        "src": "3354:7:1"
                      }
                    ],
                    "id": 375,
                    "name": "VariableDeclaration",
                    "src": "3354:14:1"
                  }
                ],
                "id": 376,
                "name": "ParameterList",
                "src": "3204:170:1"
              }
            ],
            "id": 377,
            "name": "EventDefinition",
            "src": "3179:196:1"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "837b0f84",
              "mutability": "mutable",
              "name": "maxOracleId",
              "scope": 1494,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint64",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint64",
                  "type": "uint64"
                },
                "id": 378,
                "name": "ElementaryTypeName",
                "src": "3397:6:1"
              }
            ],
            "id": 379,
            "name": "VariableDeclaration",
            "src": "3397:25:1"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "47a2fd8d",
              "mutability": "mutable",
              "name": "maxConditionId",
              "scope": 1494,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint64",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint64",
                  "type": "uint64"
                },
                "id": 380,
                "name": "ElementaryTypeName",
                "src": "3468:6:1"
              }
            ],
            "id": 381,
            "name": "VariableDeclaration",
            "src": "3468:28:1"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "oracleOwnersMap",
              "scope": 1494,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint64 => address)",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint64 => address)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 382,
                    "name": "ElementaryTypeName",
                    "src": "3594:6:1"
                  },
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 383,
                    "name": "ElementaryTypeName",
                    "src": "3604:7:1"
                  }
                ],
                "id": 384,
                "name": "Mapping",
                "src": "3586:26:1"
              }
            ],
            "id": 385,
            "name": "VariableDeclaration",
            "src": "3586:50:1"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "gracePeriodEnds",
              "scope": 1494,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint64 => uint256)",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint64 => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 386,
                    "name": "ElementaryTypeName",
                    "src": "3719:6:1"
                  },
                  {
                    "attributes": {
                      "name": "uint",
                      "type": "uint256"
                    },
                    "id": 387,
                    "name": "ElementaryTypeName",
                    "src": "3729:4:1"
                  }
                ],
                "id": 388,
                "name": "Mapping",
                "src": "3711:23:1"
              }
            ],
            "id": 389,
            "name": "VariableDeclaration",
            "src": "3711:47:1"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "userUsedRedeemMap",
              "scope": 1494,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => mapping(uint256 => bool))",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => mapping(uint256 => bool))"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 390,
                    "name": "ElementaryTypeName",
                    "src": "3873:7:1"
                  },
                  {
                    "attributes": {
                      "type": "mapping(uint256 => bool)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 391,
                        "name": "ElementaryTypeName",
                        "src": "3892:7:1"
                      },
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 392,
                        "name": "ElementaryTypeName",
                        "src": "3903:4:1"
                      }
                    ],
                    "id": 393,
                    "name": "Mapping",
                    "src": "3884:24:1"
                  }
                ],
                "id": 394,
                "name": "Mapping",
                "src": "3865:44:1"
              }
            ],
            "id": 395,
            "name": "VariableDeclaration",
            "src": "3865:70:1"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "6695821f",
              "mutability": "mutable",
              "name": "lastCollateralBalanceFirstRoundMap",
              "scope": 1494,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint256 => mapping(address => uint256))",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint256 => mapping(address => uint256))"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 396,
                    "name": "ElementaryTypeName",
                    "src": "4053:7:1"
                  },
                  {
                    "attributes": {
                      "type": "mapping(address => uint256)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 397,
                        "name": "ElementaryTypeName",
                        "src": "4072:7:1"
                      },
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 398,
                        "name": "ElementaryTypeName",
                        "src": "4083:7:1"
                      }
                    ],
                    "id": 399,
                    "name": "Mapping",
                    "src": "4064:27:1"
                  }
                ],
                "id": 400,
                "name": "Mapping",
                "src": "4045:47:1"
              }
            ],
            "id": 401,
            "name": "VariableDeclaration",
            "src": "4045:89:1"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "01a983df",
              "mutability": "mutable",
              "name": "lastCollateralBalanceSecondRoundMap",
              "scope": 1494,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint256 => mapping(address => uint256))",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint256 => mapping(address => uint256))"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 402,
                    "name": "ElementaryTypeName",
                    "src": "4252:7:1"
                  },
                  {
                    "attributes": {
                      "type": "mapping(address => uint256)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 403,
                        "name": "ElementaryTypeName",
                        "src": "4271:7:1"
                      },
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 404,
                        "name": "ElementaryTypeName",
                        "src": "4282:7:1"
                      }
                    ],
                    "id": 405,
                    "name": "Mapping",
                    "src": "4263:27:1"
                  }
                ],
                "id": 406,
                "name": "Mapping",
                "src": "4244:47:1"
              }
            ],
            "id": 407,
            "name": "VariableDeclaration",
            "src": "4244:90:1"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "77074448",
              "mutability": "mutable",
              "name": "usersWithdrewInFirstRound",
              "scope": 1494,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint64 => uint256)",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint64 => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 409,
                    "name": "ElementaryTypeName",
                    "src": "4444:6:1"
                  },
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 410,
                    "name": "ElementaryTypeName",
                    "src": "4454:7:1"
                  }
                ],
                "id": 411,
                "name": "Mapping",
                "src": "4436:26:1"
              },
              {
                "attributes": {
                  "text": "Mapping (oracleId => amount user withdrew in first round) (see `docs/Calculations.md`)."
                },
                "id": 408,
                "name": "StructuredDocumentation",
                "src": "4340:91:1"
              }
            ],
            "id": 412,
            "name": "VariableDeclaration",
            "src": "4436:59:1"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "61fbc14a",
              "mutability": "mutable",
              "name": "conditionOwners",
              "scope": 1494,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint256 => address)",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint256 => address)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 413,
                    "name": "ElementaryTypeName",
                    "src": "4560:7:1"
                  },
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 414,
                    "name": "ElementaryTypeName",
                    "src": "4571:7:1"
                  }
                ],
                "id": 415,
                "name": "Mapping",
                "src": "4552:27:1"
              }
            ],
            "id": 416,
            "name": "VariableDeclaration",
            "src": "4552:50:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Constructor.\n @param _uri Our ERC-1155 tokens description URI."
                },
                "id": 417,
                "name": "StructuredDocumentation",
                "src": "4609:73:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_uri",
                      "scope": 446,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 418,
                        "name": "ElementaryTypeName",
                        "src": "4699:6:1"
                      }
                    ],
                    "id": 419,
                    "name": "VariableDeclaration",
                    "src": "4699:18:1"
                  }
                ],
                "id": 420,
                "name": "ParameterList",
                "src": "4698:20:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 424,
                "name": "ParameterList",
                "src": "4743:0:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3651,
                      "type": "type(contract ERC1155WithTotals)",
                      "value": "ERC1155WithTotals"
                    },
                    "id": 421,
                    "name": "Identifier",
                    "src": "4719:17:1"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 419,
                      "type": "string memory",
                      "value": "_uri"
                    },
                    "id": 422,
                    "name": "Identifier",
                    "src": "4737:4:1"
                  }
                ],
                "id": 423,
                "name": "ModifierInvocation",
                "src": "4719:23:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4244,
                              "type": "function (bytes4)",
                              "value": "_registerInterface"
                            },
                            "id": 425,
                            "name": "Identifier",
                            "src": "4753:18:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "operator": "^",
                              "type": "bytes4"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "^",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "selector",
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "onERC1155Received",
                                          "referencedDeclaration": 4480,
                                          "type": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "contract BaseLock",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1494,
                                                  "type": "type(contract BaseLock)",
                                                  "value": "BaseLock"
                                                },
                                                "id": 426,
                                                "name": "Identifier",
                                                "src": "4785:8:1"
                                              },
                                              {
                                                "attributes": {
                                                  "hexvalue": "30",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "token": "number",
                                                  "type": "int_const 0",
                                                  "value": "0"
                                                },
                                                "id": 427,
                                                "name": "Literal",
                                                "src": "4794:1:1"
                                              }
                                            ],
                                            "id": 428,
                                            "name": "FunctionCall",
                                            "src": "4785:11:1"
                                          }
                                        ],
                                        "id": 429,
                                        "name": "MemberAccess",
                                        "src": "4785:29:1"
                                      }
                                    ],
                                    "id": 430,
                                    "name": "MemberAccess",
                                    "src": "4785:38:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "selector",
                                      "type": "bytes4"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "onERC1155BatchReceived",
                                          "referencedDeclaration": 4503,
                                          "type": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "contract BaseLock",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1494,
                                                  "type": "type(contract BaseLock)",
                                                  "value": "BaseLock"
                                                },
                                                "id": 431,
                                                "name": "Identifier",
                                                "src": "4838:8:1"
                                              },
                                              {
                                                "attributes": {
                                                  "hexvalue": "30",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "token": "number",
                                                  "type": "int_const 0",
                                                  "value": "0"
                                                },
                                                "id": 432,
                                                "name": "Literal",
                                                "src": "4847:1:1"
                                              }
                                            ],
                                            "id": 433,
                                            "name": "FunctionCall",
                                            "src": "4838:11:1"
                                          }
                                        ],
                                        "id": 434,
                                        "name": "MemberAccess",
                                        "src": "4838:34:1"
                                      }
                                    ],
                                    "id": 435,
                                    "name": "MemberAccess",
                                    "src": "4838:43:1"
                                  }
                                ],
                                "id": 436,
                                "name": "BinaryOperation",
                                "src": "4785:96:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "selector",
                                  "type": "bytes4"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "onERC721Received",
                                      "referencedDeclaration": 5667,
                                      "type": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract BaseLock",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1494,
                                              "type": "type(contract BaseLock)",
                                              "value": "BaseLock"
                                            },
                                            "id": 437,
                                            "name": "Identifier",
                                            "src": "4896:8:1"
                                          },
                                          {
                                            "attributes": {
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 438,
                                            "name": "Literal",
                                            "src": "4905:1:1"
                                          }
                                        ],
                                        "id": 439,
                                        "name": "FunctionCall",
                                        "src": "4896:11:1"
                                      }
                                    ],
                                    "id": 440,
                                    "name": "MemberAccess",
                                    "src": "4896:28:1"
                                  }
                                ],
                                "id": 441,
                                "name": "MemberAccess",
                                "src": "4896:37:1"
                              }
                            ],
                            "id": 442,
                            "name": "BinaryOperation",
                            "src": "4785:148:1"
                          }
                        ],
                        "id": 443,
                        "name": "FunctionCall",
                        "src": "4753:190:1"
                      }
                    ],
                    "id": 444,
                    "name": "ExpressionStatement",
                    "src": "4753:190:1"
                  }
                ],
                "id": 445,
                "name": "Block",
                "src": "4743:207:1"
              }
            ],
            "id": 446,
            "name": "FunctionDefinition",
            "src": "4687:263:1"
          },
          {
            "attributes": {
              "functionSelector": "c3dcfd41",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "changeOracleOwner",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Modify the owner of an oracle.\n @param _newOracleOwner New owner.\n @param _oracleId The oracle whose owner to change."
                },
                "id": 447,
                "name": "StructuredDocumentation",
                "src": "5157:135:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_newOracleOwner",
                      "scope": 469,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 448,
                        "name": "ElementaryTypeName",
                        "src": "5324:7:1"
                      }
                    ],
                    "id": 449,
                    "name": "VariableDeclaration",
                    "src": "5324:23:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 469,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 450,
                        "name": "ElementaryTypeName",
                        "src": "5349:6:1"
                      }
                    ],
                    "id": 451,
                    "name": "VariableDeclaration",
                    "src": "5349:16:1"
                  }
                ],
                "id": 452,
                "name": "ParameterList",
                "src": "5323:43:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 456,
                "name": "ParameterList",
                "src": "5395:0:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1480,
                      "type": "modifier (uint64)",
                      "value": "_isOracle"
                    },
                    "id": 453,
                    "name": "Identifier",
                    "src": "5374:9:1"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 451,
                      "type": "uint64",
                      "value": "_oracleId"
                    },
                    "id": 454,
                    "name": "Identifier",
                    "src": "5384:9:1"
                  }
                ],
                "id": 455,
                "name": "ModifierInvocation",
                "src": "5374:20:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 385,
                                  "type": "mapping(uint64 => address)",
                                  "value": "oracleOwnersMap"
                                },
                                "id": 457,
                                "name": "Identifier",
                                "src": "5405:15:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 451,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 458,
                                "name": "Identifier",
                                "src": "5421:9:1"
                              }
                            ],
                            "id": 459,
                            "name": "IndexAccess",
                            "src": "5405:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 449,
                              "type": "address",
                              "value": "_newOracleOwner"
                            },
                            "id": 460,
                            "name": "Identifier",
                            "src": "5434:15:1"
                          }
                        ],
                        "id": 461,
                        "name": "Assignment",
                        "src": "5405:44:1"
                      }
                    ],
                    "id": 462,
                    "name": "ExpressionStatement",
                    "src": "5405:44:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 333,
                              "type": "function (address,uint64)",
                              "value": "OracleOwnerChanged"
                            },
                            "id": 463,
                            "name": "Identifier",
                            "src": "5464:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 449,
                              "type": "address",
                              "value": "_newOracleOwner"
                            },
                            "id": 464,
                            "name": "Identifier",
                            "src": "5483:15:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 451,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 465,
                            "name": "Identifier",
                            "src": "5500:9:1"
                          }
                        ],
                        "id": 466,
                        "name": "FunctionCall",
                        "src": "5464:46:1"
                      }
                    ],
                    "id": 467,
                    "name": "EmitStatement",
                    "src": "5459:51:1"
                  }
                ],
                "id": 468,
                "name": "Block",
                "src": "5395:122:1"
              }
            ],
            "id": 469,
            "name": "FunctionDefinition",
            "src": "5297:220:1"
          },
          {
            "attributes": {
              "functionSelector": "f59407b4",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "updateGracePeriodEnds",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Set the end time of the grace period.\n The first withdrawal can be done *only* during the grace period.\n The second withdrawal can be done after the end of the grace period and only if the first withdrawal was done.\n The intention of the grace period is to check which of users are active (\"alive\")."
                },
                "id": 470,
                "name": "StructuredDocumentation",
                "src": "5523:340:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 487,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 471,
                        "name": "ElementaryTypeName",
                        "src": "5899:6:1"
                      }
                    ],
                    "id": 472,
                    "name": "VariableDeclaration",
                    "src": "5899:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_time",
                      "scope": 487,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 473,
                        "name": "ElementaryTypeName",
                        "src": "5917:4:1"
                      }
                    ],
                    "id": 474,
                    "name": "VariableDeclaration",
                    "src": "5917:10:1"
                  }
                ],
                "id": 475,
                "name": "ParameterList",
                "src": "5898:30:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 479,
                "name": "ParameterList",
                "src": "5957:0:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1480,
                      "type": "modifier (uint64)",
                      "value": "_isOracle"
                    },
                    "id": 476,
                    "name": "Identifier",
                    "src": "5936:9:1"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 472,
                      "type": "uint64",
                      "value": "_oracleId"
                    },
                    "id": 477,
                    "name": "Identifier",
                    "src": "5946:9:1"
                  }
                ],
                "id": 478,
                "name": "ModifierInvocation",
                "src": "5936:20:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 389,
                                  "type": "mapping(uint64 => uint256)",
                                  "value": "gracePeriodEnds"
                                },
                                "id": 480,
                                "name": "Identifier",
                                "src": "5967:15:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 472,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 481,
                                "name": "Identifier",
                                "src": "5983:9:1"
                              }
                            ],
                            "id": 482,
                            "name": "IndexAccess",
                            "src": "5967:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 474,
                              "type": "uint256",
                              "value": "_time"
                            },
                            "id": 483,
                            "name": "Identifier",
                            "src": "5996:5:1"
                          }
                        ],
                        "id": 484,
                        "name": "Assignment",
                        "src": "5967:34:1"
                      }
                    ],
                    "id": 485,
                    "name": "ExpressionStatement",
                    "src": "5967:34:1"
                  }
                ],
                "id": 486,
                "name": "Block",
                "src": "5957:51:1"
              }
            ],
            "id": 487,
            "name": "FunctionDefinition",
            "src": "5868:140:1"
          },
          {
            "attributes": {
              "functionSelector": "2ef0ce78",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "donate",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Donate funds in an ERC-1155 token.\n First, the collateral token need to be approved to be spent by this contract from the address `_from`.\n It also mints a token (with a different ID), that counts donations in that token.\n @param _collateralContractAddress The collateral ERC-1155 contract address.\n @param _collateralTokenId The collateral ERC-1155 token ID.\n @param _oracleId The oracle ID to whose ecosystem to donate to.\n @param _amount The amount to donate.\n @param _from From whom to take the donation.\n @param _to On whose account the donation amount is assigned.\n @param _data Additional transaction data."
                },
                "id": 488,
                "name": "StructuredDocumentation",
                "src": "6014:704:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralContractAddress",
                      "scope": 557,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC1155",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "IERC1155",
                          "referencedDeclaration": 4654,
                          "type": "contract IERC1155"
                        },
                        "id": 489,
                        "name": "UserDefinedTypeName",
                        "src": "6748:8:1"
                      }
                    ],
                    "id": 490,
                    "name": "VariableDeclaration",
                    "src": "6748:35:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralTokenId",
                      "scope": 557,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 491,
                        "name": "ElementaryTypeName",
                        "src": "6793:7:1"
                      }
                    ],
                    "id": 492,
                    "name": "VariableDeclaration",
                    "src": "6793:26:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 557,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 493,
                        "name": "ElementaryTypeName",
                        "src": "6829:6:1"
                      }
                    ],
                    "id": 494,
                    "name": "VariableDeclaration",
                    "src": "6829:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_amount",
                      "scope": 557,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 495,
                        "name": "ElementaryTypeName",
                        "src": "6855:7:1"
                      }
                    ],
                    "id": 496,
                    "name": "VariableDeclaration",
                    "src": "6855:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_from",
                      "scope": 557,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 497,
                        "name": "ElementaryTypeName",
                        "src": "6880:7:1"
                      }
                    ],
                    "id": 498,
                    "name": "VariableDeclaration",
                    "src": "6880:13:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_to",
                      "scope": 557,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 499,
                        "name": "ElementaryTypeName",
                        "src": "6903:7:1"
                      }
                    ],
                    "id": 500,
                    "name": "VariableDeclaration",
                    "src": "6903:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 557,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 501,
                        "name": "ElementaryTypeName",
                        "src": "6924:5:1"
                      }
                    ],
                    "id": 502,
                    "name": "VariableDeclaration",
                    "src": "6924:20:1"
                  }
                ],
                "id": 503,
                "name": "ParameterList",
                "src": "6738:207:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 504,
                "name": "ParameterList",
                "src": "6957:0:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        506
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_donatedPerOracleCollateralTokenId",
                          "scope": 556,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 505,
                            "name": "ElementaryTypeName",
                            "src": "6967:4:1"
                          }
                        ],
                        "id": 506,
                        "name": "VariableDeclaration",
                        "src": "6967:39:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1071,
                              "type": "function (contract IERC1155,uint256,uint64) pure returns (uint256)",
                              "value": "_collateralDonatedPerOracleTokenId"
                            },
                            "id": 507,
                            "name": "Identifier",
                            "src": "7009:34:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 490,
                              "type": "contract IERC1155",
                              "value": "_collateralContractAddress"
                            },
                            "id": 508,
                            "name": "Identifier",
                            "src": "7044:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 492,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 509,
                            "name": "Identifier",
                            "src": "7072:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 494,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 510,
                            "name": "Identifier",
                            "src": "7092:9:1"
                          }
                        ],
                        "id": 511,
                        "name": "FunctionCall",
                        "src": "7009:93:1"
                      }
                    ],
                    "id": 512,
                    "name": "VariableDeclarationStatement",
                    "src": "6967:135:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                3411
                              ],
                              "referencedDeclaration": 3411,
                              "type": "function (address,uint256,uint256,bytes memory)",
                              "value": "_mint"
                            },
                            "id": 513,
                            "name": "Identifier",
                            "src": "7112:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 500,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 514,
                            "name": "Identifier",
                            "src": "7118:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 506,
                              "type": "uint256",
                              "value": "_donatedPerOracleCollateralTokenId"
                            },
                            "id": 515,
                            "name": "Identifier",
                            "src": "7123:34:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 496,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 516,
                            "name": "Identifier",
                            "src": "7159:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 502,
                              "type": "bytes calldata",
                              "value": "_data"
                            },
                            "id": 517,
                            "name": "Identifier",
                            "src": "7168:5:1"
                          }
                        ],
                        "id": 518,
                        "name": "FunctionCall",
                        "src": "7112:62:1"
                      }
                    ],
                    "id": 519,
                    "name": "ExpressionStatement",
                    "src": "7112:62:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        521
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_donatedCollateralTokenId",
                          "scope": 556,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 520,
                            "name": "ElementaryTypeName",
                            "src": "7184:4:1"
                          }
                        ],
                        "id": 521,
                        "name": "VariableDeclaration",
                        "src": "7184:30:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1093,
                              "type": "function (contract IERC1155,uint256) pure returns (uint256)",
                              "value": "_collateralDonatedTokenId"
                            },
                            "id": 522,
                            "name": "Identifier",
                            "src": "7217:25:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 490,
                              "type": "contract IERC1155",
                              "value": "_collateralContractAddress"
                            },
                            "id": 523,
                            "name": "Identifier",
                            "src": "7243:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 492,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 524,
                            "name": "Identifier",
                            "src": "7271:18:1"
                          }
                        ],
                        "id": 525,
                        "name": "FunctionCall",
                        "src": "7217:73:1"
                      }
                    ],
                    "id": 526,
                    "name": "VariableDeclarationStatement",
                    "src": "7184:106:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                3411
                              ],
                              "referencedDeclaration": 3411,
                              "type": "function (address,uint256,uint256,bytes memory)",
                              "value": "_mint"
                            },
                            "id": 527,
                            "name": "Identifier",
                            "src": "7300:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 500,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 528,
                            "name": "Identifier",
                            "src": "7306:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 521,
                              "type": "uint256",
                              "value": "_donatedCollateralTokenId"
                            },
                            "id": 529,
                            "name": "Identifier",
                            "src": "7311:25:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 496,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 530,
                            "name": "Identifier",
                            "src": "7338:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 502,
                              "type": "bytes calldata",
                              "value": "_data"
                            },
                            "id": 531,
                            "name": "Identifier",
                            "src": "7347:5:1"
                          }
                        ],
                        "id": 532,
                        "name": "FunctionCall",
                        "src": "7300:53:1"
                      }
                    ],
                    "id": 533,
                    "name": "ExpressionStatement",
                    "src": "7300:53:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 359,
                              "type": "function (contract IERC1155,uint256,address,uint256,address,bytes memory)",
                              "value": "DonateCollateral"
                            },
                            "id": 534,
                            "name": "Identifier",
                            "src": "7368:16:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 490,
                              "type": "contract IERC1155",
                              "value": "_collateralContractAddress"
                            },
                            "id": 535,
                            "name": "Identifier",
                            "src": "7385:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 492,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 536,
                            "name": "Identifier",
                            "src": "7413:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 498,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 537,
                            "name": "Identifier",
                            "src": "7433:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 496,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 538,
                            "name": "Identifier",
                            "src": "7440:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 500,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 539,
                            "name": "Identifier",
                            "src": "7449:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 502,
                              "type": "bytes calldata",
                              "value": "_data"
                            },
                            "id": 540,
                            "name": "Identifier",
                            "src": "7454:5:1"
                          }
                        ],
                        "id": 541,
                        "name": "FunctionCall",
                        "src": "7368:92:1"
                      }
                    ],
                    "id": 542,
                    "name": "EmitStatement",
                    "src": "7363:97:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "safeTransferFrom",
                              "referencedDeclaration": 4637,
                              "type": "function (address,address,uint256,uint256,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 490,
                                  "type": "contract IERC1155",
                                  "value": "_collateralContractAddress"
                                },
                                "id": 543,
                                "name": "Identifier",
                                "src": "7470:26:1"
                              }
                            ],
                            "id": 545,
                            "name": "MemberAccess",
                            "src": "7470:43:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 498,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 546,
                            "name": "Identifier",
                            "src": "7514:5:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_BaseLock_$1494",
                                      "typeString": "contract BaseLock"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 547,
                                    "name": "ElementaryTypeName",
                                    "src": "7521:7:1"
                                  }
                                ],
                                "id": 548,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7521:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967268,
                                  "type": "contract BaseLock",
                                  "value": "this"
                                },
                                "id": 549,
                                "name": "Identifier",
                                "src": "7529:4:1"
                              }
                            ],
                            "id": 550,
                            "name": "FunctionCall",
                            "src": "7521:13:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 492,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 551,
                            "name": "Identifier",
                            "src": "7536:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 496,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 552,
                            "name": "Identifier",
                            "src": "7556:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 502,
                              "type": "bytes calldata",
                              "value": "_data"
                            },
                            "id": 553,
                            "name": "Identifier",
                            "src": "7565:5:1"
                          }
                        ],
                        "id": 554,
                        "name": "FunctionCall",
                        "src": "7470:101:1"
                      }
                    ],
                    "id": 555,
                    "name": "ExpressionStatement",
                    "src": "7470:101:1"
                  }
                ],
                "id": 556,
                "name": "Block",
                "src": "6957:655:1"
              }
            ],
            "id": 557,
            "name": "FunctionDefinition",
            "src": "6723:889:1"
          },
          {
            "attributes": {
              "functionSelector": "05096f25",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "gatherDeFiProfit",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "Gather a DeFi profit of a token previous donated to this contact.\n @param _collateralContractAddress The collateral ERC-1155 contract address.\n @param _collateralTokenId The collateral ERC-1155 token ID.\n @param _oracleId The oracle ID to whose ecosystem to donate to.\n @param _data Additional transaction data."
                },
                "id": 558,
                "name": "StructuredDocumentation",
                "src": "7618:343:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralContractAddress",
                      "scope": 641,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC1155",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "IERC1155",
                          "referencedDeclaration": 4654,
                          "type": "contract IERC1155"
                        },
                        "id": 559,
                        "name": "UserDefinedTypeName",
                        "src": "8001:8:1"
                      }
                    ],
                    "id": 560,
                    "name": "VariableDeclaration",
                    "src": "8001:35:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralTokenId",
                      "scope": 641,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 561,
                        "name": "ElementaryTypeName",
                        "src": "8046:7:1"
                      }
                    ],
                    "id": 562,
                    "name": "VariableDeclaration",
                    "src": "8046:26:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 641,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 563,
                        "name": "ElementaryTypeName",
                        "src": "8082:6:1"
                      }
                    ],
                    "id": 564,
                    "name": "VariableDeclaration",
                    "src": "8082:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 641,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 565,
                        "name": "ElementaryTypeName",
                        "src": "8108:5:1"
                      }
                    ],
                    "id": 566,
                    "name": "VariableDeclaration",
                    "src": "8108:20:1"
                  }
                ],
                "id": 567,
                "name": "ParameterList",
                "src": "7991:138:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 568,
                "name": "ParameterList",
                "src": "8143:0:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        570
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_donatedPerOracleCollateralTokenId",
                          "scope": 640,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 569,
                            "name": "ElementaryTypeName",
                            "src": "8153:4:1"
                          }
                        ],
                        "id": 570,
                        "name": "VariableDeclaration",
                        "src": "8153:39:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1071,
                              "type": "function (contract IERC1155,uint256,uint64) pure returns (uint256)",
                              "value": "_collateralDonatedPerOracleTokenId"
                            },
                            "id": 571,
                            "name": "Identifier",
                            "src": "8195:34:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 560,
                              "type": "contract IERC1155",
                              "value": "_collateralContractAddress"
                            },
                            "id": 572,
                            "name": "Identifier",
                            "src": "8230:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 562,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 573,
                            "name": "Identifier",
                            "src": "8258:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 564,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 574,
                            "name": "Identifier",
                            "src": "8278:9:1"
                          }
                        ],
                        "id": 575,
                        "name": "FunctionCall",
                        "src": "8195:93:1"
                      }
                    ],
                    "id": 576,
                    "name": "VariableDeclarationStatement",
                    "src": "8153:135:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        578
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_donatedCollateralTokenId",
                          "scope": 640,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 577,
                            "name": "ElementaryTypeName",
                            "src": "8298:4:1"
                          }
                        ],
                        "id": 578,
                        "name": "VariableDeclaration",
                        "src": "8298:30:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1093,
                              "type": "function (contract IERC1155,uint256) pure returns (uint256)",
                              "value": "_collateralDonatedTokenId"
                            },
                            "id": 579,
                            "name": "Identifier",
                            "src": "8331:25:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 560,
                              "type": "contract IERC1155",
                              "value": "_collateralContractAddress"
                            },
                            "id": 580,
                            "name": "Identifier",
                            "src": "8357:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 562,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 581,
                            "name": "Identifier",
                            "src": "8385:18:1"
                          }
                        ],
                        "id": 582,
                        "name": "FunctionCall",
                        "src": "8331:73:1"
                      }
                    ],
                    "id": 583,
                    "name": "VariableDeclarationStatement",
                    "src": "8298:106:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        585
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_difference",
                          "scope": 640,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 584,
                            "name": "ElementaryTypeName",
                            "src": "8476:7:1"
                          }
                        ],
                        "id": 585,
                        "name": "VariableDeclaration",
                        "src": "8476:19:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sub",
                              "referencedDeclaration": 4303,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "balanceOf",
                                      "referencedDeclaration": 4592,
                                      "type": "function (address,uint256) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 560,
                                          "type": "contract IERC1155",
                                          "value": "_collateralContractAddress"
                                        },
                                        "id": 586,
                                        "name": "Identifier",
                                        "src": "8510:26:1"
                                      }
                                    ],
                                    "id": 587,
                                    "name": "MemberAccess",
                                    "src": "8510:36:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                                              "typeString": "contract BaseLock"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "address"
                                            },
                                            "id": 588,
                                            "name": "ElementaryTypeName",
                                            "src": "8547:7:1"
                                          }
                                        ],
                                        "id": 589,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "8547:7:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4294967268,
                                          "type": "contract BaseLock",
                                          "value": "this"
                                        },
                                        "id": 590,
                                        "name": "Identifier",
                                        "src": "8555:4:1"
                                      }
                                    ],
                                    "id": 591,
                                    "name": "FunctionCall",
                                    "src": "8547:13:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 562,
                                      "type": "uint256",
                                      "value": "_collateralTokenId"
                                    },
                                    "id": 592,
                                    "name": "Identifier",
                                    "src": "8562:18:1"
                                  }
                                ],
                                "id": 593,
                                "name": "FunctionCall",
                                "src": "8510:71:1"
                              }
                            ],
                            "id": 594,
                            "name": "MemberAccess",
                            "src": "8510:75:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2400,
                                  "type": "function (address,uint256) view returns (uint256)",
                                  "value": "balanceOf"
                                },
                                "id": 595,
                                "name": "Identifier",
                                "src": "8603:9:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_BaseLock_$1494",
                                          "typeString": "contract BaseLock"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 596,
                                        "name": "ElementaryTypeName",
                                        "src": "8613:7:1"
                                      }
                                    ],
                                    "id": 597,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "8613:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967268,
                                      "type": "contract BaseLock",
                                      "value": "this"
                                    },
                                    "id": 598,
                                    "name": "Identifier",
                                    "src": "8621:4:1"
                                  }
                                ],
                                "id": 599,
                                "name": "FunctionCall",
                                "src": "8613:13:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 578,
                                  "type": "uint256",
                                  "value": "_donatedCollateralTokenId"
                                },
                                "id": 600,
                                "name": "Identifier",
                                "src": "8628:25:1"
                              }
                            ],
                            "id": 601,
                            "name": "FunctionCall",
                            "src": "8603:51:1"
                          }
                        ],
                        "id": 602,
                        "name": "FunctionCall",
                        "src": "8510:145:1"
                      }
                    ],
                    "id": 603,
                    "name": "VariableDeclarationStatement",
                    "src": "8476:179:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        605
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_amount",
                          "scope": 640,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 604,
                            "name": "ElementaryTypeName",
                            "src": "8665:7:1"
                          }
                        ],
                        "id": 605,
                        "name": "VariableDeclaration",
                        "src": "8665:15:1"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "/",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "*",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 585,
                                  "type": "uint256",
                                  "value": "_difference"
                                },
                                "id": 606,
                                "name": "Identifier",
                                "src": "8733:11:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2400,
                                      "type": "function (address,uint256) view returns (uint256)",
                                      "value": "balanceOf"
                                    },
                                    "id": 607,
                                    "name": "Identifier",
                                    "src": "8759:9:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_BaseLock_$1494",
                                              "typeString": "contract BaseLock"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(address)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "address"
                                            },
                                            "id": 608,
                                            "name": "ElementaryTypeName",
                                            "src": "8769:7:1"
                                          }
                                        ],
                                        "id": 609,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "8769:7:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4294967268,
                                          "type": "contract BaseLock",
                                          "value": "this"
                                        },
                                        "id": 610,
                                        "name": "Identifier",
                                        "src": "8777:4:1"
                                      }
                                    ],
                                    "id": 611,
                                    "name": "FunctionCall",
                                    "src": "8769:13:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 570,
                                      "type": "uint256",
                                      "value": "_donatedPerOracleCollateralTokenId"
                                    },
                                    "id": 612,
                                    "name": "Identifier",
                                    "src": "8784:34:1"
                                  }
                                ],
                                "id": 613,
                                "name": "FunctionCall",
                                "src": "8759:60:1"
                              }
                            ],
                            "id": 614,
                            "name": "BinaryOperation",
                            "src": "8733:86:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2400,
                                  "type": "function (address,uint256) view returns (uint256)",
                                  "value": "balanceOf"
                                },
                                "id": 615,
                                "name": "Identifier",
                                "src": "8834:9:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_BaseLock_$1494",
                                          "typeString": "contract BaseLock"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 616,
                                        "name": "ElementaryTypeName",
                                        "src": "8844:7:1"
                                      }
                                    ],
                                    "id": 617,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "8844:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967268,
                                      "type": "contract BaseLock",
                                      "value": "this"
                                    },
                                    "id": 618,
                                    "name": "Identifier",
                                    "src": "8852:4:1"
                                  }
                                ],
                                "id": 619,
                                "name": "FunctionCall",
                                "src": "8844:13:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 578,
                                  "type": "uint256",
                                  "value": "_donatedCollateralTokenId"
                                },
                                "id": 620,
                                "name": "Identifier",
                                "src": "8859:25:1"
                              }
                            ],
                            "id": 621,
                            "name": "FunctionCall",
                            "src": "8834:51:1"
                          }
                        ],
                        "id": 622,
                        "name": "BinaryOperation",
                        "src": "8733:152:1"
                      }
                    ],
                    "id": 623,
                    "name": "VariableDeclarationStatement",
                    "src": "8665:220:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 557,
                              "type": "function (contract IERC1155,uint256,uint64,uint256,address,address,bytes calldata)",
                              "value": "donate"
                            },
                            "id": 624,
                            "name": "Identifier",
                            "src": "8947:6:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 560,
                              "type": "contract IERC1155",
                              "value": "_collateralContractAddress"
                            },
                            "id": 625,
                            "name": "Identifier",
                            "src": "8967:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 562,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 626,
                            "name": "Identifier",
                            "src": "9007:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 564,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 627,
                            "name": "Identifier",
                            "src": "9039:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 605,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 628,
                            "name": "Identifier",
                            "src": "9062:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_BaseLock_$1494",
                                      "typeString": "contract BaseLock"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 629,
                                    "name": "ElementaryTypeName",
                                    "src": "9083:7:1"
                                  }
                                ],
                                "id": 630,
                                "name": "ElementaryTypeNameExpression",
                                "src": "9083:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967268,
                                  "type": "contract BaseLock",
                                  "value": "this"
                                },
                                "id": 631,
                                "name": "Identifier",
                                "src": "9091:4:1"
                              }
                            ],
                            "id": 632,
                            "name": "FunctionCall",
                            "src": "9083:13:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_BaseLock_$1494",
                                      "typeString": "contract BaseLock"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 633,
                                    "name": "ElementaryTypeName",
                                    "src": "9110:7:1"
                                  }
                                ],
                                "id": 634,
                                "name": "ElementaryTypeNameExpression",
                                "src": "9110:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967268,
                                  "type": "contract BaseLock",
                                  "value": "this"
                                },
                                "id": 635,
                                "name": "Identifier",
                                "src": "9118:4:1"
                              }
                            ],
                            "id": 636,
                            "name": "FunctionCall",
                            "src": "9110:13:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 566,
                              "type": "bytes calldata",
                              "value": "_data"
                            },
                            "id": 637,
                            "name": "Identifier",
                            "src": "9137:5:1"
                          }
                        ],
                        "id": 638,
                        "name": "FunctionCall",
                        "src": "8947:196:1"
                      }
                    ],
                    "id": 639,
                    "name": "ExpressionStatement",
                    "src": "8947:196:1"
                  }
                ],
                "id": 640,
                "name": "Block",
                "src": "8143:1007:1"
              }
            ],
            "id": 641,
            "name": "FunctionDefinition",
            "src": "7966:1184:1"
          },
          {
            "attributes": {
              "functionSelector": "ebf38ffb",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "collateralOwing",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "Calculate how much collateral is owed to a user.\n @param _collateralContractAddress The ERC-1155 collateral token contract.\n @param _collateralTokenId The ERC-1155 collateral token ID.\n @param _oracleId From which oracle's \"account\" to withdraw.\n @param _condition The condition (the original receiver of a conditional token).\n @param _user The user to which we may owe."
                },
                "id": 642,
                "name": "StructuredDocumentation",
                "src": "9156:409:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralContractAddress",
                      "scope": 677,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC1155",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "IERC1155",
                          "referencedDeclaration": 4654,
                          "type": "contract IERC1155"
                        },
                        "id": 643,
                        "name": "UserDefinedTypeName",
                        "src": "9604:8:1"
                      }
                    ],
                    "id": 644,
                    "name": "VariableDeclaration",
                    "src": "9604:35:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralTokenId",
                      "scope": 677,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 645,
                        "name": "ElementaryTypeName",
                        "src": "9649:7:1"
                      }
                    ],
                    "id": 646,
                    "name": "VariableDeclaration",
                    "src": "9649:26:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 677,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 647,
                        "name": "ElementaryTypeName",
                        "src": "9685:6:1"
                      }
                    ],
                    "id": 648,
                    "name": "VariableDeclaration",
                    "src": "9685:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 677,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 649,
                        "name": "ElementaryTypeName",
                        "src": "9711:7:1"
                      }
                    ],
                    "id": 650,
                    "name": "VariableDeclaration",
                    "src": "9711:18:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_user",
                      "scope": 677,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 651,
                        "name": "ElementaryTypeName",
                        "src": "9739:7:1"
                      }
                    ],
                    "id": 652,
                    "name": "VariableDeclaration",
                    "src": "9739:13:1"
                  }
                ],
                "id": 653,
                "name": "ParameterList",
                "src": "9594:164:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 677,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 654,
                        "name": "ElementaryTypeName",
                        "src": "9781:7:1"
                      }
                    ],
                    "id": 655,
                    "name": "VariableDeclaration",
                    "src": "9781:7:1"
                  }
                ],
                "id": 656,
                "name": "ParameterList",
                "src": "9780:9:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        658
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_inFirstRound",
                          "scope": 676,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 657,
                            "name": "ElementaryTypeName",
                            "src": "9800:4:1"
                          }
                        ],
                        "id": 658,
                        "name": "VariableDeclaration",
                        "src": "9800:18:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1449,
                              "type": "function (uint64) view returns (bool)",
                              "value": "_isInFirstRound"
                            },
                            "id": 659,
                            "name": "Identifier",
                            "src": "9821:15:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 648,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 660,
                            "name": "Identifier",
                            "src": "9837:9:1"
                          }
                        ],
                        "id": 661,
                        "name": "FunctionCall",
                        "src": "9821:26:1"
                      }
                    ],
                    "id": 662,
                    "name": "VariableDeclarationStatement",
                    "src": "9800:47:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        null,
                        664
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_donated",
                          "scope": 676,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 663,
                            "name": "ElementaryTypeName",
                            "src": "9860:7:1"
                          }
                        ],
                        "id": 664,
                        "name": "VariableDeclaration",
                        "src": "9860:16:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(uint256,uint256)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1434,
                              "type": "function (contract IERC1155,uint256,uint64,uint256,address,bool) view returns (uint256,uint256)",
                              "value": "_collateralOwingBase"
                            },
                            "id": 665,
                            "name": "Identifier",
                            "src": "9892:20:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 644,
                              "type": "contract IERC1155",
                              "value": "_collateralContractAddress"
                            },
                            "id": 666,
                            "name": "Identifier",
                            "src": "9913:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 646,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 667,
                            "name": "Identifier",
                            "src": "9941:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 648,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 668,
                            "name": "Identifier",
                            "src": "9961:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 650,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 669,
                            "name": "Identifier",
                            "src": "9972:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 652,
                              "type": "address",
                              "value": "_user"
                            },
                            "id": 670,
                            "name": "Identifier",
                            "src": "9984:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 658,
                              "type": "bool",
                              "value": "_inFirstRound"
                            },
                            "id": 671,
                            "name": "Identifier",
                            "src": "9991:13:1"
                          }
                        ],
                        "id": 672,
                        "name": "FunctionCall",
                        "src": "9892:113:1"
                      }
                    ],
                    "id": 673,
                    "name": "VariableDeclarationStatement",
                    "src": "9857:148:1"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 656
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 664,
                          "type": "uint256",
                          "value": "_donated"
                        },
                        "id": 674,
                        "name": "Identifier",
                        "src": "10022:8:1"
                      }
                    ],
                    "id": 675,
                    "name": "Return",
                    "src": "10015:15:1"
                  }
                ],
                "id": 676,
                "name": "Block",
                "src": "9790:247:1"
              }
            ],
            "id": 677,
            "name": "FunctionDefinition",
            "src": "9570:467:1"
          },
          {
            "attributes": {
              "functionSelector": "922aac9c",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "withdrawCollateral",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "Transfer to `msg.sender` the collateral ERC-1155 token.\n The amount transferred is proportional to the score of `_condition` by the oracle.\n @param _collateralContractAddress The ERC-1155 collateral token contract.\n @param _collateralTokenId The ERC-1155 collateral token ID.\n @param _oracleId From which oracle's \"account\" to withdraw.\n @param _condition The condition.\n @param _data Additional data.\n Notes:\n - It is made impossible to withdraw somebody's other collateral, as otherwise we can't mark non-active\n   accounts in grace period.\n - We can't transfer to somebody other than `msg.sender` because anybody can transfer\n   (needed for multi-level transfers).\n - After this function is called, it becomes impossible to transfer the corresponding conditional token\n   of `msg.sender` (to prevent its repeated withdrawal)."
                },
                "id": 678,
                "name": "StructuredDocumentation",
                "src": "10043:939:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralContractAddress",
                      "scope": 799,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC1155",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "IERC1155",
                          "referencedDeclaration": 4654,
                          "type": "contract IERC1155"
                        },
                        "id": 679,
                        "name": "UserDefinedTypeName",
                        "src": "11024:8:1"
                      }
                    ],
                    "id": 680,
                    "name": "VariableDeclaration",
                    "src": "11024:35:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralTokenId",
                      "scope": 799,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 681,
                        "name": "ElementaryTypeName",
                        "src": "11069:7:1"
                      }
                    ],
                    "id": 682,
                    "name": "VariableDeclaration",
                    "src": "11069:26:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 799,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 683,
                        "name": "ElementaryTypeName",
                        "src": "11105:6:1"
                      }
                    ],
                    "id": 684,
                    "name": "VariableDeclaration",
                    "src": "11105:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 799,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 685,
                        "name": "ElementaryTypeName",
                        "src": "11131:7:1"
                      }
                    ],
                    "id": 686,
                    "name": "VariableDeclaration",
                    "src": "11131:18:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 799,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 687,
                        "name": "ElementaryTypeName",
                        "src": "11159:5:1"
                      }
                    ],
                    "id": 688,
                    "name": "VariableDeclaration",
                    "src": "11159:20:1"
                  }
                ],
                "id": 689,
                "name": "ParameterList",
                "src": "11014:166:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 690,
                "name": "ParameterList",
                "src": "11194:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_d87d05e52726880c4bb1003e00ed00463d214b7b936d9983b909b11b18ccd468",
                                  "typeString": "literal_string \"too early\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 691,
                            "name": "Identifier",
                            "src": "11204:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 898,
                                  "type": "function (uint64) view returns (bool)",
                                  "value": "isOracleFinished"
                                },
                                "id": 692,
                                "name": "Identifier",
                                "src": "11212:16:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 684,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 693,
                                "name": "Identifier",
                                "src": "11229:9:1"
                              }
                            ],
                            "id": 694,
                            "name": "FunctionCall",
                            "src": "11212:27:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "746f6f206561726c79",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"too early\"",
                              "value": "too early"
                            },
                            "id": 695,
                            "name": "Literal",
                            "src": "11241:11:1"
                          }
                        ],
                        "id": 696,
                        "name": "FunctionCall",
                        "src": "11204:49:1"
                      }
                    ],
                    "id": 697,
                    "name": "ExpressionStatement",
                    "src": "11204:49:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        699
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_inFirstRound",
                          "scope": 798,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bool",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bool",
                              "type": "bool"
                            },
                            "id": 698,
                            "name": "ElementaryTypeName",
                            "src": "11327:4:1"
                          }
                        ],
                        "id": 699,
                        "name": "VariableDeclaration",
                        "src": "11327:18:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1449,
                              "type": "function (uint64) view returns (bool)",
                              "value": "_isInFirstRound"
                            },
                            "id": 700,
                            "name": "Identifier",
                            "src": "11348:15:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 684,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 701,
                            "name": "Identifier",
                            "src": "11364:9:1"
                          }
                        ],
                        "id": 702,
                        "name": "FunctionCall",
                        "src": "11348:26:1"
                      }
                    ],
                    "id": 703,
                    "name": "VariableDeclarationStatement",
                    "src": "11327:47:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(uint256 => bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 395,
                                      "type": "mapping(address => mapping(uint256 => bool))",
                                      "value": "userUsedRedeemMap"
                                    },
                                    "id": 704,
                                    "name": "Identifier",
                                    "src": "11384:17:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4294967281,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 705,
                                        "name": "Identifier",
                                        "src": "11402:3:1"
                                      }
                                    ],
                                    "id": 706,
                                    "name": "MemberAccess",
                                    "src": "11402:10:1"
                                  }
                                ],
                                "id": 708,
                                "name": "IndexAccess",
                                "src": "11384:29:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 686,
                                  "type": "uint256",
                                  "value": "_condition"
                                },
                                "id": 707,
                                "name": "Identifier",
                                "src": "11414:10:1"
                              }
                            ],
                            "id": 709,
                            "name": "IndexAccess",
                            "src": "11384:41:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 710,
                            "name": "Literal",
                            "src": "11428:4:1"
                          }
                        ],
                        "id": 711,
                        "name": "Assignment",
                        "src": "11384:48:1"
                      }
                    ],
                    "id": 712,
                    "name": "ExpressionStatement",
                    "src": "11384:48:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        714,
                        716
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_donatedPerOracleCollateralTokenId",
                          "scope": 798,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 713,
                            "name": "ElementaryTypeName",
                            "src": "11574:4:1"
                          }
                        ],
                        "id": 714,
                        "name": "VariableDeclaration",
                        "src": "11574:39:1"
                      },
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_owingDonated",
                          "scope": 798,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 715,
                            "name": "ElementaryTypeName",
                            "src": "11615:7:1"
                          }
                        ],
                        "id": 716,
                        "name": "VariableDeclaration",
                        "src": "11615:21:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple(uint256,uint256)",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1434,
                              "type": "function (contract IERC1155,uint256,uint64,uint256,address,bool) view returns (uint256,uint256)",
                              "value": "_collateralOwingBase"
                            },
                            "id": 717,
                            "name": "Identifier",
                            "src": "11652:20:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 680,
                              "type": "contract IERC1155",
                              "value": "_collateralContractAddress"
                            },
                            "id": 718,
                            "name": "Identifier",
                            "src": "11673:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 682,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 719,
                            "name": "Identifier",
                            "src": "11701:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 684,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 720,
                            "name": "Identifier",
                            "src": "11721:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 686,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 721,
                            "name": "Identifier",
                            "src": "11732:10:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 722,
                                "name": "Identifier",
                                "src": "11744:3:1"
                              }
                            ],
                            "id": 723,
                            "name": "MemberAccess",
                            "src": "11744:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 699,
                              "type": "bool",
                              "value": "_inFirstRound"
                            },
                            "id": 724,
                            "name": "Identifier",
                            "src": "11756:13:1"
                          }
                        ],
                        "id": 725,
                        "name": "FunctionCall",
                        "src": "11652:118:1"
                      }
                    ],
                    "id": 726,
                    "name": "VariableDeclarationStatement",
                    "src": "11573:197:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 716,
                              "type": "uint256",
                              "value": "_owingDonated"
                            },
                            "id": 727,
                            "name": "Identifier",
                            "src": "11986:13:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 728,
                            "name": "Literal",
                            "src": "12003:1:1"
                          }
                        ],
                        "id": 729,
                        "name": "BinaryOperation",
                        "src": "11986:18:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                731
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "_newTotal",
                                  "scope": 758,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 730,
                                    "name": "ElementaryTypeName",
                                    "src": "12020:7:1"
                                  }
                                ],
                                "id": 731,
                                "name": "VariableDeclaration",
                                "src": "12020:17:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3356,
                                      "type": "function (uint256) view returns (uint256)",
                                      "value": "totalSupply"
                                    },
                                    "id": 732,
                                    "name": "Identifier",
                                    "src": "12040:11:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 714,
                                      "type": "uint256",
                                      "value": "_donatedPerOracleCollateralTokenId"
                                    },
                                    "id": 733,
                                    "name": "Identifier",
                                    "src": "12052:34:1"
                                  }
                                ],
                                "id": 734,
                                "name": "FunctionCall",
                                "src": "12040:47:1"
                              }
                            ],
                            "id": 735,
                            "name": "VariableDeclarationStatement",
                            "src": "12020:67:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 699,
                                  "type": "bool",
                                  "value": "_inFirstRound"
                                },
                                "id": 736,
                                "name": "Identifier",
                                "src": "12105:13:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "mapping(address => uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 401,
                                                      "type": "mapping(uint256 => mapping(address => uint256))",
                                                      "value": "lastCollateralBalanceFirstRoundMap"
                                                    },
                                                    "id": 737,
                                                    "name": "Identifier",
                                                    "src": "12138:34:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 714,
                                                      "type": "uint256",
                                                      "value": "_donatedPerOracleCollateralTokenId"
                                                    },
                                                    "id": 738,
                                                    "name": "Identifier",
                                                    "src": "12173:34:1"
                                                  }
                                                ],
                                                "id": 741,
                                                "name": "IndexAccess",
                                                "src": "12138:70:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "sender",
                                                  "type": "address payable"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 4294967281,
                                                      "type": "msg",
                                                      "value": "msg"
                                                    },
                                                    "id": 739,
                                                    "name": "Identifier",
                                                    "src": "12209:3:1"
                                                  }
                                                ],
                                                "id": 740,
                                                "name": "MemberAccess",
                                                "src": "12209:10:1"
                                              }
                                            ],
                                            "id": 742,
                                            "name": "IndexAccess",
                                            "src": "12138:82:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 731,
                                              "type": "uint256",
                                              "value": "_newTotal"
                                            },
                                            "id": 743,
                                            "name": "Identifier",
                                            "src": "12223:9:1"
                                          }
                                        ],
                                        "id": 744,
                                        "name": "Assignment",
                                        "src": "12138:94:1"
                                      }
                                    ],
                                    "id": 745,
                                    "name": "ExpressionStatement",
                                    "src": "12138:94:1"
                                  }
                                ],
                                "id": 746,
                                "name": "Block",
                                "src": "12120:127:1"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "mapping(address => uint256)"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 407,
                                                      "type": "mapping(uint256 => mapping(address => uint256))",
                                                      "value": "lastCollateralBalanceSecondRoundMap"
                                                    },
                                                    "id": 747,
                                                    "name": "Identifier",
                                                    "src": "12271:35:1"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 714,
                                                      "type": "uint256",
                                                      "value": "_donatedPerOracleCollateralTokenId"
                                                    },
                                                    "id": 748,
                                                    "name": "Identifier",
                                                    "src": "12307:34:1"
                                                  }
                                                ],
                                                "id": 751,
                                                "name": "IndexAccess",
                                                "src": "12271:71:1"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "sender",
                                                  "type": "address payable"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 4294967281,
                                                      "type": "msg",
                                                      "value": "msg"
                                                    },
                                                    "id": 749,
                                                    "name": "Identifier",
                                                    "src": "12343:3:1"
                                                  }
                                                ],
                                                "id": 750,
                                                "name": "MemberAccess",
                                                "src": "12343:10:1"
                                              }
                                            ],
                                            "id": 752,
                                            "name": "IndexAccess",
                                            "src": "12271:83:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 731,
                                              "type": "uint256",
                                              "value": "_newTotal"
                                            },
                                            "id": 753,
                                            "name": "Identifier",
                                            "src": "12357:9:1"
                                          }
                                        ],
                                        "id": 754,
                                        "name": "Assignment",
                                        "src": "12271:95:1"
                                      }
                                    ],
                                    "id": 755,
                                    "name": "ExpressionStatement",
                                    "src": "12271:95:1"
                                  }
                                ],
                                "id": 756,
                                "name": "Block",
                                "src": "12253:128:1"
                              }
                            ],
                            "id": 757,
                            "name": "IfStatement",
                            "src": "12101:280:1"
                          }
                        ],
                        "id": 758,
                        "name": "Block",
                        "src": "12006:385:1"
                      }
                    ],
                    "id": 759,
                    "name": "IfStatement",
                    "src": "11982:409:1"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!",
                          "prefix": true,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 699,
                              "type": "bool",
                              "value": "_inFirstRound"
                            },
                            "id": 760,
                            "name": "Identifier",
                            "src": "12405:13:1"
                          }
                        ],
                        "id": 761,
                        "name": "UnaryOperation",
                        "src": "12404:14:1"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 412,
                                          "type": "mapping(uint64 => uint256)",
                                          "value": "usersWithdrewInFirstRound"
                                        },
                                        "id": 762,
                                        "name": "Identifier",
                                        "src": "12434:25:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 684,
                                          "type": "uint64",
                                          "value": "_oracleId"
                                        },
                                        "id": 763,
                                        "name": "Identifier",
                                        "src": "12460:9:1"
                                      }
                                    ],
                                    "id": 764,
                                    "name": "IndexAccess",
                                    "src": "12434:36:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "add",
                                          "referencedDeclaration": 4286,
                                          "type": "function (uint256,uint256) pure returns (uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 412,
                                                  "type": "mapping(uint64 => uint256)",
                                                  "value": "usersWithdrewInFirstRound"
                                                },
                                                "id": 765,
                                                "name": "Identifier",
                                                "src": "12473:25:1"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 684,
                                                  "type": "uint64",
                                                  "value": "_oracleId"
                                                },
                                                "id": 766,
                                                "name": "Identifier",
                                                "src": "12499:9:1"
                                              }
                                            ],
                                            "id": 767,
                                            "name": "IndexAccess",
                                            "src": "12473:36:1"
                                          }
                                        ],
                                        "id": 768,
                                        "name": "MemberAccess",
                                        "src": "12473:40:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 716,
                                          "type": "uint256",
                                          "value": "_owingDonated"
                                        },
                                        "id": 769,
                                        "name": "Identifier",
                                        "src": "12514:13:1"
                                      }
                                    ],
                                    "id": 770,
                                    "name": "FunctionCall",
                                    "src": "12473:55:1"
                                  }
                                ],
                                "id": 771,
                                "name": "Assignment",
                                "src": "12434:94:1"
                              }
                            ],
                            "id": 772,
                            "name": "ExpressionStatement",
                            "src": "12434:94:1"
                          }
                        ],
                        "id": 773,
                        "name": "Block",
                        "src": "12420:119:1"
                      }
                    ],
                    "id": 774,
                    "name": "IfStatement",
                    "src": "12400:139:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "safeTransferFrom",
                              "referencedDeclaration": 4637,
                              "type": "function (address,address,uint256,uint256,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 680,
                                  "type": "contract IERC1155",
                                  "value": "_collateralContractAddress"
                                },
                                "id": 775,
                                "name": "Identifier",
                                "src": "12594:26:1"
                              }
                            ],
                            "id": 777,
                            "name": "MemberAccess",
                            "src": "12594:43:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_BaseLock_$1494",
                                      "typeString": "contract BaseLock"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 778,
                                    "name": "ElementaryTypeName",
                                    "src": "12638:7:1"
                                  }
                                ],
                                "id": 779,
                                "name": "ElementaryTypeNameExpression",
                                "src": "12638:7:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967268,
                                  "type": "contract BaseLock",
                                  "value": "this"
                                },
                                "id": 780,
                                "name": "Identifier",
                                "src": "12646:4:1"
                              }
                            ],
                            "id": 781,
                            "name": "FunctionCall",
                            "src": "12638:13:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 782,
                                "name": "Identifier",
                                "src": "12653:3:1"
                              }
                            ],
                            "id": 783,
                            "name": "MemberAccess",
                            "src": "12653:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 682,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 784,
                            "name": "Identifier",
                            "src": "12665:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 716,
                              "type": "uint256",
                              "value": "_owingDonated"
                            },
                            "id": 785,
                            "name": "Identifier",
                            "src": "12685:13:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 688,
                              "type": "bytes calldata",
                              "value": "_data"
                            },
                            "id": 786,
                            "name": "Identifier",
                            "src": "12700:5:1"
                          }
                        ],
                        "id": 787,
                        "name": "FunctionCall",
                        "src": "12594:112:1"
                      }
                    ],
                    "id": 788,
                    "name": "ExpressionStatement",
                    "src": "12594:112:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC1155_$4654",
                                  "typeString": "contract IERC1155"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 377,
                              "type": "function (contract IERC1155,uint256,uint64,address,uint256)",
                              "value": "CollateralWithdrawn"
                            },
                            "id": 789,
                            "name": "Identifier",
                            "src": "12721:19:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 680,
                              "type": "contract IERC1155",
                              "value": "_collateralContractAddress"
                            },
                            "id": 790,
                            "name": "Identifier",
                            "src": "12754:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 682,
                              "type": "uint256",
                              "value": "_collateralTokenId"
                            },
                            "id": 791,
                            "name": "Identifier",
                            "src": "12794:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 684,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 792,
                            "name": "Identifier",
                            "src": "12826:9:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 793,
                                "name": "Identifier",
                                "src": "12849:3:1"
                              }
                            ],
                            "id": 794,
                            "name": "MemberAccess",
                            "src": "12849:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 716,
                              "type": "uint256",
                              "value": "_owingDonated"
                            },
                            "id": 795,
                            "name": "Identifier",
                            "src": "12873:13:1"
                          }
                        ],
                        "id": 796,
                        "name": "FunctionCall",
                        "src": "12721:175:1"
                      }
                    ],
                    "id": 797,
                    "name": "EmitStatement",
                    "src": "12716:180:1"
                  }
                ],
                "id": 798,
                "name": "Block",
                "src": "11194:1709:1"
              }
            ],
            "id": 799,
            "name": "FunctionDefinition",
            "src": "10987:1916:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                2635
              ],
              "functionSelector": "f242432a",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "safeTransferFrom",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "An ERC-1155 function.\n We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming\n each oracle."
                },
                "id": 800,
                "name": "StructuredDocumentation",
                "src": "12909:167:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 812,
                "name": "OverrideSpecifier",
                "src": "13247:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_from",
                      "scope": 828,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 801,
                        "name": "ElementaryTypeName",
                        "src": "13116:7:1"
                      }
                    ],
                    "id": 802,
                    "name": "VariableDeclaration",
                    "src": "13116:13:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_to",
                      "scope": 828,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 803,
                        "name": "ElementaryTypeName",
                        "src": "13139:7:1"
                      }
                    ],
                    "id": 804,
                    "name": "VariableDeclaration",
                    "src": "13139:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_id",
                      "scope": 828,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 805,
                        "name": "ElementaryTypeName",
                        "src": "13160:7:1"
                      }
                    ],
                    "id": 806,
                    "name": "VariableDeclaration",
                    "src": "13160:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_value",
                      "scope": 828,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 807,
                        "name": "ElementaryTypeName",
                        "src": "13181:7:1"
                      }
                    ],
                    "id": 808,
                    "name": "VariableDeclaration",
                    "src": "13181:14:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 828,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 809,
                        "name": "ElementaryTypeName",
                        "src": "13205:5:1"
                      }
                    ],
                    "id": 810,
                    "name": "VariableDeclaration",
                    "src": "13205:20:1"
                  }
                ],
                "id": 811,
                "name": "ParameterList",
                "src": "13106:125:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 813,
                "name": "ParameterList",
                "src": "13260:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1111,
                              "type": "function (uint256,address) view",
                              "value": "_checkTransferAllowed"
                            },
                            "id": 814,
                            "name": "Identifier",
                            "src": "13270:21:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 806,
                              "type": "uint256",
                              "value": "_id"
                            },
                            "id": 815,
                            "name": "Identifier",
                            "src": "13292:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 802,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 816,
                            "name": "Identifier",
                            "src": "13297:5:1"
                          }
                        ],
                        "id": 817,
                        "name": "FunctionCall",
                        "src": "13270:33:1"
                      }
                    ],
                    "id": 818,
                    "name": "ExpressionStatement",
                    "src": "13270:33:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1178,
                              "type": "function (address,address,uint256,uint256,bytes memory)",
                              "value": "_baseSafeTransferFrom"
                            },
                            "id": 819,
                            "name": "Identifier",
                            "src": "13313:21:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 802,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 820,
                            "name": "Identifier",
                            "src": "13335:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 804,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 821,
                            "name": "Identifier",
                            "src": "13342:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 806,
                              "type": "uint256",
                              "value": "_id"
                            },
                            "id": 822,
                            "name": "Identifier",
                            "src": "13347:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 808,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 823,
                            "name": "Identifier",
                            "src": "13352:6:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 810,
                              "type": "bytes calldata",
                              "value": "_data"
                            },
                            "id": 824,
                            "name": "Identifier",
                            "src": "13360:5:1"
                          }
                        ],
                        "id": 825,
                        "name": "FunctionCall",
                        "src": "13313:53:1"
                      }
                    ],
                    "id": 826,
                    "name": "ExpressionStatement",
                    "src": "13313:53:1"
                  }
                ],
                "id": 827,
                "name": "Block",
                "src": "13260:113:1"
              }
            ],
            "id": 828,
            "name": "FunctionDefinition",
            "src": "13081:292:1"
          },
          {
            "attributes": {
              "baseFunctions": [
                2773
              ],
              "functionSelector": "2eb2c2d6",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "safeBatchTransferFrom",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "An ERC-1155 function.\n We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming\n each oracle."
                },
                "id": 829,
                "name": "StructuredDocumentation",
                "src": "13379:167:1"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 843,
                "name": "OverrideSpecifier",
                "src": "13746:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_from",
                      "scope": 874,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 830,
                        "name": "ElementaryTypeName",
                        "src": "13591:7:1"
                      }
                    ],
                    "id": 831,
                    "name": "VariableDeclaration",
                    "src": "13591:13:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_to",
                      "scope": 874,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 832,
                        "name": "ElementaryTypeName",
                        "src": "13614:7:1"
                      }
                    ],
                    "id": 833,
                    "name": "VariableDeclaration",
                    "src": "13614:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_ids",
                      "scope": 874,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 834,
                            "name": "ElementaryTypeName",
                            "src": "13635:7:1"
                          }
                        ],
                        "id": 835,
                        "name": "ArrayTypeName",
                        "src": "13635:9:1"
                      }
                    ],
                    "id": 836,
                    "name": "VariableDeclaration",
                    "src": "13635:23:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_values",
                      "scope": 874,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 837,
                            "name": "ElementaryTypeName",
                            "src": "13668:7:1"
                          }
                        ],
                        "id": 838,
                        "name": "ArrayTypeName",
                        "src": "13668:9:1"
                      }
                    ],
                    "id": 839,
                    "name": "VariableDeclaration",
                    "src": "13668:26:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 874,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 840,
                        "name": "ElementaryTypeName",
                        "src": "13704:5:1"
                      }
                    ],
                    "id": 841,
                    "name": "VariableDeclaration",
                    "src": "13704:20:1"
                  }
                ],
                "id": 842,
                "name": "ParameterList",
                "src": "13581:149:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 844,
                "name": "ParameterList",
                "src": "13759:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            846
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "_i",
                              "scope": 864,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 845,
                                "name": "ElementaryTypeName",
                                "src": "13773:4:1"
                              }
                            ],
                            "id": 846,
                            "name": "VariableDeclaration",
                            "src": "13773:7:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 847,
                            "name": "Literal",
                            "src": "13783:1:1"
                          }
                        ],
                        "id": 848,
                        "name": "VariableDeclarationStatement",
                        "src": "13773:11:1"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 846,
                              "type": "uint256",
                              "value": "_i"
                            },
                            "id": 849,
                            "name": "Identifier",
                            "src": "13786:2:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 836,
                                  "type": "uint256[] calldata",
                                  "value": "_ids"
                                },
                                "id": 850,
                                "name": "Identifier",
                                "src": "13791:4:1"
                              }
                            ],
                            "id": 851,
                            "name": "MemberAccess",
                            "src": "13791:11:1"
                          }
                        ],
                        "id": 852,
                        "name": "BinaryOperation",
                        "src": "13786:16:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 846,
                                  "type": "uint256",
                                  "value": "_i"
                                },
                                "id": 853,
                                "name": "Identifier",
                                "src": "13806:2:1"
                              }
                            ],
                            "id": 854,
                            "name": "UnaryOperation",
                            "src": "13804:4:1"
                          }
                        ],
                        "id": 855,
                        "name": "ExpressionStatement",
                        "src": "13804:4:1"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1111,
                                      "type": "function (uint256,address) view",
                                      "value": "_checkTransferAllowed"
                                    },
                                    "id": 856,
                                    "name": "Identifier",
                                    "src": "13824:21:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 836,
                                          "type": "uint256[] calldata",
                                          "value": "_ids"
                                        },
                                        "id": 857,
                                        "name": "Identifier",
                                        "src": "13846:4:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 846,
                                          "type": "uint256",
                                          "value": "_i"
                                        },
                                        "id": 858,
                                        "name": "Identifier",
                                        "src": "13851:2:1"
                                      }
                                    ],
                                    "id": 859,
                                    "name": "IndexAccess",
                                    "src": "13846:8:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 831,
                                      "type": "address",
                                      "value": "_from"
                                    },
                                    "id": 860,
                                    "name": "Identifier",
                                    "src": "13856:5:1"
                                  }
                                ],
                                "id": 861,
                                "name": "FunctionCall",
                                "src": "13824:38:1"
                              }
                            ],
                            "id": 862,
                            "name": "ExpressionStatement",
                            "src": "13824:38:1"
                          }
                        ],
                        "id": 863,
                        "name": "Block",
                        "src": "13810:63:1"
                      }
                    ],
                    "id": 864,
                    "name": "ForStatement",
                    "src": "13769:104:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1281,
                              "type": "function (address,address,uint256[] memory,uint256[] memory,bytes memory)",
                              "value": "_baseSafeBatchTransferFrom"
                            },
                            "id": 865,
                            "name": "Identifier",
                            "src": "13882:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 831,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 866,
                            "name": "Identifier",
                            "src": "13909:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 833,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 867,
                            "name": "Identifier",
                            "src": "13916:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 836,
                              "type": "uint256[] calldata",
                              "value": "_ids"
                            },
                            "id": 868,
                            "name": "Identifier",
                            "src": "13921:4:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 839,
                              "type": "uint256[] calldata",
                              "value": "_values"
                            },
                            "id": 869,
                            "name": "Identifier",
                            "src": "13927:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 841,
                              "type": "bytes calldata",
                              "value": "_data"
                            },
                            "id": 870,
                            "name": "Identifier",
                            "src": "13936:5:1"
                          }
                        ],
                        "id": 871,
                        "name": "FunctionCall",
                        "src": "13882:60:1"
                      }
                    ],
                    "id": 872,
                    "name": "ExpressionStatement",
                    "src": "13882:60:1"
                  }
                ],
                "id": 873,
                "name": "Block",
                "src": "13759:190:1"
              }
            ],
            "id": 874,
            "name": "FunctionDefinition",
            "src": "13551:398:1"
          },
          {
            "attributes": {
              "functionSelector": "56c742dc",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "oracleOwner",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Get the oracle owner.\n @param _oracleId The oracle ID."
                },
                "id": 875,
                "name": "StructuredDocumentation",
                "src": "13974:65:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 887,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 876,
                        "name": "ElementaryTypeName",
                        "src": "14065:6:1"
                      }
                    ],
                    "id": 877,
                    "name": "VariableDeclaration",
                    "src": "14065:16:1"
                  }
                ],
                "id": 878,
                "name": "ParameterList",
                "src": "14064:18:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 887,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 879,
                        "name": "ElementaryTypeName",
                        "src": "14104:7:1"
                      }
                    ],
                    "id": 880,
                    "name": "VariableDeclaration",
                    "src": "14104:7:1"
                  }
                ],
                "id": 881,
                "name": "ParameterList",
                "src": "14103:9:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 881
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 385,
                              "type": "mapping(uint64 => address)",
                              "value": "oracleOwnersMap"
                            },
                            "id": 882,
                            "name": "Identifier",
                            "src": "14130:15:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 877,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 883,
                            "name": "Identifier",
                            "src": "14146:9:1"
                          }
                        ],
                        "id": 884,
                        "name": "IndexAccess",
                        "src": "14130:26:1"
                      }
                    ],
                    "id": 885,
                    "name": "Return",
                    "src": "14123:33:1"
                  }
                ],
                "id": 886,
                "name": "Block",
                "src": "14113:50:1"
              }
            ],
            "id": 887,
            "name": "FunctionDefinition",
            "src": "14044:119:1"
          },
          {
            "attributes": {
              "functionSelector": "92d2a6bc",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isOracleFinished",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Is the oracle marked as having finished its work?\n `oracleId` is the oracle ID."
                },
                "id": 888,
                "name": "StructuredDocumentation",
                "src": "14169:98:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 898,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 889,
                        "name": "ElementaryTypeName",
                        "src": "14298:6:1"
                      }
                    ],
                    "id": 890,
                    "name": "VariableDeclaration",
                    "src": "14298:6:1"
                  }
                ],
                "id": 891,
                "name": "ParameterList",
                "src": "14297:21:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 898,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 892,
                        "name": "ElementaryTypeName",
                        "src": "14348:4:1"
                      }
                    ],
                    "id": 893,
                    "name": "VariableDeclaration",
                    "src": "14348:4:1"
                  }
                ],
                "id": 894,
                "name": "ParameterList",
                "src": "14347:6:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 894
                    },
                    "children": [
                      {
                        "attributes": {
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 895,
                        "name": "Literal",
                        "src": "14371:4:1"
                      }
                    ],
                    "id": 896,
                    "name": "Return",
                    "src": "14364:11:1"
                  }
                ],
                "id": 897,
                "name": "Block",
                "src": "14354:28:1"
              }
            ],
            "id": 898,
            "name": "FunctionDefinition",
            "src": "14272:110:1"
          },
          {
            "attributes": {
              "functionSelector": "f52f368d",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isConditionalLocked",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Are transfers of a conditinal token locked?\n This is used to prevent its repeated withdrawal.\n @param _user Querying if locked for this user.\n @param _condition The condition (the original receiver of a conditional token)."
                },
                "id": 899,
                "name": "StructuredDocumentation",
                "src": "14388:255:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_user",
                      "scope": 915,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 900,
                        "name": "ElementaryTypeName",
                        "src": "14677:7:1"
                      }
                    ],
                    "id": 901,
                    "name": "VariableDeclaration",
                    "src": "14677:13:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 915,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 902,
                        "name": "ElementaryTypeName",
                        "src": "14692:7:1"
                      }
                    ],
                    "id": 903,
                    "name": "VariableDeclaration",
                    "src": "14692:18:1"
                  }
                ],
                "id": 904,
                "name": "ParameterList",
                "src": "14676:35:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 915,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 905,
                        "name": "ElementaryTypeName",
                        "src": "14733:4:1"
                      }
                    ],
                    "id": 906,
                    "name": "VariableDeclaration",
                    "src": "14733:4:1"
                  }
                ],
                "id": 907,
                "name": "ParameterList",
                "src": "14732:6:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 907
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "mapping(uint256 => bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 395,
                                  "type": "mapping(address => mapping(uint256 => bool))",
                                  "value": "userUsedRedeemMap"
                                },
                                "id": 908,
                                "name": "Identifier",
                                "src": "14756:17:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 901,
                                  "type": "address",
                                  "value": "_user"
                                },
                                "id": 909,
                                "name": "Identifier",
                                "src": "14774:5:1"
                              }
                            ],
                            "id": 910,
                            "name": "IndexAccess",
                            "src": "14756:24:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 903,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 911,
                            "name": "Identifier",
                            "src": "14781:10:1"
                          }
                        ],
                        "id": 912,
                        "name": "IndexAccess",
                        "src": "14756:36:1"
                      }
                    ],
                    "id": 913,
                    "name": "Return",
                    "src": "14749:43:1"
                  }
                ],
                "id": 914,
                "name": "Block",
                "src": "14739:60:1"
              }
            ],
            "id": 915,
            "name": "FunctionDefinition",
            "src": "14648:151:1"
          },
          {
            "attributes": {
              "functionSelector": "34fc81c4",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "gracePeriodEnd",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Retrieve the end of the grace period.\n @param _oracleId For which oracle."
                },
                "id": 916,
                "name": "StructuredDocumentation",
                "src": "14805:84:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 928,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 917,
                        "name": "ElementaryTypeName",
                        "src": "14918:6:1"
                      }
                    ],
                    "id": 918,
                    "name": "VariableDeclaration",
                    "src": "14918:16:1"
                  }
                ],
                "id": 919,
                "name": "ParameterList",
                "src": "14917:18:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 928,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 920,
                        "name": "ElementaryTypeName",
                        "src": "14957:4:1"
                      }
                    ],
                    "id": 921,
                    "name": "VariableDeclaration",
                    "src": "14957:4:1"
                  }
                ],
                "id": 922,
                "name": "ParameterList",
                "src": "14956:6:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 922
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 389,
                              "type": "mapping(uint64 => uint256)",
                              "value": "gracePeriodEnds"
                            },
                            "id": 923,
                            "name": "Identifier",
                            "src": "14980:15:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 918,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 924,
                            "name": "Identifier",
                            "src": "14996:9:1"
                          }
                        ],
                        "id": 925,
                        "name": "IndexAccess",
                        "src": "14980:26:1"
                      }
                    ],
                    "id": 926,
                    "name": "Return",
                    "src": "14973:33:1"
                  }
                ],
                "id": 927,
                "name": "Block",
                "src": "14963:50:1"
              }
            ],
            "id": 928,
            "name": "FunctionDefinition",
            "src": "14894:119:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "originalToCurrentAddress",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Current address of a user.\n @param _originalAddress The original address of the user."
                },
                "id": 929,
                "name": "StructuredDocumentation",
                "src": "15048:96:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_originalAddress",
                      "scope": 939,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 930,
                        "name": "ElementaryTypeName",
                        "src": "15183:7:1"
                      }
                    ],
                    "id": 931,
                    "name": "VariableDeclaration",
                    "src": "15183:24:1"
                  }
                ],
                "id": 932,
                "name": "ParameterList",
                "src": "15182:26:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 939,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 933,
                        "name": "ElementaryTypeName",
                        "src": "15235:7:1"
                      }
                    ],
                    "id": 934,
                    "name": "VariableDeclaration",
                    "src": "15235:7:1"
                  }
                ],
                "id": 935,
                "name": "ParameterList",
                "src": "15234:9:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 935
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 931,
                          "type": "address",
                          "value": "_originalAddress"
                        },
                        "id": 936,
                        "name": "Identifier",
                        "src": "15261:16:1"
                      }
                    ],
                    "id": 937,
                    "name": "Return",
                    "src": "15254:23:1"
                  }
                ],
                "id": 938,
                "name": "Block",
                "src": "15244:40:1"
              }
            ],
            "id": 939,
            "name": "FunctionDefinition",
            "src": "15149:135:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_mintToCustomer",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Mint a conditional to a customer."
                },
                "id": 940,
                "name": "StructuredDocumentation",
                "src": "15290:37:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_customer",
                      "scope": 970,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 941,
                        "name": "ElementaryTypeName",
                        "src": "15357:7:1"
                      }
                    ],
                    "id": 942,
                    "name": "VariableDeclaration",
                    "src": "15357:17:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 970,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 943,
                        "name": "ElementaryTypeName",
                        "src": "15376:7:1"
                      }
                    ],
                    "id": 944,
                    "name": "VariableDeclaration",
                    "src": "15376:18:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_amount",
                      "scope": 970,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 945,
                        "name": "ElementaryTypeName",
                        "src": "15396:7:1"
                      }
                    ],
                    "id": 946,
                    "name": "VariableDeclaration",
                    "src": "15396:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 970,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 947,
                        "name": "ElementaryTypeName",
                        "src": "15413:5:1"
                      }
                    ],
                    "id": 948,
                    "name": "VariableDeclaration",
                    "src": "15413:18:1"
                  }
                ],
                "id": 949,
                "name": "ParameterList",
                "src": "15356:76:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 950,
                "name": "ParameterList",
                "src": "15462:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c6145208743ca451a397a8c1d08dbc51f2eaa8aaedd186481a66ebda8bef28cf",
                                  "typeString": "literal_string \"Other's salary get attempt.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 951,
                            "name": "Identifier",
                            "src": "15472:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 416,
                                      "type": "mapping(uint256 => address)",
                                      "value": "conditionOwners"
                                    },
                                    "id": 952,
                                    "name": "Identifier",
                                    "src": "15480:15:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 944,
                                      "type": "uint256",
                                      "value": "_condition"
                                    },
                                    "id": 953,
                                    "name": "Identifier",
                                    "src": "15496:10:1"
                                  }
                                ],
                                "id": 954,
                                "name": "IndexAccess",
                                "src": "15480:27:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 942,
                                  "type": "address",
                                  "value": "_customer"
                                },
                                "id": 955,
                                "name": "Identifier",
                                "src": "15511:9:1"
                              }
                            ],
                            "id": 956,
                            "name": "BinaryOperation",
                            "src": "15480:40:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4f7468657227732073616c6172792067657420617474656d70742e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Other's salary get attempt.\"",
                              "value": "Other's salary get attempt."
                            },
                            "id": 957,
                            "name": "Literal",
                            "src": "15522:29:1"
                          }
                        ],
                        "id": 958,
                        "name": "FunctionCall",
                        "src": "15472:80:1"
                      }
                    ],
                    "id": 959,
                    "name": "ExpressionStatement",
                    "src": "15472:80:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                3411
                              ],
                              "referencedDeclaration": 3411,
                              "type": "function (address,uint256,uint256,bytes memory)",
                              "value": "_mint"
                            },
                            "id": 960,
                            "name": "Identifier",
                            "src": "15562:5:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 939,
                                  "type": "function (address) returns (address)",
                                  "value": "originalToCurrentAddress"
                                },
                                "id": 961,
                                "name": "Identifier",
                                "src": "15568:24:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 942,
                                  "type": "address",
                                  "value": "_customer"
                                },
                                "id": 962,
                                "name": "Identifier",
                                "src": "15593:9:1"
                              }
                            ],
                            "id": 963,
                            "name": "FunctionCall",
                            "src": "15568:35:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 944,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 964,
                            "name": "Identifier",
                            "src": "15605:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 946,
                              "type": "uint256",
                              "value": "_amount"
                            },
                            "id": 965,
                            "name": "Identifier",
                            "src": "15617:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 948,
                              "type": "bytes memory",
                              "value": "_data"
                            },
                            "id": 966,
                            "name": "Identifier",
                            "src": "15626:5:1"
                          }
                        ],
                        "id": 967,
                        "name": "FunctionCall",
                        "src": "15562:70:1"
                      }
                    ],
                    "id": 968,
                    "name": "ExpressionStatement",
                    "src": "15562:70:1"
                  }
                ],
                "id": 969,
                "name": "Block",
                "src": "15462:177:1"
              }
            ],
            "id": 970,
            "name": "FunctionDefinition",
            "src": "15332:307:1"
          },
          {
            "attributes": {
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_calcRewardShare",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Calculate the share of a condition in an oracle's market.\n @param _oracleId The oracle ID.\n @return Uses `ABDKMath64x64` number ID."
                },
                "id": 971,
                "name": "StructuredDocumentation",
                "src": "15645:149:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 980,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 972,
                        "name": "ElementaryTypeName",
                        "src": "15825:6:1"
                      }
                    ],
                    "id": 973,
                    "name": "VariableDeclaration",
                    "src": "15825:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 980,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 974,
                        "name": "ElementaryTypeName",
                        "src": "15843:7:1"
                      }
                    ],
                    "id": 975,
                    "name": "VariableDeclaration",
                    "src": "15843:18:1"
                  }
                ],
                "id": 976,
                "name": "ParameterList",
                "src": "15824:38:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 980,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 977,
                        "name": "ElementaryTypeName",
                        "src": "15894:6:1"
                      }
                    ],
                    "id": 978,
                    "name": "VariableDeclaration",
                    "src": "15894:6:1"
                  }
                ],
                "id": 979,
                "name": "ParameterList",
                "src": "15893:8:1"
              }
            ],
            "id": 980,
            "name": "FunctionDefinition",
            "src": "15799:103:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_calcMultiplier",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 1004,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 981,
                        "name": "ElementaryTypeName",
                        "src": "15933:6:1"
                      }
                    ],
                    "id": 982,
                    "name": "VariableDeclaration",
                    "src": "15933:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 1004,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 983,
                        "name": "ElementaryTypeName",
                        "src": "15951:7:1"
                      }
                    ],
                    "id": 984,
                    "name": "VariableDeclaration",
                    "src": "15951:18:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleShare",
                      "scope": 1004,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 985,
                        "name": "ElementaryTypeName",
                        "src": "15971:6:1"
                      }
                    ],
                    "id": 986,
                    "name": "VariableDeclaration",
                    "src": "15971:19:1"
                  }
                ],
                "id": 987,
                "name": "ParameterList",
                "src": "15932:59:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1004,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "int128",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "int128",
                          "type": "int128"
                        },
                        "id": 988,
                        "name": "ElementaryTypeName",
                        "src": "16023:6:1"
                      }
                    ],
                    "id": 989,
                    "name": "VariableDeclaration",
                    "src": "16023:6:1"
                  }
                ],
                "id": 990,
                "name": "ParameterList",
                "src": "16022:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        992
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_rewardShare",
                          "scope": 1003,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int128",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int128",
                              "type": "int128"
                            },
                            "id": 991,
                            "name": "ElementaryTypeName",
                            "src": "16041:6:1"
                          }
                        ],
                        "id": 992,
                        "name": "VariableDeclaration",
                        "src": "16041:19:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int128",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 980,
                              "type": "function (uint64,uint256) view returns (int128)",
                              "value": "_calcRewardShare"
                            },
                            "id": 993,
                            "name": "Identifier",
                            "src": "16063:16:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 982,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 994,
                            "name": "Identifier",
                            "src": "16080:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 984,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 995,
                            "name": "Identifier",
                            "src": "16091:10:1"
                          }
                        ],
                        "id": 996,
                        "name": "FunctionCall",
                        "src": "16063:39:1"
                      }
                    ],
                    "id": 997,
                    "name": "VariableDeclarationStatement",
                    "src": "16041:61:1"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 990
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int128",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "mul",
                              "referencedDeclaration": 7376,
                              "type": "function (int128,int128) pure returns (int128)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 986,
                                  "type": "int128",
                                  "value": "_oracleShare"
                                },
                                "id": 998,
                                "name": "Identifier",
                                "src": "16119:12:1"
                              }
                            ],
                            "id": 999,
                            "name": "MemberAccess",
                            "src": "16119:16:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 992,
                              "type": "int128",
                              "value": "_rewardShare"
                            },
                            "id": 1000,
                            "name": "Identifier",
                            "src": "16136:12:1"
                          }
                        ],
                        "id": 1001,
                        "name": "FunctionCall",
                        "src": "16119:30:1"
                      }
                    ],
                    "id": 1002,
                    "name": "Return",
                    "src": "16112:37:1"
                  }
                ],
                "id": 1003,
                "name": "Block",
                "src": "16031:125:1"
              }
            ],
            "id": 1004,
            "name": "FunctionDefinition",
            "src": "15908:248:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_doTransfer",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_id",
                      "scope": 1046,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1005,
                        "name": "ElementaryTypeName",
                        "src": "16183:7:1"
                      }
                    ],
                    "id": 1006,
                    "name": "VariableDeclaration",
                    "src": "16183:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_from",
                      "scope": 1046,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1007,
                        "name": "ElementaryTypeName",
                        "src": "16196:7:1"
                      }
                    ],
                    "id": 1008,
                    "name": "VariableDeclaration",
                    "src": "16196:13:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_to",
                      "scope": 1046,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1009,
                        "name": "ElementaryTypeName",
                        "src": "16211:7:1"
                      }
                    ],
                    "id": 1010,
                    "name": "VariableDeclaration",
                    "src": "16211:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_value",
                      "scope": 1046,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1011,
                        "name": "ElementaryTypeName",
                        "src": "16224:7:1"
                      }
                    ],
                    "id": 1012,
                    "name": "VariableDeclaration",
                    "src": "16224:14:1"
                  }
                ],
                "id": 1013,
                "name": "ParameterList",
                "src": "16182:57:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1014,
                "name": "ParameterList",
                "src": "16257:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(address => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2327,
                                      "type": "mapping(uint256 => mapping(address => uint256))",
                                      "value": "_balances"
                                    },
                                    "id": 1015,
                                    "name": "Identifier",
                                    "src": "16267:9:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1006,
                                      "type": "uint256",
                                      "value": "_id"
                                    },
                                    "id": 1016,
                                    "name": "Identifier",
                                    "src": "16277:3:1"
                                  }
                                ],
                                "id": 1018,
                                "name": "IndexAccess",
                                "src": "16267:14:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1008,
                                  "type": "address",
                                  "value": "_from"
                                },
                                "id": 1017,
                                "name": "Identifier",
                                "src": "16282:5:1"
                              }
                            ],
                            "id": 1019,
                            "name": "IndexAccess",
                            "src": "16267:21:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sub",
                                  "referencedDeclaration": 4303,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2327,
                                              "type": "mapping(uint256 => mapping(address => uint256))",
                                              "value": "_balances"
                                            },
                                            "id": 1020,
                                            "name": "Identifier",
                                            "src": "16291:9:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1006,
                                              "type": "uint256",
                                              "value": "_id"
                                            },
                                            "id": 1021,
                                            "name": "Identifier",
                                            "src": "16301:3:1"
                                          }
                                        ],
                                        "id": 1022,
                                        "name": "IndexAccess",
                                        "src": "16291:14:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1008,
                                          "type": "address",
                                          "value": "_from"
                                        },
                                        "id": 1023,
                                        "name": "Identifier",
                                        "src": "16306:5:1"
                                      }
                                    ],
                                    "id": 1024,
                                    "name": "IndexAccess",
                                    "src": "16291:21:1"
                                  }
                                ],
                                "id": 1025,
                                "name": "MemberAccess",
                                "src": "16291:25:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1012,
                                  "type": "uint256",
                                  "value": "_value"
                                },
                                "id": 1026,
                                "name": "Identifier",
                                "src": "16317:6:1"
                              }
                            ],
                            "id": 1027,
                            "name": "FunctionCall",
                            "src": "16291:33:1"
                          }
                        ],
                        "id": 1028,
                        "name": "Assignment",
                        "src": "16267:57:1"
                      }
                    ],
                    "id": 1029,
                    "name": "ExpressionStatement",
                    "src": "16267:57:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(address => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2327,
                                      "type": "mapping(uint256 => mapping(address => uint256))",
                                      "value": "_balances"
                                    },
                                    "id": 1030,
                                    "name": "Identifier",
                                    "src": "16334:9:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1006,
                                      "type": "uint256",
                                      "value": "_id"
                                    },
                                    "id": 1031,
                                    "name": "Identifier",
                                    "src": "16344:3:1"
                                  }
                                ],
                                "id": 1033,
                                "name": "IndexAccess",
                                "src": "16334:14:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1010,
                                  "type": "address",
                                  "value": "_to"
                                },
                                "id": 1032,
                                "name": "Identifier",
                                "src": "16349:3:1"
                              }
                            ],
                            "id": 1034,
                            "name": "IndexAccess",
                            "src": "16334:19:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "add",
                                  "referencedDeclaration": 4286,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1012,
                                      "type": "uint256",
                                      "value": "_value"
                                    },
                                    "id": 1035,
                                    "name": "Identifier",
                                    "src": "16356:6:1"
                                  }
                                ],
                                "id": 1036,
                                "name": "MemberAccess",
                                "src": "16356:10:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "mapping(address => uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2327,
                                          "type": "mapping(uint256 => mapping(address => uint256))",
                                          "value": "_balances"
                                        },
                                        "id": 1037,
                                        "name": "Identifier",
                                        "src": "16367:9:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1006,
                                          "type": "uint256",
                                          "value": "_id"
                                        },
                                        "id": 1038,
                                        "name": "Identifier",
                                        "src": "16377:3:1"
                                      }
                                    ],
                                    "id": 1039,
                                    "name": "IndexAccess",
                                    "src": "16367:14:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1010,
                                      "type": "address",
                                      "value": "_to"
                                    },
                                    "id": 1040,
                                    "name": "Identifier",
                                    "src": "16382:3:1"
                                  }
                                ],
                                "id": 1041,
                                "name": "IndexAccess",
                                "src": "16367:19:1"
                              }
                            ],
                            "id": 1042,
                            "name": "FunctionCall",
                            "src": "16356:31:1"
                          }
                        ],
                        "id": 1043,
                        "name": "Assignment",
                        "src": "16334:53:1"
                      }
                    ],
                    "id": 1044,
                    "name": "ExpressionStatement",
                    "src": "16334:53:1"
                  }
                ],
                "id": 1045,
                "name": "Block",
                "src": "16257:137:1"
              }
            ],
            "id": 1046,
            "name": "FunctionDefinition",
            "src": "16162:232:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_collateralDonatedPerOracleTokenId",
              "scope": 1494,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Generate the ERC-1155 token ID that counts amount of donations per oracle for a ERC-1155 collateral token.\n @param _collateralContractAddress The ERC-1155 contract of the collateral token.\n @param _collateralTokenId The ERC-1155 ID of the collateral token.\n @param _oracleId The oracle ID.\n Note: It does not conflict with other tokens kinds, because the only other one is the uint64 conditional."
                },
                "id": 1047,
                "name": "StructuredDocumentation",
                "src": "16420:428:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralContractAddress",
                      "scope": 1071,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC1155",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "IERC1155",
                          "referencedDeclaration": 4654,
                          "type": "contract IERC1155"
                        },
                        "id": 1048,
                        "name": "UserDefinedTypeName",
                        "src": "16897:8:1"
                      }
                    ],
                    "id": 1049,
                    "name": "VariableDeclaration",
                    "src": "16897:35:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralTokenId",
                      "scope": 1071,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1050,
                        "name": "ElementaryTypeName",
                        "src": "16934:7:1"
                      }
                    ],
                    "id": 1051,
                    "name": "VariableDeclaration",
                    "src": "16934:26:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 1071,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 1052,
                        "name": "ElementaryTypeName",
                        "src": "16962:6:1"
                      }
                    ],
                    "id": 1053,
                    "name": "VariableDeclaration",
                    "src": "16962:16:1"
                  }
                ],
                "id": 1054,
                "name": "ParameterList",
                "src": "16896:83:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1071,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1055,
                        "name": "ElementaryTypeName",
                        "src": "17011:7:1"
                      }
                    ],
                    "id": 1056,
                    "name": "VariableDeclaration",
                    "src": "17011:7:1"
                  }
                ],
                "id": 1057,
                "name": "ParameterList",
                "src": "17010:9:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1057
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256"
                                },
                                "id": 1058,
                                "name": "ElementaryTypeName",
                                "src": "17041:7:1"
                              }
                            ],
                            "id": 1059,
                            "name": "ElementaryTypeNameExpression",
                            "src": "17041:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967288,
                                  "type": "function (bytes memory) pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 1060,
                                "name": "Identifier",
                                "src": "17049:9:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                                          "typeString": "contract IERC1155"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "encodePacked",
                                      "type": "function () pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4294967295,
                                          "type": "abi",
                                          "value": "abi"
                                        },
                                        "id": 1061,
                                        "name": "Identifier",
                                        "src": "17059:3:1"
                                      }
                                    ],
                                    "id": 1062,
                                    "name": "MemberAccess",
                                    "src": "17059:16:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1049,
                                      "type": "contract IERC1155",
                                      "value": "_collateralContractAddress"
                                    },
                                    "id": 1063,
                                    "name": "Identifier",
                                    "src": "17076:26:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1051,
                                      "type": "uint256",
                                      "value": "_collateralTokenId"
                                    },
                                    "id": 1064,
                                    "name": "Identifier",
                                    "src": "17104:18:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1053,
                                      "type": "uint64",
                                      "value": "_oracleId"
                                    },
                                    "id": 1065,
                                    "name": "Identifier",
                                    "src": "17124:9:1"
                                  }
                                ],
                                "id": 1066,
                                "name": "FunctionCall",
                                "src": "17059:75:1"
                              }
                            ],
                            "id": 1067,
                            "name": "FunctionCall",
                            "src": "17049:86:1"
                          }
                        ],
                        "id": 1068,
                        "name": "FunctionCall",
                        "src": "17041:95:1"
                      }
                    ],
                    "id": 1069,
                    "name": "Return",
                    "src": "17034:102:1"
                  }
                ],
                "id": 1070,
                "name": "Block",
                "src": "17024:119:1"
              }
            ],
            "id": 1071,
            "name": "FunctionDefinition",
            "src": "16853:290:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_collateralDonatedTokenId",
              "scope": 1494,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Generate the ERC-1155 token ID that counts amount of donations for a ERC-1155 collateral token.\n @param _collateralContractAddress The ERC-1155 contract of the collateral token.\n @param _collateralTokenId The ERC-1155 ID of the collateral token.\n Note: It does not conflict with other tokens kinds, because the only other one is the uint64 conditional."
                },
                "id": 1072,
                "name": "StructuredDocumentation",
                "src": "17149:377:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralContractAddress",
                      "scope": 1093,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC1155",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "IERC1155",
                          "referencedDeclaration": 4654,
                          "type": "contract IERC1155"
                        },
                        "id": 1073,
                        "name": "UserDefinedTypeName",
                        "src": "17566:8:1"
                      }
                    ],
                    "id": 1074,
                    "name": "VariableDeclaration",
                    "src": "17566:35:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralTokenId",
                      "scope": 1093,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1075,
                        "name": "ElementaryTypeName",
                        "src": "17603:7:1"
                      }
                    ],
                    "id": 1076,
                    "name": "VariableDeclaration",
                    "src": "17603:26:1"
                  }
                ],
                "id": 1077,
                "name": "ParameterList",
                "src": "17565:65:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1093,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1078,
                        "name": "ElementaryTypeName",
                        "src": "17662:7:1"
                      }
                    ],
                    "id": 1079,
                    "name": "VariableDeclaration",
                    "src": "17662:7:1"
                  }
                ],
                "id": 1080,
                "name": "ParameterList",
                "src": "17661:9:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1080
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256"
                                },
                                "id": 1081,
                                "name": "ElementaryTypeName",
                                "src": "17692:7:1"
                              }
                            ],
                            "id": 1082,
                            "name": "ElementaryTypeNameExpression",
                            "src": "17692:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967288,
                                  "type": "function (bytes memory) pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 1083,
                                "name": "Identifier",
                                "src": "17700:9:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bytes memory",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IERC1155_$4654",
                                          "typeString": "contract IERC1155"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "encodePacked",
                                      "type": "function () pure returns (bytes memory)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4294967295,
                                          "type": "abi",
                                          "value": "abi"
                                        },
                                        "id": 1084,
                                        "name": "Identifier",
                                        "src": "17710:3:1"
                                      }
                                    ],
                                    "id": 1085,
                                    "name": "MemberAccess",
                                    "src": "17710:16:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1074,
                                      "type": "contract IERC1155",
                                      "value": "_collateralContractAddress"
                                    },
                                    "id": 1086,
                                    "name": "Identifier",
                                    "src": "17727:26:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1076,
                                      "type": "uint256",
                                      "value": "_collateralTokenId"
                                    },
                                    "id": 1087,
                                    "name": "Identifier",
                                    "src": "17755:18:1"
                                  }
                                ],
                                "id": 1088,
                                "name": "FunctionCall",
                                "src": "17710:64:1"
                              }
                            ],
                            "id": 1089,
                            "name": "FunctionCall",
                            "src": "17700:75:1"
                          }
                        ],
                        "id": 1090,
                        "name": "FunctionCall",
                        "src": "17692:84:1"
                      }
                    ],
                    "id": 1091,
                    "name": "Return",
                    "src": "17685:91:1"
                  }
                ],
                "id": 1092,
                "name": "Block",
                "src": "17675:108:1"
              }
            ],
            "id": 1093,
            "name": "FunctionDefinition",
            "src": "17531:252:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_checkTransferAllowed",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_id",
                      "scope": 1111,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1094,
                        "name": "ElementaryTypeName",
                        "src": "17820:7:1"
                      }
                    ],
                    "id": 1095,
                    "name": "VariableDeclaration",
                    "src": "17820:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_from",
                      "scope": 1111,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1096,
                        "name": "ElementaryTypeName",
                        "src": "17833:7:1"
                      }
                    ],
                    "id": 1097,
                    "name": "VariableDeclaration",
                    "src": "17833:13:1"
                  }
                ],
                "id": 1098,
                "name": "ParameterList",
                "src": "17819:28:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1099,
                "name": "ParameterList",
                "src": "17862:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_24eedc11b69e1557102d15fe4820d3e0eda711106ce99878f9bcbdadb17f3db3",
                                  "typeString": "literal_string \"You can't trade conditional tokens after redeem.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1100,
                            "name": "Identifier",
                            "src": "17872:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "mapping(uint256 => bool)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 395,
                                          "type": "mapping(address => mapping(uint256 => bool))",
                                          "value": "userUsedRedeemMap"
                                        },
                                        "id": 1101,
                                        "name": "Identifier",
                                        "src": "17881:17:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1097,
                                          "type": "address",
                                          "value": "_from"
                                        },
                                        "id": 1102,
                                        "name": "Identifier",
                                        "src": "17899:5:1"
                                      }
                                    ],
                                    "id": 1103,
                                    "name": "IndexAccess",
                                    "src": "17881:24:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1095,
                                      "type": "uint256",
                                      "value": "_id"
                                    },
                                    "id": 1104,
                                    "name": "Identifier",
                                    "src": "17906:3:1"
                                  }
                                ],
                                "id": 1105,
                                "name": "IndexAccess",
                                "src": "17881:29:1"
                              }
                            ],
                            "id": 1106,
                            "name": "UnaryOperation",
                            "src": "17880:30:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "596f752063616e277420747261646520636f6e646974696f6e616c20746f6b656e732061667465722072656465656d2e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"You can't trade conditional tokens after redeem.\"",
                              "value": "You can't trade conditional tokens after redeem."
                            },
                            "id": 1107,
                            "name": "Literal",
                            "src": "17912:50:1"
                          }
                        ],
                        "id": 1108,
                        "name": "FunctionCall",
                        "src": "17872:91:1"
                      }
                    ],
                    "id": 1109,
                    "name": "ExpressionStatement",
                    "src": "17872:91:1"
                  }
                ],
                "id": 1110,
                "name": "Block",
                "src": "17862:108:1"
              }
            ],
            "id": 1111,
            "name": "FunctionDefinition",
            "src": "17789:181:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_baseSafeTransferFrom",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_from",
                      "scope": 1178,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1112,
                        "name": "ElementaryTypeName",
                        "src": "18007:7:1"
                      }
                    ],
                    "id": 1113,
                    "name": "VariableDeclaration",
                    "src": "18007:13:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_to",
                      "scope": 1178,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1114,
                        "name": "ElementaryTypeName",
                        "src": "18022:7:1"
                      }
                    ],
                    "id": 1115,
                    "name": "VariableDeclaration",
                    "src": "18022:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_id",
                      "scope": 1178,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1116,
                        "name": "ElementaryTypeName",
                        "src": "18035:7:1"
                      }
                    ],
                    "id": 1117,
                    "name": "VariableDeclaration",
                    "src": "18035:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_value",
                      "scope": 1178,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1118,
                        "name": "ElementaryTypeName",
                        "src": "18048:7:1"
                      }
                    ],
                    "id": 1119,
                    "name": "VariableDeclaration",
                    "src": "18048:14:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 1178,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1120,
                        "name": "ElementaryTypeName",
                        "src": "18064:5:1"
                      }
                    ],
                    "id": 1121,
                    "name": "VariableDeclaration",
                    "src": "18064:18:1"
                  }
                ],
                "id": 1122,
                "name": "ParameterList",
                "src": "18006:77:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1123,
                "name": "ParameterList",
                "src": "18092:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_27e9709d7b383cbb3da52b4dd7d393e8e9934271a7b9c0afe05a8be1f2b0321f",
                                  "typeString": "literal_string \"ERC1155: target address must be non-zero\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1124,
                            "name": "Identifier",
                            "src": "18102:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1115,
                                  "type": "address",
                                  "value": "_to"
                                },
                                "id": 1125,
                                "name": "Identifier",
                                "src": "18110:3:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 1126,
                                        "name": "ElementaryTypeName",
                                        "src": "18117:7:1"
                                      }
                                    ],
                                    "id": 1127,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "18117:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1128,
                                    "name": "Literal",
                                    "src": "18125:1:1"
                                  }
                                ],
                                "id": 1129,
                                "name": "FunctionCall",
                                "src": "18117:10:1"
                              }
                            ],
                            "id": 1130,
                            "name": "BinaryOperation",
                            "src": "18110:17:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a207461726765742061646472657373206d757374206265206e6f6e2d7a65726f",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: target address must be non-zero\"",
                              "value": "ERC1155: target address must be non-zero"
                            },
                            "id": 1131,
                            "name": "Literal",
                            "src": "18129:42:1"
                          }
                        ],
                        "id": 1132,
                        "name": "FunctionCall",
                        "src": "18102:70:1"
                      }
                    ],
                    "id": 1133,
                    "name": "ExpressionStatement",
                    "src": "18102:70:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_d24e8bd2be59f2f2cd9e29721be8ace2141eaffefd4f01fbcbae98946443b091",
                                  "typeString": "literal_string \"ERC1155: need operator approval for 3rd party transfers.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1134,
                            "name": "Identifier",
                            "src": "18182:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1113,
                                      "type": "address",
                                      "value": "_from"
                                    },
                                    "id": 1135,
                                    "name": "Identifier",
                                    "src": "18203:5:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4294967281,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 1136,
                                        "name": "Identifier",
                                        "src": "18212:3:1"
                                      }
                                    ],
                                    "id": 1137,
                                    "name": "MemberAccess",
                                    "src": "18212:10:1"
                                  }
                                ],
                                "id": 1138,
                                "name": "BinaryOperation",
                                "src": "18203:19:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "mapping(address => bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2333,
                                              "type": "mapping(address => mapping(address => bool))",
                                              "value": "_operatorApprovals"
                                            },
                                            "id": 1139,
                                            "name": "Identifier",
                                            "src": "18226:18:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1113,
                                              "type": "address",
                                              "value": "_from"
                                            },
                                            "id": 1140,
                                            "name": "Identifier",
                                            "src": "18245:5:1"
                                          }
                                        ],
                                        "id": 1141,
                                        "name": "IndexAccess",
                                        "src": "18226:25:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sender",
                                          "type": "address payable"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4294967281,
                                              "type": "msg",
                                              "value": "msg"
                                            },
                                            "id": 1142,
                                            "name": "Identifier",
                                            "src": "18252:3:1"
                                          }
                                        ],
                                        "id": 1143,
                                        "name": "MemberAccess",
                                        "src": "18252:10:1"
                                      }
                                    ],
                                    "id": 1144,
                                    "name": "IndexAccess",
                                    "src": "18226:37:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "74727565",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "bool",
                                      "type": "bool",
                                      "value": "true"
                                    },
                                    "id": 1145,
                                    "name": "Literal",
                                    "src": "18267:4:1"
                                  }
                                ],
                                "id": 1146,
                                "name": "BinaryOperation",
                                "src": "18226:45:1"
                              }
                            ],
                            "id": 1147,
                            "name": "BinaryOperation",
                            "src": "18203:68:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a206e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: need operator approval for 3rd party transfers.\"",
                              "value": "ERC1155: need operator approval for 3rd party transfers."
                            },
                            "id": 1148,
                            "name": "Literal",
                            "src": "18285:58:1"
                          }
                        ],
                        "id": 1149,
                        "name": "FunctionCall",
                        "src": "18182:171:1"
                      }
                    ],
                    "id": 1150,
                    "name": "ExpressionStatement",
                    "src": "18182:171:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1046,
                              "type": "function (uint256,address,address,uint256)",
                              "value": "_doTransfer"
                            },
                            "id": 1151,
                            "name": "Identifier",
                            "src": "18364:11:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1117,
                              "type": "uint256",
                              "value": "_id"
                            },
                            "id": 1152,
                            "name": "Identifier",
                            "src": "18376:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1113,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 1153,
                            "name": "Identifier",
                            "src": "18381:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1115,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 1154,
                            "name": "Identifier",
                            "src": "18388:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1119,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 1155,
                            "name": "Identifier",
                            "src": "18393:6:1"
                          }
                        ],
                        "id": 1156,
                        "name": "FunctionCall",
                        "src": "18364:36:1"
                      }
                    ],
                    "id": 1157,
                    "name": "ExpressionStatement",
                    "src": "18364:36:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4551,
                              "type": "function (address,address,address,uint256,uint256)",
                              "value": "TransferSingle"
                            },
                            "id": 1158,
                            "name": "Identifier",
                            "src": "18416:14:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1159,
                                "name": "Identifier",
                                "src": "18431:3:1"
                              }
                            ],
                            "id": 1160,
                            "name": "MemberAccess",
                            "src": "18431:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1113,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 1161,
                            "name": "Identifier",
                            "src": "18443:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1115,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 1162,
                            "name": "Identifier",
                            "src": "18450:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1117,
                              "type": "uint256",
                              "value": "_id"
                            },
                            "id": 1163,
                            "name": "Identifier",
                            "src": "18455:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1119,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 1164,
                            "name": "Identifier",
                            "src": "18460:6:1"
                          }
                        ],
                        "id": 1165,
                        "name": "FunctionCall",
                        "src": "18416:51:1"
                      }
                    ],
                    "id": 1166,
                    "name": "EmitStatement",
                    "src": "18411:56:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3222,
                              "type": "function (address,address,address,uint256,uint256,bytes memory)",
                              "value": "_doSafeTransferAcceptanceCheck"
                            },
                            "id": 1167,
                            "name": "Identifier",
                            "src": "18478:30:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1168,
                                "name": "Identifier",
                                "src": "18509:3:1"
                              }
                            ],
                            "id": 1169,
                            "name": "MemberAccess",
                            "src": "18509:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1113,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 1170,
                            "name": "Identifier",
                            "src": "18521:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1115,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 1171,
                            "name": "Identifier",
                            "src": "18528:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1117,
                              "type": "uint256",
                              "value": "_id"
                            },
                            "id": 1172,
                            "name": "Identifier",
                            "src": "18533:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1119,
                              "type": "uint256",
                              "value": "_value"
                            },
                            "id": 1173,
                            "name": "Identifier",
                            "src": "18538:6:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1121,
                              "type": "bytes memory",
                              "value": "_data"
                            },
                            "id": 1174,
                            "name": "Identifier",
                            "src": "18546:5:1"
                          }
                        ],
                        "id": 1175,
                        "name": "FunctionCall",
                        "src": "18478:74:1"
                      }
                    ],
                    "id": 1176,
                    "name": "ExpressionStatement",
                    "src": "18478:74:1"
                  }
                ],
                "id": 1177,
                "name": "Block",
                "src": "18092:467:1"
              }
            ],
            "id": 1178,
            "name": "FunctionDefinition",
            "src": "17976:583:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_baseSafeBatchTransferFrom",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_from",
                      "scope": 1281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1179,
                        "name": "ElementaryTypeName",
                        "src": "18610:7:1"
                      }
                    ],
                    "id": 1180,
                    "name": "VariableDeclaration",
                    "src": "18610:13:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_to",
                      "scope": 1281,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1181,
                        "name": "ElementaryTypeName",
                        "src": "18633:7:1"
                      }
                    ],
                    "id": 1182,
                    "name": "VariableDeclaration",
                    "src": "18633:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_ids",
                      "scope": 1281,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1183,
                            "name": "ElementaryTypeName",
                            "src": "18654:7:1"
                          }
                        ],
                        "id": 1184,
                        "name": "ArrayTypeName",
                        "src": "18654:9:1"
                      }
                    ],
                    "id": 1185,
                    "name": "VariableDeclaration",
                    "src": "18654:21:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_values",
                      "scope": 1281,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1186,
                            "name": "ElementaryTypeName",
                            "src": "18685:7:1"
                          }
                        ],
                        "id": 1187,
                        "name": "ArrayTypeName",
                        "src": "18685:9:1"
                      }
                    ],
                    "id": 1188,
                    "name": "VariableDeclaration",
                    "src": "18685:24:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 1281,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1189,
                        "name": "ElementaryTypeName",
                        "src": "18719:5:1"
                      }
                    ],
                    "id": 1190,
                    "name": "VariableDeclaration",
                    "src": "18719:18:1"
                  }
                ],
                "id": 1191,
                "name": "ParameterList",
                "src": "18600:143:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1192,
                "name": "ParameterList",
                "src": "18764:0:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_e0ba74382668489e23fed437e59bd794c88254b3bd9c626aad1b1f2980daa4af",
                                  "typeString": "literal_string \"ERC1155: IDs and _values must have same lengths\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1193,
                            "name": "Identifier",
                            "src": "18774:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1185,
                                      "type": "uint256[] memory",
                                      "value": "_ids"
                                    },
                                    "id": 1194,
                                    "name": "Identifier",
                                    "src": "18782:4:1"
                                  }
                                ],
                                "id": 1195,
                                "name": "MemberAccess",
                                "src": "18782:11:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1188,
                                      "type": "uint256[] memory",
                                      "value": "_values"
                                    },
                                    "id": 1196,
                                    "name": "Identifier",
                                    "src": "18797:7:1"
                                  }
                                ],
                                "id": 1197,
                                "name": "MemberAccess",
                                "src": "18797:14:1"
                              }
                            ],
                            "id": 1198,
                            "name": "BinaryOperation",
                            "src": "18782:29:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a2049447320616e64205f76616c756573206d75737420686176652073616d65206c656e67746873",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: IDs and _values must have same lengths\"",
                              "value": "ERC1155: IDs and _values must have same lengths"
                            },
                            "id": 1199,
                            "name": "Literal",
                            "src": "18813:49:1"
                          }
                        ],
                        "id": 1200,
                        "name": "FunctionCall",
                        "src": "18774:89:1"
                      }
                    ],
                    "id": 1201,
                    "name": "ExpressionStatement",
                    "src": "18774:89:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_27e9709d7b383cbb3da52b4dd7d393e8e9934271a7b9c0afe05a8be1f2b0321f",
                                  "typeString": "literal_string \"ERC1155: target address must be non-zero\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1202,
                            "name": "Identifier",
                            "src": "18873:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1182,
                                  "type": "address",
                                  "value": "_to"
                                },
                                "id": 1203,
                                "name": "Identifier",
                                "src": "18881:3:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 1204,
                                        "name": "ElementaryTypeName",
                                        "src": "18888:7:1"
                                      }
                                    ],
                                    "id": 1205,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "18888:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 1206,
                                    "name": "Literal",
                                    "src": "18896:1:1"
                                  }
                                ],
                                "id": 1207,
                                "name": "FunctionCall",
                                "src": "18888:10:1"
                              }
                            ],
                            "id": 1208,
                            "name": "BinaryOperation",
                            "src": "18881:17:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a207461726765742061646472657373206d757374206265206e6f6e2d7a65726f",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: target address must be non-zero\"",
                              "value": "ERC1155: target address must be non-zero"
                            },
                            "id": 1209,
                            "name": "Literal",
                            "src": "18900:42:1"
                          }
                        ],
                        "id": 1210,
                        "name": "FunctionCall",
                        "src": "18873:70:1"
                      }
                    ],
                    "id": 1211,
                    "name": "ExpressionStatement",
                    "src": "18873:70:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_d24e8bd2be59f2f2cd9e29721be8ace2141eaffefd4f01fbcbae98946443b091",
                                  "typeString": "literal_string \"ERC1155: need operator approval for 3rd party transfers.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1212,
                            "name": "Identifier",
                            "src": "18953:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1180,
                                      "type": "address",
                                      "value": "_from"
                                    },
                                    "id": 1213,
                                    "name": "Identifier",
                                    "src": "18974:5:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "type": "address payable"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4294967281,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 1214,
                                        "name": "Identifier",
                                        "src": "18983:3:1"
                                      }
                                    ],
                                    "id": 1215,
                                    "name": "MemberAccess",
                                    "src": "18983:10:1"
                                  }
                                ],
                                "id": 1216,
                                "name": "BinaryOperation",
                                "src": "18974:19:1"
                              },
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "mapping(address => bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2333,
                                              "type": "mapping(address => mapping(address => bool))",
                                              "value": "_operatorApprovals"
                                            },
                                            "id": 1217,
                                            "name": "Identifier",
                                            "src": "18997:18:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1180,
                                              "type": "address",
                                              "value": "_from"
                                            },
                                            "id": 1218,
                                            "name": "Identifier",
                                            "src": "19016:5:1"
                                          }
                                        ],
                                        "id": 1219,
                                        "name": "IndexAccess",
                                        "src": "18997:25:1"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sender",
                                          "type": "address payable"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4294967281,
                                              "type": "msg",
                                              "value": "msg"
                                            },
                                            "id": 1220,
                                            "name": "Identifier",
                                            "src": "19023:3:1"
                                          }
                                        ],
                                        "id": 1221,
                                        "name": "MemberAccess",
                                        "src": "19023:10:1"
                                      }
                                    ],
                                    "id": 1222,
                                    "name": "IndexAccess",
                                    "src": "18997:37:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "74727565",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "bool",
                                      "type": "bool",
                                      "value": "true"
                                    },
                                    "id": 1223,
                                    "name": "Literal",
                                    "src": "19038:4:1"
                                  }
                                ],
                                "id": 1224,
                                "name": "BinaryOperation",
                                "src": "18997:45:1"
                              }
                            ],
                            "id": 1225,
                            "name": "BinaryOperation",
                            "src": "18974:68:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a206e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: need operator approval for 3rd party transfers.\"",
                              "value": "ERC1155: need operator approval for 3rd party transfers."
                            },
                            "id": 1226,
                            "name": "Literal",
                            "src": "19056:58:1"
                          }
                        ],
                        "id": 1227,
                        "name": "FunctionCall",
                        "src": "18953:171:1"
                      }
                    ],
                    "id": 1228,
                    "name": "ExpressionStatement",
                    "src": "18953:171:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            1230
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "_i",
                              "scope": 1260,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 1229,
                                "name": "ElementaryTypeName",
                                "src": "19140:7:1"
                              }
                            ],
                            "id": 1230,
                            "name": "VariableDeclaration",
                            "src": "19140:10:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1231,
                            "name": "Literal",
                            "src": "19153:1:1"
                          }
                        ],
                        "id": 1232,
                        "name": "VariableDeclarationStatement",
                        "src": "19140:14:1"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1230,
                              "type": "uint256",
                              "value": "_i"
                            },
                            "id": 1233,
                            "name": "Identifier",
                            "src": "19156:2:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1185,
                                  "type": "uint256[] memory",
                                  "value": "_ids"
                                },
                                "id": 1234,
                                "name": "Identifier",
                                "src": "19161:4:1"
                              }
                            ],
                            "id": 1235,
                            "name": "MemberAccess",
                            "src": "19161:11:1"
                          }
                        ],
                        "id": 1236,
                        "name": "BinaryOperation",
                        "src": "19156:16:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1230,
                                  "type": "uint256",
                                  "value": "_i"
                                },
                                "id": 1237,
                                "name": "Identifier",
                                "src": "19176:2:1"
                              }
                            ],
                            "id": 1238,
                            "name": "UnaryOperation",
                            "src": "19174:4:1"
                          }
                        ],
                        "id": 1239,
                        "name": "ExpressionStatement",
                        "src": "19174:4:1"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                1241
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "_id",
                                  "scope": 1259,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 1240,
                                    "name": "ElementaryTypeName",
                                    "src": "19194:7:1"
                                  }
                                ],
                                "id": 1241,
                                "name": "VariableDeclaration",
                                "src": "19194:11:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1185,
                                      "type": "uint256[] memory",
                                      "value": "_ids"
                                    },
                                    "id": 1242,
                                    "name": "Identifier",
                                    "src": "19208:4:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1230,
                                      "type": "uint256",
                                      "value": "_i"
                                    },
                                    "id": 1243,
                                    "name": "Identifier",
                                    "src": "19213:2:1"
                                  }
                                ],
                                "id": 1244,
                                "name": "IndexAccess",
                                "src": "19208:8:1"
                              }
                            ],
                            "id": 1245,
                            "name": "VariableDeclarationStatement",
                            "src": "19194:22:1"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                1247
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "_value",
                                  "scope": 1259,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 1246,
                                    "name": "ElementaryTypeName",
                                    "src": "19230:7:1"
                                  }
                                ],
                                "id": 1247,
                                "name": "VariableDeclaration",
                                "src": "19230:14:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1188,
                                      "type": "uint256[] memory",
                                      "value": "_values"
                                    },
                                    "id": 1248,
                                    "name": "Identifier",
                                    "src": "19247:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1230,
                                      "type": "uint256",
                                      "value": "_i"
                                    },
                                    "id": 1249,
                                    "name": "Identifier",
                                    "src": "19255:2:1"
                                  }
                                ],
                                "id": 1250,
                                "name": "IndexAccess",
                                "src": "19247:11:1"
                              }
                            ],
                            "id": 1251,
                            "name": "VariableDeclarationStatement",
                            "src": "19230:28:1"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1046,
                                      "type": "function (uint256,address,address,uint256)",
                                      "value": "_doTransfer"
                                    },
                                    "id": 1252,
                                    "name": "Identifier",
                                    "src": "19273:11:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1241,
                                      "type": "uint256",
                                      "value": "_id"
                                    },
                                    "id": 1253,
                                    "name": "Identifier",
                                    "src": "19285:3:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1180,
                                      "type": "address",
                                      "value": "_from"
                                    },
                                    "id": 1254,
                                    "name": "Identifier",
                                    "src": "19290:5:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1182,
                                      "type": "address",
                                      "value": "_to"
                                    },
                                    "id": 1255,
                                    "name": "Identifier",
                                    "src": "19297:3:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1247,
                                      "type": "uint256",
                                      "value": "_value"
                                    },
                                    "id": 1256,
                                    "name": "Identifier",
                                    "src": "19302:6:1"
                                  }
                                ],
                                "id": 1257,
                                "name": "FunctionCall",
                                "src": "19273:36:1"
                              }
                            ],
                            "id": 1258,
                            "name": "ExpressionStatement",
                            "src": "19273:36:1"
                          }
                        ],
                        "id": 1259,
                        "name": "Block",
                        "src": "19180:140:1"
                      }
                    ],
                    "id": 1260,
                    "name": "ForStatement",
                    "src": "19135:185:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4566,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory)",
                              "value": "TransferBatch"
                            },
                            "id": 1261,
                            "name": "Identifier",
                            "src": "19335:13:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1262,
                                "name": "Identifier",
                                "src": "19349:3:1"
                              }
                            ],
                            "id": 1263,
                            "name": "MemberAccess",
                            "src": "19349:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1180,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 1264,
                            "name": "Identifier",
                            "src": "19361:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1182,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 1265,
                            "name": "Identifier",
                            "src": "19368:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1185,
                              "type": "uint256[] memory",
                              "value": "_ids"
                            },
                            "id": 1266,
                            "name": "Identifier",
                            "src": "19373:4:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1188,
                              "type": "uint256[] memory",
                              "value": "_values"
                            },
                            "id": 1267,
                            "name": "Identifier",
                            "src": "19379:7:1"
                          }
                        ],
                        "id": 1268,
                        "name": "FunctionCall",
                        "src": "19335:52:1"
                      }
                    ],
                    "id": 1269,
                    "name": "EmitStatement",
                    "src": "19330:57:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3289,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)",
                              "value": "_doSafeBatchTransferAcceptanceCheck"
                            },
                            "id": 1270,
                            "name": "Identifier",
                            "src": "19398:35:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1271,
                                "name": "Identifier",
                                "src": "19434:3:1"
                              }
                            ],
                            "id": 1272,
                            "name": "MemberAccess",
                            "src": "19434:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1180,
                              "type": "address",
                              "value": "_from"
                            },
                            "id": 1273,
                            "name": "Identifier",
                            "src": "19446:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1182,
                              "type": "address",
                              "value": "_to"
                            },
                            "id": 1274,
                            "name": "Identifier",
                            "src": "19453:3:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1185,
                              "type": "uint256[] memory",
                              "value": "_ids"
                            },
                            "id": 1275,
                            "name": "Identifier",
                            "src": "19458:4:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1188,
                              "type": "uint256[] memory",
                              "value": "_values"
                            },
                            "id": 1276,
                            "name": "Identifier",
                            "src": "19464:7:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1190,
                              "type": "bytes memory",
                              "value": "_data"
                            },
                            "id": 1277,
                            "name": "Identifier",
                            "src": "19473:5:1"
                          }
                        ],
                        "id": 1278,
                        "name": "FunctionCall",
                        "src": "19398:81:1"
                      }
                    ],
                    "id": 1279,
                    "name": "ExpressionStatement",
                    "src": "19398:81:1"
                  }
                ],
                "id": 1280,
                "name": "Block",
                "src": "18764:722:1"
              }
            ],
            "id": 1281,
            "name": "FunctionDefinition",
            "src": "18565:921:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_createOracle",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleOwner",
                      "scope": 1313,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1282,
                        "name": "ElementaryTypeName",
                        "src": "19515:7:1"
                      }
                    ],
                    "id": 1283,
                    "name": "VariableDeclaration",
                    "src": "19515:20:1"
                  }
                ],
                "id": 1284,
                "name": "ParameterList",
                "src": "19514:22:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1313,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 1285,
                        "name": "ElementaryTypeName",
                        "src": "19555:6:1"
                      }
                    ],
                    "id": 1286,
                    "name": "VariableDeclaration",
                    "src": "19555:6:1"
                  }
                ],
                "id": 1287,
                "name": "ParameterList",
                "src": "19554:8:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1289
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_oracleId",
                          "scope": 1312,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint64",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint64",
                              "type": "uint64"
                            },
                            "id": 1288,
                            "name": "ElementaryTypeName",
                            "src": "19573:6:1"
                          }
                        ],
                        "id": 1289,
                        "name": "VariableDeclaration",
                        "src": "19573:16:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "++",
                          "prefix": true,
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 379,
                              "type": "uint64",
                              "value": "maxOracleId"
                            },
                            "id": 1290,
                            "name": "Identifier",
                            "src": "19594:11:1"
                          }
                        ],
                        "id": 1291,
                        "name": "UnaryOperation",
                        "src": "19592:13:1"
                      }
                    ],
                    "id": 1292,
                    "name": "VariableDeclarationStatement",
                    "src": "19573:32:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 385,
                                  "type": "mapping(uint64 => address)",
                                  "value": "oracleOwnersMap"
                                },
                                "id": 1293,
                                "name": "Identifier",
                                "src": "19615:15:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1289,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 1294,
                                "name": "Identifier",
                                "src": "19631:9:1"
                              }
                            ],
                            "id": 1295,
                            "name": "IndexAccess",
                            "src": "19615:26:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1283,
                              "type": "address",
                              "value": "_oracleOwner"
                            },
                            "id": 1296,
                            "name": "Identifier",
                            "src": "19644:12:1"
                          }
                        ],
                        "id": 1297,
                        "name": "Assignment",
                        "src": "19615:41:1"
                      }
                    ],
                    "id": 1298,
                    "name": "ExpressionStatement",
                    "src": "19615:41:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 326,
                              "type": "function (address,uint64)",
                              "value": "OracleCreated"
                            },
                            "id": 1299,
                            "name": "Identifier",
                            "src": "19671:13:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1300,
                                "name": "Identifier",
                                "src": "19685:3:1"
                              }
                            ],
                            "id": 1301,
                            "name": "MemberAccess",
                            "src": "19685:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1289,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 1302,
                            "name": "Identifier",
                            "src": "19697:9:1"
                          }
                        ],
                        "id": 1303,
                        "name": "FunctionCall",
                        "src": "19671:36:1"
                      }
                    ],
                    "id": 1304,
                    "name": "EmitStatement",
                    "src": "19666:41:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 333,
                              "type": "function (address,uint64)",
                              "value": "OracleOwnerChanged"
                            },
                            "id": 1305,
                            "name": "Identifier",
                            "src": "19722:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1283,
                              "type": "address",
                              "value": "_oracleOwner"
                            },
                            "id": 1306,
                            "name": "Identifier",
                            "src": "19741:12:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1289,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 1307,
                            "name": "Identifier",
                            "src": "19755:9:1"
                          }
                        ],
                        "id": 1308,
                        "name": "FunctionCall",
                        "src": "19722:43:1"
                      }
                    ],
                    "id": 1309,
                    "name": "EmitStatement",
                    "src": "19717:48:1"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1287
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1289,
                          "type": "uint64",
                          "value": "_oracleId"
                        },
                        "id": 1310,
                        "name": "Identifier",
                        "src": "19782:9:1"
                      }
                    ],
                    "id": 1311,
                    "name": "Return",
                    "src": "19775:16:1"
                  }
                ],
                "id": 1312,
                "name": "Block",
                "src": "19563:235:1"
              }
            ],
            "id": 1313,
            "name": "FunctionDefinition",
            "src": "19492:306:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_doCreateCondition",
              "scope": 1494,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Start with 1, not 0, to avoid glitch with `conditionalTokens` variable.\n TODO: Use uint64 variables instead?"
                },
                "id": 1314,
                "name": "StructuredDocumentation",
                "src": "19804:127:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_customer",
                      "scope": 1345,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1315,
                        "name": "ElementaryTypeName",
                        "src": "19964:7:1"
                      }
                    ],
                    "id": 1316,
                    "name": "VariableDeclaration",
                    "src": "19964:17:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_data",
                      "scope": 1345,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 1317,
                        "name": "ElementaryTypeName",
                        "src": "19983:5:1"
                      }
                    ],
                    "id": 1318,
                    "name": "VariableDeclaration",
                    "src": "19983:18:1"
                  }
                ],
                "id": 1319,
                "name": "ParameterList",
                "src": "19963:39:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1345,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1320,
                        "name": "ElementaryTypeName",
                        "src": "20029:7:1"
                      }
                    ],
                    "id": 1321,
                    "name": "VariableDeclaration",
                    "src": "20029:7:1"
                  }
                ],
                "id": 1322,
                "name": "ParameterList",
                "src": "20028:9:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1324
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_condition",
                          "scope": 1344,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint64",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint64",
                              "type": "uint64"
                            },
                            "id": 1323,
                            "name": "ElementaryTypeName",
                            "src": "20048:6:1"
                          }
                        ],
                        "id": 1324,
                        "name": "VariableDeclaration",
                        "src": "20048:17:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "++",
                          "prefix": true,
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 381,
                              "type": "uint64",
                              "value": "maxConditionId"
                            },
                            "id": 1325,
                            "name": "Identifier",
                            "src": "20070:14:1"
                          }
                        ],
                        "id": 1326,
                        "name": "UnaryOperation",
                        "src": "20068:16:1"
                      }
                    ],
                    "id": 1327,
                    "name": "VariableDeclarationStatement",
                    "src": "20048:36:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 416,
                                  "type": "mapping(uint256 => address)",
                                  "value": "conditionOwners"
                                },
                                "id": 1328,
                                "name": "Identifier",
                                "src": "20095:15:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1324,
                                  "type": "uint64",
                                  "value": "_condition"
                                },
                                "id": 1329,
                                "name": "Identifier",
                                "src": "20111:10:1"
                              }
                            ],
                            "id": 1330,
                            "name": "IndexAccess",
                            "src": "20095:27:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1316,
                              "type": "address",
                              "value": "_customer"
                            },
                            "id": 1331,
                            "name": "Identifier",
                            "src": "20125:9:1"
                          }
                        ],
                        "id": 1332,
                        "name": "Assignment",
                        "src": "20095:39:1"
                      }
                    ],
                    "id": 1333,
                    "name": "ExpressionStatement",
                    "src": "20095:39:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 344,
                              "type": "function (address,address,uint256,bytes memory)",
                              "value": "ConditionCreated"
                            },
                            "id": 1334,
                            "name": "Identifier",
                            "src": "20150:16:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1335,
                                "name": "Identifier",
                                "src": "20167:3:1"
                              }
                            ],
                            "id": 1336,
                            "name": "MemberAccess",
                            "src": "20167:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1316,
                              "type": "address",
                              "value": "_customer"
                            },
                            "id": 1337,
                            "name": "Identifier",
                            "src": "20179:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1324,
                              "type": "uint64",
                              "value": "_condition"
                            },
                            "id": 1338,
                            "name": "Identifier",
                            "src": "20190:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1318,
                              "type": "bytes memory",
                              "value": "_data"
                            },
                            "id": 1339,
                            "name": "Identifier",
                            "src": "20202:5:1"
                          }
                        ],
                        "id": 1340,
                        "name": "FunctionCall",
                        "src": "20150:58:1"
                      }
                    ],
                    "id": 1341,
                    "name": "EmitStatement",
                    "src": "20145:63:1"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 1322
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 1324,
                          "type": "uint64",
                          "value": "_condition"
                        },
                        "id": 1342,
                        "name": "Identifier",
                        "src": "20226:10:1"
                      }
                    ],
                    "id": 1343,
                    "name": "Return",
                    "src": "20219:17:1"
                  }
                ],
                "id": 1344,
                "name": "Block",
                "src": "20038:205:1"
              }
            ],
            "id": 1345,
            "name": "FunctionDefinition",
            "src": "19936:307:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_collateralOwingBase",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralContractAddress",
                      "scope": 1434,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IERC1155",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "IERC1155",
                          "referencedDeclaration": 4654,
                          "type": "contract IERC1155"
                        },
                        "id": 1346,
                        "name": "UserDefinedTypeName",
                        "src": "20288:8:1"
                      }
                    ],
                    "id": 1347,
                    "name": "VariableDeclaration",
                    "src": "20288:35:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_collateralTokenId",
                      "scope": 1434,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1348,
                        "name": "ElementaryTypeName",
                        "src": "20333:7:1"
                      }
                    ],
                    "id": 1349,
                    "name": "VariableDeclaration",
                    "src": "20333:26:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 1434,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 1350,
                        "name": "ElementaryTypeName",
                        "src": "20369:6:1"
                      }
                    ],
                    "id": 1351,
                    "name": "VariableDeclaration",
                    "src": "20369:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_condition",
                      "scope": 1434,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1352,
                        "name": "ElementaryTypeName",
                        "src": "20395:7:1"
                      }
                    ],
                    "id": 1353,
                    "name": "VariableDeclaration",
                    "src": "20395:18:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_user",
                      "scope": 1434,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 1354,
                        "name": "ElementaryTypeName",
                        "src": "20423:7:1"
                      }
                    ],
                    "id": 1355,
                    "name": "VariableDeclaration",
                    "src": "20423:13:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_inFirstRound",
                      "scope": 1434,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1356,
                        "name": "ElementaryTypeName",
                        "src": "20446:4:1"
                      }
                    ],
                    "id": 1357,
                    "name": "VariableDeclaration",
                    "src": "20446:18:1"
                  }
                ],
                "id": 1358,
                "name": "ParameterList",
                "src": "20278:192:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_donatedPerOracleCollateralTokenId",
                      "scope": 1434,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 1359,
                        "name": "ElementaryTypeName",
                        "src": "20501:4:1"
                      }
                    ],
                    "id": 1360,
                    "name": "VariableDeclaration",
                    "src": "20501:39:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_donated",
                      "scope": 1434,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1361,
                        "name": "ElementaryTypeName",
                        "src": "20542:7:1"
                      }
                    ],
                    "id": 1362,
                    "name": "VariableDeclaration",
                    "src": "20542:16:1"
                  }
                ],
                "id": 1363,
                "name": "ParameterList",
                "src": "20500:59:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        1365
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_conditionalBalance",
                          "scope": 1433,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1364,
                            "name": "ElementaryTypeName",
                            "src": "20574:7:1"
                          }
                        ],
                        "id": 1365,
                        "name": "VariableDeclaration",
                        "src": "20574:27:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2400,
                              "type": "function (address,uint256) view returns (uint256)",
                              "value": "balanceOf"
                            },
                            "id": 1366,
                            "name": "Identifier",
                            "src": "20604:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1355,
                              "type": "address",
                              "value": "_user"
                            },
                            "id": 1367,
                            "name": "Identifier",
                            "src": "20614:5:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1353,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 1368,
                            "name": "Identifier",
                            "src": "20621:10:1"
                          }
                        ],
                        "id": 1369,
                        "name": "FunctionCall",
                        "src": "20604:28:1"
                      }
                    ],
                    "id": 1370,
                    "name": "VariableDeclarationStatement",
                    "src": "20574:58:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1372
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_totalConditionalBalance",
                          "scope": 1433,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1371,
                            "name": "ElementaryTypeName",
                            "src": "20642:7:1"
                          }
                        ],
                        "id": 1372,
                        "name": "VariableDeclaration",
                        "src": "20642:32:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1357,
                              "type": "bool",
                              "value": "_inFirstRound"
                            },
                            "id": 1373,
                            "name": "Identifier",
                            "src": "20689:13:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3356,
                                  "type": "function (uint256) view returns (uint256)",
                                  "value": "totalSupply"
                                },
                                "id": 1374,
                                "name": "Identifier",
                                "src": "20705:11:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1353,
                                  "type": "uint256",
                                  "value": "_condition"
                                },
                                "id": 1375,
                                "name": "Identifier",
                                "src": "20717:10:1"
                              }
                            ],
                            "id": 1376,
                            "name": "FunctionCall",
                            "src": "20705:23:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 412,
                                  "type": "mapping(uint64 => uint256)",
                                  "value": "usersWithdrewInFirstRound"
                                },
                                "id": 1377,
                                "name": "Identifier",
                                "src": "20731:25:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1351,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 1378,
                                "name": "Identifier",
                                "src": "20757:9:1"
                              }
                            ],
                            "id": 1379,
                            "name": "IndexAccess",
                            "src": "20731:36:1"
                          }
                        ],
                        "id": 1380,
                        "name": "Conditional",
                        "src": "20689:78:1"
                      }
                    ],
                    "id": 1381,
                    "name": "VariableDeclarationStatement",
                    "src": "20642:125:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1360,
                              "type": "uint256",
                              "value": "_donatedPerOracleCollateralTokenId"
                            },
                            "id": 1382,
                            "name": "Identifier",
                            "src": "20777:34:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC1155_$4654",
                                      "typeString": "contract IERC1155"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1071,
                                  "type": "function (contract IERC1155,uint256,uint64) pure returns (uint256)",
                                  "value": "_collateralDonatedPerOracleTokenId"
                                },
                                "id": 1383,
                                "name": "Identifier",
                                "src": "20814:34:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1347,
                                  "type": "contract IERC1155",
                                  "value": "_collateralContractAddress"
                                },
                                "id": 1384,
                                "name": "Identifier",
                                "src": "20849:26:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1349,
                                  "type": "uint256",
                                  "value": "_collateralTokenId"
                                },
                                "id": 1385,
                                "name": "Identifier",
                                "src": "20877:18:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1351,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 1386,
                                "name": "Identifier",
                                "src": "20897:9:1"
                              }
                            ],
                            "id": 1387,
                            "name": "FunctionCall",
                            "src": "20814:93:1"
                          }
                        ],
                        "id": 1388,
                        "name": "Assignment",
                        "src": "20777:130:1"
                      }
                    ],
                    "id": 1389,
                    "name": "ExpressionStatement",
                    "src": "20777:130:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1391
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_oracleShare",
                          "scope": 1433,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int128",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int128",
                              "type": "int128"
                            },
                            "id": 1390,
                            "name": "ElementaryTypeName",
                            "src": "20966:6:1"
                          }
                        ],
                        "id": 1391,
                        "name": "VariableDeclaration",
                        "src": "20966:19:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int128",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "divu",
                              "referencedDeclaration": 7723,
                              "type": "function (uint256,uint256) pure returns (int128)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9904,
                                  "type": "type(library ABDKMath64x64)",
                                  "value": "ABDKMath64x64"
                                },
                                "id": 1392,
                                "name": "Identifier",
                                "src": "20988:13:1"
                              }
                            ],
                            "id": 1393,
                            "name": "MemberAccess",
                            "src": "20988:18:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1365,
                              "type": "uint256",
                              "value": "_conditionalBalance"
                            },
                            "id": 1394,
                            "name": "Identifier",
                            "src": "21007:19:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1372,
                              "type": "uint256",
                              "value": "_totalConditionalBalance"
                            },
                            "id": 1395,
                            "name": "Identifier",
                            "src": "21028:24:1"
                          }
                        ],
                        "id": 1396,
                        "name": "FunctionCall",
                        "src": "20988:65:1"
                      }
                    ],
                    "id": 1397,
                    "name": "VariableDeclarationStatement",
                    "src": "20966:87:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1399
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_newDividendsDonated",
                          "scope": 1433,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 1398,
                            "name": "ElementaryTypeName",
                            "src": "21063:7:1"
                          }
                        ],
                        "id": 1399,
                        "name": "VariableDeclaration",
                        "src": "21063:28:1"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "-",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3356,
                                  "type": "function (uint256) view returns (uint256)",
                                  "value": "totalSupply"
                                },
                                "id": 1400,
                                "name": "Identifier",
                                "src": "21106:11:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1360,
                                  "type": "uint256",
                                  "value": "_donatedPerOracleCollateralTokenId"
                                },
                                "id": 1401,
                                "name": "Identifier",
                                "src": "21118:34:1"
                              }
                            ],
                            "id": 1402,
                            "name": "FunctionCall",
                            "src": "21106:47:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1357,
                                      "type": "bool",
                                      "value": "_inFirstRound"
                                    },
                                    "id": 1403,
                                    "name": "Identifier",
                                    "src": "21169:13:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 401,
                                              "type": "mapping(uint256 => mapping(address => uint256))",
                                              "value": "lastCollateralBalanceFirstRoundMap"
                                            },
                                            "id": 1404,
                                            "name": "Identifier",
                                            "src": "21201:34:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1360,
                                              "type": "uint256",
                                              "value": "_donatedPerOracleCollateralTokenId"
                                            },
                                            "id": 1405,
                                            "name": "Identifier",
                                            "src": "21236:34:1"
                                          }
                                        ],
                                        "id": 1406,
                                        "name": "IndexAccess",
                                        "src": "21201:70:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1355,
                                          "type": "address",
                                          "value": "_user"
                                        },
                                        "id": 1407,
                                        "name": "Identifier",
                                        "src": "21272:5:1"
                                      }
                                    ],
                                    "id": 1408,
                                    "name": "IndexAccess",
                                    "src": "21201:77:1"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 407,
                                              "type": "mapping(uint256 => mapping(address => uint256))",
                                              "value": "lastCollateralBalanceSecondRoundMap"
                                            },
                                            "id": 1409,
                                            "name": "Identifier",
                                            "src": "21298:35:1"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1360,
                                              "type": "uint256",
                                              "value": "_donatedPerOracleCollateralTokenId"
                                            },
                                            "id": 1410,
                                            "name": "Identifier",
                                            "src": "21334:34:1"
                                          }
                                        ],
                                        "id": 1411,
                                        "name": "IndexAccess",
                                        "src": "21298:71:1"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1355,
                                          "type": "address",
                                          "value": "_user"
                                        },
                                        "id": 1412,
                                        "name": "Identifier",
                                        "src": "21370:5:1"
                                      }
                                    ],
                                    "id": 1413,
                                    "name": "IndexAccess",
                                    "src": "21298:78:1"
                                  }
                                ],
                                "id": 1414,
                                "name": "Conditional",
                                "src": "21169:207:1"
                              }
                            ],
                            "id": 1415,
                            "name": "TupleExpression",
                            "src": "21168:209:1"
                          }
                        ],
                        "id": 1416,
                        "name": "BinaryOperation",
                        "src": "21106:271:1"
                      }
                    ],
                    "id": 1417,
                    "name": "VariableDeclarationStatement",
                    "src": "21063:314:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        1419
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "_multiplier",
                          "scope": 1433,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "int128",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "int128",
                              "type": "int128"
                            },
                            "id": 1418,
                            "name": "ElementaryTypeName",
                            "src": "21387:6:1"
                          }
                        ],
                        "id": 1419,
                        "name": "VariableDeclaration",
                        "src": "21387:18:1"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "int128",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_int128",
                                  "typeString": "int128"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1004,
                              "type": "function (uint64,uint256,int128) view returns (int128)",
                              "value": "_calcMultiplier"
                            },
                            "id": 1420,
                            "name": "Identifier",
                            "src": "21408:15:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1351,
                              "type": "uint64",
                              "value": "_oracleId"
                            },
                            "id": 1421,
                            "name": "Identifier",
                            "src": "21424:9:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1353,
                              "type": "uint256",
                              "value": "_condition"
                            },
                            "id": 1422,
                            "name": "Identifier",
                            "src": "21435:10:1"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1391,
                              "type": "int128",
                              "value": "_oracleShare"
                            },
                            "id": 1423,
                            "name": "Identifier",
                            "src": "21447:12:1"
                          }
                        ],
                        "id": 1424,
                        "name": "FunctionCall",
                        "src": "21408:52:1"
                      }
                    ],
                    "id": 1425,
                    "name": "VariableDeclarationStatement",
                    "src": "21387:73:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1362,
                              "type": "uint256",
                              "value": "_donated"
                            },
                            "id": 1426,
                            "name": "Identifier",
                            "src": "21470:8:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "mulu",
                                  "referencedDeclaration": 7551,
                                  "type": "function (int128,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1419,
                                      "type": "int128",
                                      "value": "_multiplier"
                                    },
                                    "id": 1427,
                                    "name": "Identifier",
                                    "src": "21481:11:1"
                                  }
                                ],
                                "id": 1428,
                                "name": "MemberAccess",
                                "src": "21481:16:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1399,
                                  "type": "uint256",
                                  "value": "_newDividendsDonated"
                                },
                                "id": 1429,
                                "name": "Identifier",
                                "src": "21498:20:1"
                              }
                            ],
                            "id": 1430,
                            "name": "FunctionCall",
                            "src": "21481:38:1"
                          }
                        ],
                        "id": 1431,
                        "name": "Assignment",
                        "src": "21470:49:1"
                      }
                    ],
                    "id": 1432,
                    "name": "ExpressionStatement",
                    "src": "21470:49:1"
                  }
                ],
                "id": 1433,
                "name": "Block",
                "src": "20564:962:1"
              }
            ],
            "id": 1434,
            "name": "FunctionDefinition",
            "src": "20249:1277:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_isInFirstRound",
              "scope": 1494,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 1449,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 1435,
                        "name": "ElementaryTypeName",
                        "src": "21557:6:1"
                      }
                    ],
                    "id": 1436,
                    "name": "VariableDeclaration",
                    "src": "21557:16:1"
                  }
                ],
                "id": 1437,
                "name": "ParameterList",
                "src": "21556:18:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1449,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1438,
                        "name": "ElementaryTypeName",
                        "src": "21598:4:1"
                      }
                    ],
                    "id": 1439,
                    "name": "VariableDeclaration",
                    "src": "21598:4:1"
                  }
                ],
                "id": 1440,
                "name": "ParameterList",
                "src": "21597:6:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1440
                    },
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967292,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 1441,
                                "name": "Identifier",
                                "src": "21621:5:1"
                              }
                            ],
                            "id": 1442,
                            "name": "MemberAccess",
                            "src": "21621:15:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 389,
                                  "type": "mapping(uint64 => uint256)",
                                  "value": "gracePeriodEnds"
                                },
                                "id": 1443,
                                "name": "Identifier",
                                "src": "21640:15:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1436,
                                  "type": "uint64",
                                  "value": "_oracleId"
                                },
                                "id": 1444,
                                "name": "Identifier",
                                "src": "21656:9:1"
                              }
                            ],
                            "id": 1445,
                            "name": "IndexAccess",
                            "src": "21640:26:1"
                          }
                        ],
                        "id": 1446,
                        "name": "BinaryOperation",
                        "src": "21621:45:1"
                      }
                    ],
                    "id": 1447,
                    "name": "Return",
                    "src": "21614:52:1"
                  }
                ],
                "id": 1448,
                "name": "Block",
                "src": "21604:69:1"
              }
            ],
            "id": 1449,
            "name": "FunctionDefinition",
            "src": "21532:141:1"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_isConditional",
              "scope": 1494,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_tokenId",
                      "scope": 1464,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1450,
                        "name": "ElementaryTypeName",
                        "src": "21703:7:1"
                      }
                    ],
                    "id": 1451,
                    "name": "VariableDeclaration",
                    "src": "21703:16:1"
                  }
                ],
                "id": 1452,
                "name": "ParameterList",
                "src": "21702:18:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 1464,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1453,
                        "name": "ElementaryTypeName",
                        "src": "21744:4:1"
                      }
                    ],
                    "id": 1454,
                    "name": "VariableDeclaration",
                    "src": "21744:4:1"
                  }
                ],
                "id": 1455,
                "name": "ParameterList",
                "src": "21743:6:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1455
                    },
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1451,
                              "type": "uint256",
                              "value": "_tokenId"
                            },
                            "id": 1456,
                            "name": "Identifier",
                            "src": "21925:8:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "int_const 18446744073709551616"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                    "typeString": "int_const 18446744073709551616"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "<<",
                                  "type": "int_const 18446744073709551616"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 1457,
                                    "name": "Literal",
                                    "src": "21937:1:1"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "3634",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 64",
                                      "value": "64"
                                    },
                                    "id": 1458,
                                    "name": "Literal",
                                    "src": "21940:2:1"
                                  }
                                ],
                                "id": 1459,
                                "name": "BinaryOperation",
                                "src": "21937:5:1"
                              }
                            ],
                            "id": 1460,
                            "name": "TupleExpression",
                            "src": "21936:7:1"
                          }
                        ],
                        "id": 1461,
                        "name": "BinaryOperation",
                        "src": "21925:18:1"
                      }
                    ],
                    "id": 1462,
                    "name": "Return",
                    "src": "21918:25:1"
                  }
                ],
                "id": 1463,
                "name": "Block",
                "src": "21750:200:1"
              }
            ],
            "id": 1464,
            "name": "FunctionDefinition",
            "src": "21679:271:1"
          },
          {
            "attributes": {
              "name": "_isOracle",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_oracleId",
                      "scope": 1480,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 1465,
                        "name": "ElementaryTypeName",
                        "src": "21975:6:1"
                      }
                    ],
                    "id": 1466,
                    "name": "VariableDeclaration",
                    "src": "21975:16:1"
                  }
                ],
                "id": 1467,
                "name": "ParameterList",
                "src": "21974:18:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_f46be02995cbd79ceedc8890ecb258596bbcfdc4657689c39b0e87ec718e3121",
                                  "typeString": "literal_string \"Not the oracle owner.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1468,
                            "name": "Identifier",
                            "src": "22003:7:1"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 385,
                                      "type": "mapping(uint64 => address)",
                                      "value": "oracleOwnersMap"
                                    },
                                    "id": 1469,
                                    "name": "Identifier",
                                    "src": "22011:15:1"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1466,
                                      "type": "uint64",
                                      "value": "_oracleId"
                                    },
                                    "id": 1470,
                                    "name": "Identifier",
                                    "src": "22027:9:1"
                                  }
                                ],
                                "id": 1471,
                                "name": "IndexAccess",
                                "src": "22011:26:1"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4294967281,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 1472,
                                    "name": "Identifier",
                                    "src": "22041:3:1"
                                  }
                                ],
                                "id": 1473,
                                "name": "MemberAccess",
                                "src": "22041:10:1"
                              }
                            ],
                            "id": 1474,
                            "name": "BinaryOperation",
                            "src": "22011:40:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "4e6f7420746865206f7261636c65206f776e65722e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"Not the oracle owner.\"",
                              "value": "Not the oracle owner."
                            },
                            "id": 1475,
                            "name": "Literal",
                            "src": "22053:23:1"
                          }
                        ],
                        "id": 1476,
                        "name": "FunctionCall",
                        "src": "22003:74:1"
                      }
                    ],
                    "id": 1477,
                    "name": "ExpressionStatement",
                    "src": "22003:74:1"
                  },
                  {
                    "id": 1478,
                    "name": "PlaceholderStatement",
                    "src": "22087:1:1"
                  }
                ],
                "id": 1479,
                "name": "Block",
                "src": "21993:102:1"
              }
            ],
            "id": 1480,
            "name": "ModifierDefinition",
            "src": "21956:139:1"
          },
          {
            "attributes": {
              "name": "checkIsConditional",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "_tokenId",
                      "scope": 1493,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1481,
                        "name": "ElementaryTypeName",
                        "src": "22129:7:1"
                      }
                    ],
                    "id": 1482,
                    "name": "VariableDeclaration",
                    "src": "22129:16:1"
                  }
                ],
                "id": 1483,
                "name": "ParameterList",
                "src": "22128:18:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_d3276605e25a6784a1b2fd62993b736ac7e631e0a761b645ed154784a21e0329",
                                  "typeString": "literal_string \"It's not your conditional.\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 1484,
                            "name": "Identifier",
                            "src": "22157:7:1"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1464,
                                  "type": "function (uint256) pure returns (bool)",
                                  "value": "_isConditional"
                                },
                                "id": 1485,
                                "name": "Identifier",
                                "src": "22165:14:1"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1482,
                                  "type": "uint256",
                                  "value": "_tokenId"
                                },
                                "id": 1486,
                                "name": "Identifier",
                                "src": "22180:8:1"
                              }
                            ],
                            "id": 1487,
                            "name": "FunctionCall",
                            "src": "22165:24:1"
                          },
                          {
                            "attributes": {
                              "hexvalue": "49742773206e6f7420796f757220636f6e646974696f6e616c2e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"It's not your conditional.\"",
                              "value": "It's not your conditional."
                            },
                            "id": 1488,
                            "name": "Literal",
                            "src": "22191:28:1"
                          }
                        ],
                        "id": 1489,
                        "name": "FunctionCall",
                        "src": "22157:63:1"
                      }
                    ],
                    "id": 1490,
                    "name": "ExpressionStatement",
                    "src": "22157:63:1"
                  },
                  {
                    "id": 1491,
                    "name": "PlaceholderStatement",
                    "src": "22230:1:1"
                  }
                ],
                "id": 1492,
                "name": "Block",
                "src": "22147:91:1"
              }
            ],
            "id": 1493,
            "name": "ModifierDefinition",
            "src": "22101:137:1"
          }
        ],
        "id": 1494,
        "name": "ContractDefinition",
        "src": "1089:21151:1"
      }
    ],
    "id": 1495,
    "name": "SourceUnit",
    "src": "46:22195:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.6+commit.7338295f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2021-06-09T23:19:50.002Z",
  "devdoc": {
    "author": "Victor Porton One can also donate/bequest a smart wallet (explain how). We have two kinds of ERC-1155 token IDs: - conditional tokens: numbers < 2**64 - a combination of a collateral contract address and collateral token ID   (a counter of donated amount of collateral tokens, don't confuse with collateral tokens themselves) Inheriting from here don't forget to create `createOracle()` external method.",
    "events": {
      "CollateralWithdrawn(address,uint256,uint64,address,uint256)": {
        "params": {
          "amount": "The amount withdrawn.",
          "collateralTokenId": "The ERC-1155 token ID of the collateral.",
          "contractAddress": "The ERC-1155 contract of the collateral token.",
          "oracleId": "The oracle ID for which withdrawal is done.",
          "user": "Who has withdrawn."
        }
      },
      "ConditionCreated(address,address,uint256,bytes)": {
        "params": {
          "condition": "The created condition ID.",
          "customer": "The owner of the condition.",
          "sender": "Who created the condition"
        }
      },
      "DonateCollateral(address,uint256,address,uint256,address,bytes)": {
        "params": {
          "amount": "The amount donated.",
          "collateralContractAddress": "The ERC-1155 contract of the donated token.",
          "collateralTokenId": "The ERC-1155 ID of the donated token.",
          "data": "Additional transaction data.",
          "sender": "Who donated.",
          "to": "Whose account the donation is assigned to."
        }
      },
      "OracleCreated(address,uint64)": {
        "params": {
          "oracleId": "The ID of the created oracle."
        }
      },
      "OracleFinished(uint64)": {
        "params": {
          "oracleId": "The oracle ID."
        }
      },
      "OracleOwnerChanged(address,uint64)": {
        "params": {
          "oracleId": "The ID of the oracle.",
          "oracleOwner": "Who created an oracle"
        }
      }
    },
    "kind": "dev",
    "methods": {
      "balanceOf(address,uint256)": {
        "details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
      },
      "balanceOfBatch(address[],uint256[])": {
        "details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
      },
      "changeOracleOwner(address,uint64)": {
        "params": {
          "_newOracleOwner": "New owner.",
          "_oracleId": "The oracle whose owner to change."
        }
      },
      "collateralOwing(address,uint256,uint64,uint256,address)": {
        "params": {
          "_collateralContractAddress": "The ERC-1155 collateral token contract.",
          "_collateralTokenId": "The ERC-1155 collateral token ID.",
          "_condition": "The condition (the original receiver of a conditional token).",
          "_oracleId": "From which oracle's \"account\" to withdraw.",
          "_user": "The user to which we may owe."
        }
      },
      "constructor": {
        "params": {
          "_uri": "Our ERC-1155 tokens description URI."
        }
      },
      "donate(address,uint256,uint64,uint256,address,address,bytes)": {
        "params": {
          "_amount": "The amount to donate.",
          "_collateralContractAddress": "The collateral ERC-1155 contract address.",
          "_collateralTokenId": "The collateral ERC-1155 token ID.",
          "_data": "Additional transaction data.",
          "_from": "From whom to take the donation.",
          "_oracleId": "The oracle ID to whose ecosystem to donate to.",
          "_to": "On whose account the donation amount is assigned."
        }
      },
      "gatherDeFiProfit(address,uint256,uint64,bytes)": {
        "params": {
          "_collateralContractAddress": "The collateral ERC-1155 contract address.",
          "_collateralTokenId": "The collateral ERC-1155 token ID.",
          "_data": "Additional transaction data.",
          "_oracleId": "The oracle ID to whose ecosystem to donate to."
        }
      },
      "gracePeriodEnd(uint64)": {
        "params": {
          "_oracleId": "For which oracle."
        }
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC1155-isApprovedForAll}."
      },
      "isConditionalLocked(address,uint256)": {
        "params": {
          "_condition": "The condition (the original receiver of a conditional token).",
          "_user": "Querying if locked for this user."
        }
      },
      "onERC721Received(address,address,uint256,bytes)": {
        "details": "See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`."
      },
      "oracleOwner(uint64)": {
        "params": {
          "_oracleId": "The oracle ID."
        }
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC1155-setApprovalForAll}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas."
      },
      "totalSupply(uint256)": {
        "params": {
          "id": "Token ID."
        },
        "returns": {
          "_0": "Total supply."
        }
      },
      "uri(uint256)": {
        "details": "See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."
      },
      "withdrawCollateral(address,uint256,uint64,uint256,bytes)": {
        "params": {
          "_collateralContractAddress": "The ERC-1155 collateral token contract.",
          "_collateralTokenId": "The ERC-1155 collateral token ID.",
          "_condition": "The condition.",
          "_data": "Additional data. Notes: - It is made impossible to withdraw somebody's other collateral, as otherwise we can't mark non-active   accounts in grace period. - We can't transfer to somebody other than `msg.sender` because anybody can transfer   (needed for multi-level transfers). - After this function is called, it becomes impossible to transfer the corresponding conditional token   of `msg.sender` (to prevent its repeated withdrawal).",
          "_oracleId": "From which oracle's \"account\" to withdraw."
        }
      }
    },
    "title": "A base class to lock collaterals and distribute them proportional to an oracle result.",
    "version": 1
  },
  "userdoc": {
    "events": {
      "CollateralWithdrawn(address,uint256,uint64,address,uint256)": {
        "notice": "Emitted when collateral is withdrawn."
      },
      "ConditionCreated(address,address,uint256,bytes)": {
        "notice": "Emitted when an oracle owner is set."
      },
      "DonateCollateral(address,uint256,address,uint256,address,bytes)": {
        "notice": "Emitted when a collateral is donated."
      },
      "OracleCreated(address,uint64)": {
        "notice": "Emitted when an oracle is created."
      },
      "OracleFinished(uint64)": {
        "notice": "Emitted when an oracle is marked as having finished its work."
      },
      "OracleOwnerChanged(address,uint64)": {
        "notice": "Emitted when an oracle owner is set."
      }
    },
    "kind": "user",
    "methods": {
      "changeOracleOwner(address,uint64)": {
        "notice": "Modify the owner of an oracle."
      },
      "collateralOwing(address,uint256,uint64,uint256,address)": {
        "notice": "Calculate how much collateral is owed to a user."
      },
      "constructor": {
        "notice": "Constructor."
      },
      "donate(address,uint256,uint64,uint256,address,address,bytes)": {
        "notice": "Donate funds in an ERC-1155 token. First, the collateral token need to be approved to be spent by this contract from the address `_from`. It also mints a token (with a different ID), that counts donations in that token."
      },
      "gatherDeFiProfit(address,uint256,uint64,bytes)": {
        "notice": "Gather a DeFi profit of a token previous donated to this contact."
      },
      "gracePeriodEnd(uint64)": {
        "notice": "Retrieve the end of the grace period."
      },
      "isConditionalLocked(address,uint256)": {
        "notice": "Are transfers of a conditinal token locked? This is used to prevent its repeated withdrawal."
      },
      "isOracleFinished(uint64)": {
        "notice": "Is the oracle marked as having finished its work? `oracleId` is the oracle ID."
      },
      "oracleOwner(uint64)": {
        "notice": "Get the oracle owner."
      },
      "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
        "notice": "An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming each oracle."
      },
      "safeTransferFrom(address,address,uint256,uint256,bytes)": {
        "notice": "An ERC-1155 function. We disallow transfers of conditional tokens after redeem `_to` prevent \"gathering\" them before redeeming each oracle."
      },
      "totalSupply(uint256)": {
        "notice": "Total supply of a token (conforms to `IERC1155Views`)."
      },
      "updateGracePeriodEnds(uint64,uint256)": {
        "notice": "Set the end time of the grace period. The first withdrawal can be done *only* during the grace period. The second withdrawal can be done after the end of the grace period and only if the first withdrawal was done. The intention of the grace period is to check which of users are active (\"alive\")."
      },
      "usersWithdrewInFirstRound(uint64)": {
        "notice": "Mapping (oracleId => amount user withdrew in first round) (see `docs/Calculations.md`)."
      },
      "withdrawCollateral(address,uint256,uint64,uint256,bytes)": {
        "notice": "Transfer to `msg.sender` the collateral ERC-1155 token. The amount transferred is proportional to the score of `_condition` by the oracle."
      }
    },
    "version": 1
  }
}