{
  "contractName": "ProxySafeICT",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "checkpointId",
          "type": "uint256"
        }
      ],
      "name": "CheckpointCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "assetId",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "assetRegistry",
      "outputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "holder",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "balanceOfAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "payee",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "depositId",
          "type": "bytes32"
        }
      ],
      "name": "calculateClaimOnDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "depositId",
          "type": "bytes32"
        }
      ],
      "name": "claimDeposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "depositId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "scheduledFor",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "onlySignaled",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "createDeposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dataRegistry",
      "outputs": [
        {
          "internalType": "contract DataRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "decodeEvent",
      "outputs": [
        {
          "internalType": "enum EventType",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "deposits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "scheduledFor",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "claimedAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalAmountSignaled",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "onlySignaled",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        }
      ],
      "name": "encodeEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "depositId",
          "type": "bytes32"
        }
      ],
      "name": "getDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "scheduledFor",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "claimedAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalAmountSignaled",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "onlySignaled",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "checkpointId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "start",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "end",
          "type": "uint256"
        }
      ],
      "name": "getHolderSubsetAt",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "checkpointId",
          "type": "uint256"
        }
      ],
      "name": "getHoldersAt",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNumberOfHolders",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "holder",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "depositId",
          "type": "bytes32"
        }
      ],
      "name": "hasClaimedDeposit",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "holderCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "marketObjectCode",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "depositId",
          "type": "bytes32"
        },
        {
          "internalType": "address payable[]",
          "name": "payees",
          "type": "address[]"
        }
      ],
      "name": "pushFundsToAddresses",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftCalcTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftEventTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "depositId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "signalAmount",
          "type": "uint256"
        }
      ],
      "name": "signalAmountForDeposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalAmountSignaledByHolder",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "name": "totalSupplyAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "depositId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "updateDepositAmount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IAssetRegistry",
          "name": "_assetRegistry",
          "type": "address"
        },
        {
          "internalType": "contract DataRegistry",
          "name": "_dataRegistry",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_marketObjectCode",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_assetId",
          "type": "bytes32"
        }
      ],
      "name": "setAssetId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "createDepositForEvent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "fetchDepositAmountForEvent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "registerForRedemption",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "cancelRegistrationForRedemption",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.11+commit.5ef660b1\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"checkpointId\",\"type\":\"uint256\"}],\"name\":\"CheckpointCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"assetRegistry\",\"outputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"balanceOfAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payee\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"depositId\",\"type\":\"bytes32\"}],\"name\":\"calculateClaimOnDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"cancelRegistrationForRedemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositId\",\"type\":\"bytes32\"}],\"name\":\"claimDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"scheduledFor\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"onlySignaled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"createDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"createDepositForEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dataRegistry\",\"outputs\":[{\"internalType\":\"contract DataRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"decodeEvent\",\"outputs\":[{\"internalType\":\"enum EventType\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"scheduledFor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"claimedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAmountSignaled\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"onlySignaled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"scheduleTime\",\"type\":\"uint256\"}],\"name\":\"encodeEvent\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"}],\"name\":\"fetchDepositAmountForEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositId\",\"type\":\"bytes32\"}],\"name\":\"getDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"scheduledFor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"claimedAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAmountSignaled\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"onlySignaled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum EventType\",\"name\":\"eventType\",\"type\":\"uint8\"}],\"name\":\"getEpochOffset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"checkpointId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"getHolderSubsetAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"checkpointId\",\"type\":\"uint256\"}],\"name\":\"getHoldersAt\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberOfHolders\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"depositId\",\"type\":\"bytes32\"}],\"name\":\"hasClaimedDeposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"holderCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAssetRegistry\",\"name\":\"_assetRegistry\",\"type\":\"address\"},{\"internalType\":\"contract DataRegistry\",\"name\":\"_dataRegistry\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_marketObjectCode\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"marketObjectCode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositId\",\"type\":\"bytes32\"},{\"internalType\":\"address payable[]\",\"name\":\"payees\",\"type\":\"address[]\"}],\"name\":\"pushFundsToAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_event\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"registerForRedemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_assetId\",\"type\":\"bytes32\"}],\"name\":\"setAssetId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftCalcTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"enum BusinessDayConvention\",\"name\":\"convention\",\"type\":\"uint8\"},{\"internalType\":\"enum Calendar\",\"name\":\"calendar\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"maturityDate\",\"type\":\"uint256\"}],\"name\":\"shiftEventTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"signalAmount\",\"type\":\"uint256\"}],\"name\":\"signalAmountForDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalAmountSignaledByHolder\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"totalSupplyAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"depositId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"updateDepositAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"balanceOfAt(address,uint256)\":{\"params\":{\"holder\":\"Holder to query balance for\",\"timestamp\":\"Timestamp of the balance checkpoint\"}},\"calculateClaimOnDeposit(address,bytes32)\":{\"params\":{\"depositId\":\"Id of the deposit\",\"payee\":\"Address of holder\"},\"returns\":{\"_0\":\"withdrawable amount\"}},\"cancelRegistrationForRedemption(bytes32)\":{\"params\":{\"_event\":\"encoded redemption to cancel the registration for\"}},\"claimDeposit(bytes32)\":{\"params\":{\"depositId\":\"Id of the deposit\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDeposit(bytes32)\":{\"returns\":{\"amount\":\"amount\",\"claimedAmount\":\"claimedAmount\",\"onlySignaled\":\"onlySignaled\",\"scheduledFor\":\"scheduledFor\",\"token\":\"token\",\"totalAmountSignaled\":\"totalAmountSignaled\"}},\"getHoldersAt(uint256)\":{\"params\":{\"checkpointId\":\"Checkpoint id at which holder list is to be populated\"},\"returns\":{\"_0\":\"list of holders\"}},\"hasClaimedDeposit(address,bytes32)\":{\"params\":{\"depositId\":\"Id of the deposit\"},\"returns\":{\"_0\":\"bool whether the address has claimed\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"initialize(address,address,bytes32,address)\":{\"details\":\"\\\"constructor\\\" to be called on deployment\"},\"initialize(string,string)\":{\"details\":\"\\\"constructor\\\" to be called on deployment\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pushFundsToAddresses(bytes32,address[])\":{\"params\":{\"depositId\":\"Id of the deposit\",\"payees\":\"Addresses to which to push the funds\"}},\"registerForRedemption(bytes32,uint256)\":{\"params\":{\"_event\":\"encoded redemption to register for\",\"amount\":\"amount of tokens to redeem\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"totalSupplyAt(uint256)\":{\"params\":{\"timestamp\":\"Timestamp of the totalSupply checkpoint\"},\"returns\":{\"_0\":\"uint256\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOfAt(address,uint256)\":{\"notice\":\"Queries the balances of a holder at a specific timestamp\"},\"calculateClaimOnDeposit(address,bytes32)\":{\"notice\":\"Calculate claimable amount of a deposit for a given address\"},\"claimDeposit(bytes32)\":{\"notice\":\"Withdraws the holders share of funds of the deposit\"},\"getDeposit(bytes32)\":{\"notice\":\"Returns params of a deposit\"},\"getEpochOffset(uint8)\":{\"notice\":\"Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp\"},\"getHoldersAt(uint256)\":{\"notice\":\"returns an array of holders with non zero balance at a given checkpoint\"},\"hasClaimedDeposit(address,bytes32)\":{\"notice\":\"Checks whether an address has withdrawn funds for a deposit\"},\"initialize(address,address,bytes32,address)\":{\"notice\":\"Initialize a new instance storage\"},\"initialize(string,string)\":{\"notice\":\"Initialize a new instance storage\"},\"pushFundsToAddresses(bytes32,address[])\":{\"notice\":\"Issuer can push funds to provided addresses\"},\"shiftCalcTime(uint256,uint8,uint8,uint256)\":{\"notice\":\"Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided.\"},\"totalSupplyAt(uint256)\":{\"notice\":\"Queries totalSupply at a specific timestamp\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/ProxySafeICT.sol\":\"ProxySafeICT\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/AccessControl/IAccessControl.sol\":{\"keccak256\":\"0xbbe1aada0583637e5ae8b0a09ae59d629c1da70bde5a3f291f5f0ed42440d091\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36ab01d00a9ebd59822247cdc7bee3c70af062e2c9408e8f80e1656fc9d2761c\",\"dweb:/ipfs/QmSQzma4M2TDZup2dERJi368F8z9UQQ1zyUsq8e41hgg2F\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol\":{\"keccak256\":\"0xe5b75a0d1ff75775c43bdd46fb55d0f28800b311a48f7064acda7d35036bf738\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://652d2218a7190f85e00372a5ade97895fc303b909f3b63398dbcfabf634adda9\",\"dweb:/ipfs/QmVV4Su9V2K4mYbquft5rqv7SSyR95RcHgU4E2iAceKW1j\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IBaseRegistry.sol\":{\"keccak256\":\"0x62682585e8feaa25478d9aebe2f43861e36d67604adfd2dc23da8260a2f5728f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2ecdf3ac27c4425fee720cb2a744304678cac563d89cb21e43f8302a4864f013\",\"dweb:/ipfs/QmSL8qM6bytA7eN1cuBbBy3B5rNvmyALGExeGXUApTeA5N\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Ownership/IOwnershipRegistry.sol\":{\"keccak256\":\"0x6e7d79031d9ab6d8366e767e96bbef6282cd9727956b0f6a70b70ba57799afc7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d2e1e72ffc43ce52bb06eb5c5fa61d9dc14d40c33ac3035e5d881e0365aa722\",\"dweb:/ipfs/QmaQ1SqtsZtPHjtdSbGTwSJvRPu36d7S4ijyfUMYcto5uJ\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Schedule/IScheduleRegistry.sol\":{\"keccak256\":\"0xe7e24ae32f711c7b4b60d1160cb085b4ba047ff07ccea2df3b4bf120c2385ed6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ea4f8bbb0a60f0b9484307c3ce880005e1d4e39c42fd07ca16dc263001584cdb\",\"dweb:/ipfs/Qmdo1tuJ93asEMGq74g38vxfRMmoxXogZZczHjuef2Mx8R\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/State/IStateRegistry.sol\":{\"keccak256\":\"0x1008f735ba366f9a638199d8ec4fa31b192c8745491527278d97717426d6d609\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://decc19c372fbefee7c369678114861def1c748748154966e2ee5e11e690b9039\",\"dweb:/ipfs/QmXjZhoNak7uUmYZMj7sAdijzsqLpDoh6T2bYcRDVgX6z6\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/Terms/ITermsRegistry.sol\":{\"keccak256\":\"0x62947ddd2743f2852e53dc10c9ce4a326e764e0bbffd92df216fcb32a0b0e3cd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b90268d7fb6e7d133b5e9d008be62fe55d19930088ac547b15d31dcb8ab9ecd\",\"dweb:/ipfs/QmZGE66r4ML3msBMCtDbhsdVN3RxmDvnCMDkTn9mMfouqN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol\":{\"keccak256\":\"0x0c583f37b9c5b8b53647ab38f836eec5731f1a1d7896def29ee26916888539f6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b7d5b224d8d7fd4e59940f511054007c5368de4479e7ede3962cdaef817ac36f\",\"dweb:/ipfs/QmVr8rhMJPhCqKp289qvNvJhdFZAvWjh5scvWjNKRhcCeM\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistryStorage.sol\":{\"keccak256\":\"0xb33c89925a9e7c267d96d1461fce5839c6cef7f0365bf62a507a839b9cd925e7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7ea1957775722da928f53d4263162ebb94ffb5148d6e75dd815a2906a62e1e46\",\"dweb:/ipfs/QmXTRFKAC24PR9pqfHW2W73jsHaFqXdjjahqPJjKpZSLRk\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/IDataRegistry.sol\":{\"keccak256\":\"0x303e7925666252d8394929acfd8d32013b2225b202bb2fb873a4b9a257d324db\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://982d93073ffd66715b02953f989744ac3acc9556c9b41cf522914ec0e552b7b0\",\"dweb:/ipfs/QmdNoYVj3yQfkWGXNcueKmQgDs6kVyPvNzGduJvQscxAoR\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/SharedTypes.sol\":{\"keccak256\":\"0x5a918fdefe9bd357255bffcf75d325f0d23ccf7074533f8d6a80a62bfd60893e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c5fc68f47deab5b0cc572a8a1f7dba997e5a8bb13292ce3e4ee29540a3b1fd7\",\"dweb:/ipfs/QmeqcqcDYsgvbBH8XrHzURMuz9jQLEf4F2i5M59wYMCxgt\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/Checkpoint/Checkpoint.sol\":{\"keccak256\":\"0xece3763697d7adc64207d921125eefa45f1ecf0e66d372a985efa5279b16e7bb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d5a3fdc8bd568e92f6f0c8f46bc2e3727911e580f9d3f3625b01af5ef8913710\",\"dweb:/ipfs/QmXXSt5oq8oxYXVHeXGnawCUDgQ1cA7zhsbz4VDYd6FnFN\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/Checkpoint/CheckpointStorage.sol\":{\"keccak256\":\"0x7e5c553e1ff9d469c2f732f34ea25fa709e2711ff2e2259ff1472bb89208e558\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c2f3706e10d710c658700fc26a7be1ee31b2a982f1f7856e559f3b5ca088ea6\",\"dweb:/ipfs/QmTcuAa1M8BqVBKaKubrf7RunMC99uzmmKK1YRWqNFwnpY\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/CheckpointedToken/CheckpointedToken.sol\":{\"keccak256\":\"0x163e8304a5552d583f78fa902525fe768d8edd24c54f3d0e65d7cf2c05fe57b8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://fe7a580fe4a241a5057e945d09ca4bbe0298ab0e11477b89fd5d353031b83364\",\"dweb:/ipfs/QmSh4P7ysYwmVvmnMT1GwnJy9sghfRJGaBY4nXbLEuvVDW\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/CheckpointedToken/CheckpointedTokenStorage.sol\":{\"keccak256\":\"0x5dc109b8a927dd9e7c2dd14c7546d8b791490a3b7b129b68987ee47fc2894513\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e8fccad6b9cf0375093cdc024014ee1829d05e8c1c8858e17771d6d1728998a\",\"dweb:/ipfs/QmUnCaQBp927wwLm5XmLpUbpQoLDKgDDDmq3WZ8avQzWBc\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/DepositAllocater.sol\":{\"keccak256\":\"0xdb56d7ae844407da9cecf68607d1c3d44242fb8c3a332e9a0a984eb3b08da04e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0d5b44879663c7de0d7e0493b014f0ae5b9b6c8e2d1dba6cf2c017d738389a8f\",\"dweb:/ipfs/Qmb2atkghZ9sM67Lknvr5JXjiN7GFJr9shzH3FiMC3Wpxu\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/DepositAllocaterStorage.sol\":{\"keccak256\":\"0xa1759a7544fae68f08463eeee61c0242f92ebc1d81a093c16168d003cb6a2b27\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://858e360a4cb03b68745940e54c6bc313a700459d60dd47ac84d280374af6c68f\",\"dweb:/ipfs/QmZbUJgyeRpmce467ZJVBRgk7goXxpnUiiEiDdyPK2A6ek\"]},\"/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/ProxySafeICT.sol\":{\"keccak256\":\"0xd2633ec83997b3bd0c66451910f8ba3113f99d91ea311eadebc77f1395969b8f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c20a904878edab04cb3771bda6dd502c2037ef5f29eeef930129c060966f7d3\",\"dweb:/ipfs/QmZmEi5V6eE8HSyGPJ1fnWCvpF2DNULnoRkNHtuzhgi4QL\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSConstants.sol\":{\"keccak256\":\"0xd7588866afdab6298dd5b64c5fe0ca63230236538d711932e7a5a17928d1226b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2a0678d5f895239119f463a3ae8a58c5c27b872c91db1cd4253ce5866481c6cd\",\"dweb:/ipfs/QmPXsMXFf1Qar8JCnKTL6Nizf63sZEQQt7XosrdeEnG2CE\"]},\"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\":{\"keccak256\":\"0x4374a4c79ef02bb008994431870badedd532d09639fef8d7378039faee88d4dd\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0d32929c237f8d04ff4117611292f874bb1dd785b8ec94c04389d608c11481c\",\"dweb:/ipfs/QmVu3awVGWDvqMCjPhmzcCQCRg4VNr5XxcDRWDECTr17TV\"]},\"@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol\":{\"keccak256\":\"0xb67309595d06a957324467896ed9ece5db6c064a40733528d2405593d083f358\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a77e96b548901c4ee87943de5a7093d178bffe1daa72b6e303ddc1fac93f5173\",\"dweb:/ipfs/QmctKP5Hp7B4YtzzC5q3cRJJiiPS4a5US6vpHDb94paaFT\"]},\"@atpar/actus-solidity/contracts/Core/SignedMath.sol\":{\"keccak256\":\"0x179745be164f4540d848a50eeb8aea4ec3a0ddabc50f4c122c41ec0463e849c7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e1088b178902de60c611c2dffd2c8943cc7b68988c9083936b760864775db7da\",\"dweb:/ipfs/QmV9XYTU6a8nPzoJv9FjRV4Z2rfbymGGARmzka57ydD1FG\"]},\"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\":{\"keccak256\":\"0x9995f89d4c5981ed389e941f578414eb901a4fde0b2eb5d815a43d86a9f53d98\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc3b3a4f33554f80e19328158ff913d700ff8133d08f434b33a846852cb927dd\",\"dweb:/ipfs/QmawYPv9PguBqrFN5YquvUvbYC2MdtTC4Zkyj3uGxiieHW\"]},\"@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol\":{\"keccak256\":\"0xb549e34dc631989f8aae1b8a397bf77598b8c018860645a627d2929229543a79\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8a0ef5e2ad69ef87b9fc2beeed66336b3857c576efb9833b40a1be2ee35786fc\",\"dweb:/ipfs/QmT33MWqdjecGoPj8Js6a5fgESTcGW5vbQqYamKRDJZnhS\"]},\"@atpar/actus-solidity/contracts/external/BokkyPooBah/BokkyPooBahsDateTimeLibrary.sol\":{\"keccak256\":\"0x679533db9ba3257086015c0435c7d0de7a0a2f352a9de725db294e3f42c17391\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c586a5d8d9a654840c3655ccd4e47458d1e781c7542ec6fd2c29638b0dee57d\",\"dweb:/ipfs/QmeoQpnTMU4pa4iwKJcKmbNm7P54UCxux2G9rJyTCyq8GZ\"]},\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0xe81686511d62f18b2d9c693c2c94c0a789c690de63aa90e15451ebf65c5bfd3e\",\"urls\":[\"bzz-raw://1332ee1d2b096456bf2e5795b5871d0fed47be6a31c9a2f2cef9206a299565ea\",\"dweb:/ipfs/Qmdu1847Y4UL3gTjbLUManMGfxYEoyGPSodM3Br89SKzwx\"]},\"@openzeppelin/contracts-ethereum-package/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f\",\"dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7\"]},\"@openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol\":{\"keccak256\":\"0x04a69a78363214b4e3055db8e620bed222349f0c81e9d1cbe769eb849b69b73f\",\"urls\":[\"bzz-raw://b3115459376196d6c2c3817439c169d9b052b27b70e8ee2e28963cda760736da\",\"dweb:/ipfs/QmXaNF5rmcDSAzBiFMQjf979qb9xNXqD9eZtgo4uM9VEis\"]},\"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x04d34b3cd5677bea25f8dfceb6dec0eaa071d4d4b789a43f13fe0c415ba4c296\",\"urls\":[\"bzz-raw://e7e8b526a6839e5ba14f0d23a830387fec47f7043ce01d42c9f285b709a9d080\",\"dweb:/ipfs/QmXmhhFmX5gcAvVzNiDPAGA35iHMPNaYtQkACswRHBVTNw\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x9c2d859bc9de93ced0875d226598e56067fe4d6b2dde0e1fd53ca60fa9603db0\",\"urls\":[\"bzz-raw://5df1baba4ea42a94d0e0aed4a87271369ef2cd54d86e89cab7ef1428ff387210\",\"dweb:/ipfs/QmV5ErriAFQWqEPAfWhJ6DxmujH6vBPB3F5Breaq9vUWGu\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x6cc1cb934a3ac2137a7dcaed018af9e235392236ceecfd3687259702b9c767ad\",\"urls\":[\"bzz-raw://0055fa88138cd1c3c6440370f8580f85857f8fe9dec41c99af9eafbeb8d9c3ce\",\"dweb:/ipfs/QmX1xDh8vwGLLCH8ti45eXjQ7Wcxv1FEGTR3jkFnd5Nv6F\"]},\"@openzeppelin/contracts-ethereum-package/contracts/utils/Address.sol\":{\"keccak256\":\"0x5f7da58ee3d9faa9b8999a93d49c8ff978f1afc88ae9bcfc6f9cbb44da011c2b\",\"urls\":[\"bzz-raw://4f089d954b3ecaa26949412fe63e9a184b056562c6c13dd4a0529a5d9a2e685a\",\"dweb:/ipfs/QmVK5iCNAMcEJQxT59bsC5E53JQASDQPU6khHox3d5ZXCn\"]},\"@openzeppelin/contracts-ethereum-package/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x75a600e5ed3443ecf3b7fb636064b404b358317fd6cd91e70e3ca5cf2370e882\",\"urls\":[\"bzz-raw://5916e664a17b3fdbdc311579705bad74f433769c340346c371db2ecfa8427d24\",\"dweb:/ipfs/QmYNLuiPo4iRPWFJriVgqPELRUrFBFLpp5YnMMmqQ8zhBh\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0xc6fb4c940628ca2cde81ed6d20fc9ff456b60f55aafef555f43a86a2dda7ad9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f17dda58954a84ffca3d53c0b6435bad7f5c42ab3a9c4603db2f1aef00edae4e\",\"dweb:/ipfs/QmehW99QmmzKvnqTsprsApDF7mK2JVo6nnrZ47znhLTFjh\"]},\"openzeppelin-solidity/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50614b96806100206000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c8063715018a611610167578063a31ee5b0116100ce578063dd62ed3e11610087578063dd62ed3e146105ac578063e05a66e0146105bf578063e726d680146105d2578063ec15b9ca146105e5578063f2fde38b146105f8578063f5586e051461060b57610295565b8063a31ee5b014610545578063a39c1d6b14610558578063a457c2d714610560578063a9059cbb14610573578063a999b73f14610586578063c20662c31461059957610295565b8063811322fb11610120578063811322fb146104e75780638da5cb5b146104fa5780638e17e4a31461050f57806395d89b4114610522578063979d7e861461052a578063981b24d01461053257610295565b8063715018a61461046b578063725400031461047357806376fa0e46146104945780637a22402c146104a75780637a86983f146104ba5780637bb7a8b9146104df57610295565b8063308feec31161020b57806344de240a116101c457806344de240a146104045780634cd88b761461040c5780634ee2cd7e1461041f578063520fdd22146104325780635e5858891461044557806370a082311461045857610295565b8063308feec31461037c578063313ce56714610384578063318019251461039957806339509351146103b95780633d4dff7b146103cc57806340c10f19146103f157610295565b80631cb54d491161025d5780631cb54d491461030a5780632069daeb1461031d57806323b872dd1461033057806326158a8b146103435780632839a18414610356578063302424ea1461036957610295565b806303952a7a1461029a57806306fdde03146102af578063095ea7b3146102cd57806318160ddd146102ed5780631aab9a9f14610302575b600080fd5b6102ad6102a8366004613bd7565b61061e565b005b6102b7610846565b6040516102c49190613fc1565b60405180910390f35b6102e06102db366004613a94565b6108dd565b6040516102c49190613e9c565b6102f56108fb565b6040516102c49190613ea7565b6102f5610901565b6102ad610318366004613bd7565b610907565b6102ad61032b366004613b08565b610d9c565b6102e061033e366004613a54565b610f6a565b6102ad610351366004613b08565b610ff7565b6102f56103643660046139e4565b611053565b6102ad610377366004613bf8565b611065565b6102f56110d1565b61038c6110d7565b6040516102c49190614a46565b6103ac6103a7366004613dd6565b6110e0565b6040516102c49190613e4f565b6102e06103c7366004613a94565b6112f7565b6103df6103da366004613b08565b61134b565b6040516102c4969594939291906149e0565b6102e06103ff366004613a94565b61138f565b6102f56113d0565b6102ad61041a366004613cd9565b6113d7565b6102f561042d366004613a94565b611466565b6103ac610440366004613b08565b61148f565b6102ad610453366004613b08565b611643565b6102f56104663660046139e4565b611691565b6102ad6116ac565b610486610481366004613b08565b61172b565b6040516102c4929190613fa9565b6102e06104a2366004613a94565b611754565b6102f56104b5366004613a94565b611782565b6104cd6104c8366004613b08565b611868565b6040516102c496959493929190614a13565b6102f56118ac565b6102f56104f5366004613c88565b6118b3565b6105026118c1565b6040516102c49190613e22565b6102ad61051d366004613b08565b6118d0565b6102b7611ba6565b610502611c07565b6102f5610540366004613b08565b611c17565b6102ad610553366004613c41565b611c24565b610502611db2565b6102e061056e366004613a94565b611dc2565b6102e0610581366004613a94565b611e30565b6102ad610594366004613bd7565b611e44565b6102ad6105a7366004613b20565b611e99565b6102f56105ba366004613a1c565b611f1b565b6102f56105cd366004613ca4565b611f46565b6102f56105e0366004613d89565b611f64565b6102ad6105f3366004613b08565b6120b9565b6102ad6106063660046139e4565b612292565b6102f5610619366004613d89565b612349565b600082815260a66020526040902080546106535760405162461bcd60e51b815260040161064a906144e8565b60405180910390fd5b6004810154600160a01b900460ff1615156001146106835760405162461bcd60e51b815260040161064a90614057565b805442106106a35760405162461bcd60e51b815260040161064a90614850565b6106ad3342611466565b33600090815260a7602052604090205411156106db5760405162461bcd60e51b815260040161064a9061489b565b816107225733600090815260068201602090815260408083205460a79092529091205461070d9163ffffffff6123b416565b33600090815260a760205260409020556107ee565b3360009081526006820160205260409020548210156107965733600090815260068201602052604081205461075d908463ffffffff6123b416565b33600090815260a76020526040902054909150610780908263ffffffff6123b416565b33600090815260a76020526040902055506107ee565b3360009081526006820160205260408120546107b990849063ffffffff6123b416565b33600090815260a760205260409020549091506107dc908263ffffffff6123f616565b33600090815260a76020526040902055505b33600090815260068201602052604090205460038201546108149163ffffffff6123b416565b6003820181905561082b908363ffffffff6123f616565b60038201553360009081526006909101602052604090205550565b60688054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108d25780601f106108a7576101008083540402835291602001916108d2565b820191906000526020600020905b8154815290600101906020018083116108b557829003601f168201915b505050505090505b90565b60006108f16108ea61241b565b848461241f565b5060015b92915050565b60675490565b609b5481565b60b25460ff166109295760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff191690556101165461011954604051631392c59160e11b81526001600160a01b03909216916327258b229161096691600401613ea7565b60206040518083038186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b69190613abf565b15156001146109d75760405162461bcd60e51b815260040161064a90614416565b6109e1828261061e565b600082815260a660205260408082206101165461011954925163b461dd4f60e01b81529193926001600160a01b039091169163b461dd4f91610a2591600401613f3f565b60206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a759190613cc1565b90506000610a868360000154611c17565b90506000610aa18285600301546124d390919063ffffffff16565b90506000610ab5828563ffffffff61258f16565b90506000610ac28861172b565b5090506000610d18601783601c811115610ad857fe5b1415610b705761011654610119546040516337f2add560e11b8152610b6b926001600160a01b031691636fe55baa91610b149190600401613f59565b60606040518083038186803b158015610b2c57600080fd5b505afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b649190613d3a565b895461262d565b610b73565b87545b610116546101195460405163ecef557760e01b81526001600160a01b039092169163ecef557791610ba691600401613efa565b60206040518083038186803b158015610bbe57600080fd5b505afa158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf69190613e01565b60ff166008811115610c0457fe5b610116546101195460405163ecef557760e01b81526001600160a01b039092169163ecef557791610c3791600401613f79565b60206040518083038186803b158015610c4f57600080fd5b505afa158015610c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c879190613e01565b60ff166001811115610c9557fe5b610116546101195460405163135b9f4d60e01b81526001600160a01b039092169163135b9f4d91610cc891600401613f21565b60206040518083038186803b158015610ce057600080fd5b505afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190613cc1565b610117546101185460405163d38db86d60e01b81529293506001600160a01b039091169163d38db86d91610d529185908890600401613f93565b600060405180830381600087803b158015610d6c57600080fd5b505af1158015610d80573d6000803e3d6000fd5b505060b2805460ff191660011790555050505050505050505050565b60b25460ff16610dbe5760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff19169055600080610dd48361172b565b610116546101195492945090925060009182916001600160a01b03169063ba4d2d2890601787601c811115610e0557fe5b1415610ea45761011654610119546040516337f2add560e11b8152610e9f926018926105cd926001600160a01b0390921691636fe55baa91610e4991600401613ebe565b60606040518083038186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190613d3a565b8961262d565b610ea6565b875b6040518363ffffffff1660e01b8152600401610ec3929190613eb0565b604080518083038186803b158015610eda57600080fd5b505afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f129190613adb565b9092509050600182151514610f395760405162461bcd60e51b815260040161064a906140df565b610f56856000831215610f50578260001902610594565b82611e44565b505060b2805460ff19166001179055505050565b6000610f77848484612759565b610fed84610f8361241b565b610fe885604051806060016040528060288152602001614b14602891396001600160a01b038a16600090815260666020526040812090610fc161241b565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61279a16565b61241f565b5060019392505050565b610fff61241b565b60e4546001600160a01b0390811691161461102c5760405162461bcd60e51b815260040161064a906145be565b610119541561104d5760405162461bcd60e51b815260040161064a9061457a565b61011955565b60a76020526000908152604090205481565b600084815260a6602052604090208054156110925760405162461bcd60e51b815260040161064a9061432b565b9283556004909201805460ff60a01b1916600160a01b92151592909202919091176001600160a01b0319166001600160a01b0390921691909117905550565b60995490565b606a5460ff1690565b6099546060908083106110f5578390036110fd565b506001838303015b60608167ffffffffffffffff8111801561111657600080fd5b50604051908082528060200260200182016040528015611140578160200160208202803683370190505b50905060005b828110156111a75760998682018154811061115d57fe5b9060005260206000200160009054906101000a90046001600160a01b031682828151811061118757fe5b6001600160a01b0390921660209283029190910190910152600101611146565b506000805b825181101561121c5760006111d48483815181106111c657fe5b60200260200101518a611466565b11156111e557600190910190611214565b60008382815181106111f357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016111ac565b60608267ffffffffffffffff8111801561123557600080fd5b5060405190808252806020026020018201604052801561125f578160200160208202803683370190505b50905060009250600091505b83518210156112eb5760006001600160a01b031684838151811061128b57fe5b60200260200101516001600160a01b0316146112e0578382815181106112ad57fe5b60200260200101518184815181106112c157fe5b6001600160a01b03909216602092830291909101909101526001909201915b60019091019061126b565b98975050505050505050565b60006108f161130461241b565b84610fe8856066600061131561241b565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6123f616565b60a66020526000908152604090208054600182015460028301546003840154600490940154929391929091906001600160a01b03811690600160a01b900460ff1686565b600061139961241b565b60e4546001600160a01b039081169116146113c65760405162461bcd60e51b815260040161064a906145be565b6108f183836127c6565b6101195481565b600054610100900460ff16806113f057506113f06127dc565b806113fe575060005460ff16155b61141a5760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015611445576000805460ff1961ff0019909116610100171660011790555b61144f83836127e2565b8015611461576000805461ff00191690555b505050565b6001600160a01b03821660009081526098602052604081206114889083612862565b9392505050565b6060600080606060998054806020026020016040519081016040528092919081815260200182805480156114ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114ce575b50505050509050600091505b805182101561156b57600061152082848151811061151257fe5b602002602001015187611466565b111561153157600190920191611560565b600081838151811061153f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001909101906114f8565b60608367ffffffffffffffff8111801561158457600080fd5b506040519080825280602002602001820160405280156115ae578160200160208202803683370190505b50905060009350600092505b815183101561163a5760006001600160a01b03168284815181106115da57fe5b60200260200101516001600160a01b03161461162f578183815181106115fc57fe5b602002602001015181858151811061161057fe5b6001600160a01b03909216602092830291909101909101526001909301925b6001909201916115ba565b95945050505050565b600081815260a660209081526040808320338452600581019092529091205460ff16156116825760405162461bcd60e51b815260040161064a90614378565b61168d33828461298e565b5050565b6001600160a01b031660009081526065602052604090205490565b6116b461241b565b60e4546001600160a01b039081169116146116e15760405162461bcd60e51b815260040161064a906145be565b60e4546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360e480546001600160a01b0319169055565b6000808060f884901c601c81111561173f57fe5b92505067ffffffffffffffff83169050915091565b600090815260a6602090815260408083206001600160a01b0394909416835260059093019052205460ff1690565b600081815260a6602090815260408083206001600160a01b03861684526005810190925282205460ff16156117bb5760009150506108f5565b60006117ca8260000154611c17565b6004830154909150600090600160a01b900460ff166117f6576117f1868460000154611466565b611812565b6001600160a01b03861660009081526006840160205260409020545b9050600061185d8460040160149054906101000a900460ff16611835578361183b565b84600301545b600186015461185190859063ffffffff6129fd16565b9063ffffffff612a3716565b979650505050505050565b600090815260a6602052604090208054600182015460028301546003840154600490940154929491939092909160ff600160a01b830416916001600160a01b031690565b6101185481565b600081601c8111156108f557fe5b60e4546001600160a01b031690565b60b25460ff166118f25760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff191690556101165461011954604051631392c59160e11b81526001600160a01b03909216916327258b229161192f91600401613ea7565b60206040518083038186803b15801561194757600080fd5b505afa15801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190613abf565b15156001146119a05760405162461bcd60e51b815260040161064a906146d5565b6119ab81600061061e565b600081815260a660205260408082206101165461011954925163b461dd4f60e01b81529193926001600160a01b039091169163b461dd4f916119ef91600401613f3f565b60206040518083038186803b158015611a0757600080fd5b505afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f9190613cc1565b90506000611a508360000154611c17565b90506000611a6b8285600301546124d390919063ffffffff16565b90506000611a7f828563ffffffff61258f16565b9050600080611a8d8861172b565b90925090506000611b6c601784601c811115611aa557fe5b1415611b375761011654610119546040516337f2add560e11b8152610b6b926001600160a01b031691636fe55baa91611ae19190600401613f59565b60606040518083038186803b158015611af957600080fd5b505afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b319190613d3a565b8461262d565b8854610116546101195460405163ecef557760e01b81526001600160a01b039092169163ecef557791610ba691600401613efa565b610117546101185460405163d38db86d60e01b81529293506001600160a01b039091169163d38db86d91610d529185908990600401613f93565b60698054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108d25780601f106108a7576101008083540402835291602001916108d2565b610116546001600160a01b031681565b60006108f5609783612862565b600054610100900460ff1680611c3d5750611c3d6127dc565b80611c4b575060005460ff16155b611c675760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015611c92576000805460ff1961ff0019909116610100171660011790555b611ca4856001600160a01b0316612a79565b611cc05760405162461bcd60e51b815260040161064a9061418d565b611cd2846001600160a01b0316612a79565b611cee5760405162461bcd60e51b815260040161064a9061409a565b611d486040518060400160405280601c81526020017f496e766573746d656e7420436572746966696361746520546f6b656e00000000815250604051806040016040528060038152602001621250d560ea1b8152506113d7565b611d50612ab2565b611d58612b45565b611d6182612292565b61011680546001600160a01b038088166001600160a01b0319928316179092556101178054928716929091169190911790556101188390558015611dab576000805461ff00191690555b5050505050565b610117546001600160a01b031681565b60006108f1611dcf61241b565b84610fe885604051806060016040528060258152602001614b3c6025913960666000611df961241b565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61279a16565b60006108f1611e3d61241b565b8484612759565b600082815260a6602052604090208054611e705760405162461bcd60e51b815260040161064a90614641565b600181015415611e925760405162461bcd60e51b815260040161064a90614130565b6001015550565b600082815260a660205260408120905b8251811015611f1557816005016000848381518110611ec457fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611f0d57611f0d838281518110611efe57fe5b6020026020010151838661298e565b600101611ea9565b50505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b60008160f884601c811115611f5757fe5b60ff16901b179392505050565b600081851415611f755750836120b1565b6001846008811115611f8357fe5b1480611f9a57506003846008811115611f9857fe5b145b15611fb057611fa98584612bbb565b90506120b1565b6002846008811115611fbe57fe5b1480611fd557506004846008811115611fd357fe5b145b15612019576000611fe68685612bbb565b9050611ff186612c17565b611ffa82612c17565b14156120075790506120b1565b6120118685612c30565b9150506120b1565b600584600881111561202757fe5b148061203e5750600784600881111561203c57fe5b145b1561204d57611fa98584612c30565b600684600881111561205b57fe5b14806120725750600884600881111561207057fe5b145b156120ae5760006120838685612c30565b905061208e86612c17565b61209782612c17565b14156120a45790506120b1565b6120118685612bbb565b50835b949350505050565b60b25460ff166120db5760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff191690556101165461011954604051631392c59160e11b81526001600160a01b03909216916327258b229161211891600401613ea7565b60206040518083038186803b15801561213057600080fd5b505afa158015612144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121689190613abf565b15156001146121895760405162461bcd60e51b815260040161064a906146d5565b6000806121958361172b565b9092509050601a82601c8111156121a857fe5b141580156121c25750601882601c8111156121bf57fe5b14155b6121de5760405162461bcd60e51b815260040161064a9061452c565b610116546101195460405163eb01255960e01b81526000926001600160a01b03169163eb012559916122139190600401613ee0565b60206040518083038186803b15801561222b57600080fd5b505afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122639190613a00565b905061227f8483601786601c81111561227857fe5b1484611065565b505060b2805460ff191660011790555050565b61229a61241b565b60e4546001600160a01b039081169116146122c75760405162461bcd60e51b815260040161064a906145be565b6001600160a01b0381166122ed5760405162461bcd60e51b815260040161064a906141d3565b60e4546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360e480546001600160a01b0319166001600160a01b0392909216919091179055565b6000600384600881111561235957fe5b14806123705750600484600881111561236e57fe5b145b806123865750600784600881111561238457fe5b145b8061239c5750600884600881111561239a57fe5b145b156123a85750836120b1565b61163a85858585611f64565b600061148883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061279a565b6000828201838110156114885760405162461bcd60e51b815260040161064a9061425b565b3390565b6001600160a01b0383166124455760405162461bcd60e51b815260040161064a9061480c565b6001600160a01b03821661246b5760405162461bcd60e51b815260040161064a90614219565b6001600160a01b0380841660008181526066602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906124c6908590613ea7565b60405180910390a3505050565b6000816124f25760405162461bcd60e51b815260040161064a90614965565b826124ff575060006108f5565b670de0b6b3a76400008381029084828161251557fe5b05146125335760405162461bcd60e51b815260040161064a90614769565b826000191480156125475750600160ff1b84145b156125645760405162461bcd60e51b815260040161064a90614769565b600083828161256f57fe5b059050806120b15760405162461bcd60e51b815260040161064a906143c5565b600082158061259c575081155b156125a9575060006108f5565b826000191480156125bd5750600160ff1b82145b156125da5760405162461bcd60e51b815260040161064a906142e4565b828202828482816125e757fe5b05146126055760405162461bcd60e51b815260040161064a906142e4565b670de0b6b3a76400008105806120b15760405162461bcd60e51b815260040161064a90614292565b600080808460200151600581111561264157fe5b141561266157835161265a90849063ffffffff612c7e16565b9050611488565b60018460200151600581111561267357fe5b141561268f57835161265a90849060070263ffffffff612c7e16565b6002846020015160058111156126a157fe5b14156126ba57835161265a90849063ffffffff612c9316565b6003846020015160058111156126cc57fe5b14156126e857835161265a90849060030263ffffffff612c9316565b6004846020015160058111156126fa57fe5b141561271657835161265a90849060060263ffffffff612c9316565b60058460200151600581111561272857fe5b141561274157835161265a90849063ffffffff612d0d16565b60405162461bcd60e51b815260040161064a906147af565b6001600160a01b038316600090815260a760205260409020541561278f5760405162461bcd60e51b815260040161064a906144a6565b611461838383612d34565b600081848411156127be5760405162461bcd60e51b815260040161064a9190613fc1565b505050900390565b6127d08282612d4a565b61168d60008383612e16565b303b1590565b600054610100900460ff16806127fb57506127fb6127dc565b80612809575060005460ff16155b6128255760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612850576000805460ff1961ff0019909116610100171660011790555b612858612e3b565b61144f8383612ebc565b8154600090612873575060006108f5565b82548390600019810190811061288557fe5b60009182526020909120600290910201546001600160801b031682106128d0578254839060001981019081106128b757fe5b90600052602060002090600202016001015490506108f5565b826000815481106128dd57fe5b60009182526020909120600290910201546001600160801b0316821015612906575060006108f5565b8254600090600019015b8181111561296657600060026001838501010490508486828154811061293257fe5b60009182526020909120600290910201546001600160801b03161161295957809250612960565b6001810391505b50612910565b84828154811061297257fe5b9060005260206000209060020201600101549250505092915050565b6004820154600160a01b900460ff16151560011480156129c757506001600160a01b038316600090815260068301602052604090205415155b156129f2576001600160a01b03831660009081526006830160205260409020546129f2908490612f75565b611461838383612f8b565b600082612a0c575060006108f5565b82820282848281612a1957fe5b04146114885760405162461bcd60e51b815260040161064a90614465565b600061148883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130fc565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906120b1575050151592915050565b600054610100900460ff1680612acb5750612acb6127dc565b80612ad9575060005460ff16155b612af55760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612b20576000805460ff1961ff0019909116610100171660011790555b612b28612e3b565b612b30613133565b8015612b42576000805461ff00191690555b50565b600054610100900460ff1680612b5e5750612b5e6127dc565b80612b6c575060005460ff16155b612b885760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612bb3576000805460ff1961ff0019909116610100171660011790555b612b3061320d565b60006001826001811115612bcb57fe5b1415612c1057612bda8361329c565b60061415612bf457612bed836002612c7e565b90506108f5565b612bfd8361329c565b60071415612c1057612bed836001612c7e565b5090919050565b6000612c2862015180835b046132af565b509392505050565b60006001826001811115612c4057fe5b1415612c1057612c4f8361329c565b60061415612c6257612bed836001613345565b612c6b8361329c565b60071415612c1057612bed836002613345565b6201518081028201828110156108f557600080fd5b6000808080612ca56201518087612c22565b600c918801600019810183810494909401965094509250900660010191506000612ccf848461335a565b905080821115612cdd578091505b62015180870662015180612cf28686866133e0565b0201945086851015612d0357600080fd5b5050505092915050565b6000808080612d1f6201518087612c22565b9187019450925090506000612ccf848461335a565b612d3f83838361345c565b611461838383612e16565b6001600160a01b038216612d705760405162461bcd60e51b815260040161064a906149a9565b612d7c60008383611461565b606754612d8f908263ffffffff6123f616565b6067556001600160a01b038216600090815260656020526040902054612dbb908263ffffffff6123f616565b6001600160a01b0383166000818152606560205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e0a908590613ea7565b60405180910390a35050565b612e2183838361357d565b612e2961367c565b612e3283613690565b61146182613690565b600054610100900460ff1680612e545750612e546127dc565b80612e62575060005460ff16155b612e7e5760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612b30576000805460ff1961ff0019909116610100171660011790558015612b42576000805461ff001916905550565b600054610100900460ff1680612ed55750612ed56127dc565b80612ee3575060005460ff16155b612eff5760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612f2a576000805460ff1961ff0019909116610100171660011790555b8251612f3d9060689060208601906138d8565b508151612f519060699060208501906138d8565b50606a805460ff191660121790558015611461576000805461ff0019169055505050565b612f7f82826136b5565b61168d82600083612e16565b60b25460ff16612fad5760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff191690556000612fc38483611782565b6001600160a01b03851660009081526005850160205260409020805460ff19166001179055600284015490915061300190829063ffffffff6123f616565b60028401556001600160a01b038416600090815260068401602090815260408083205460a79092529091205461303c9163ffffffff6123b416565b6001600160a01b038516600090815260a76020526040902055801561227f5760048084015460405163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161308e918891869101613e36565b602060405180830381600087803b1580156130a857600080fd5b505af11580156130bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e09190613abf565b61227f5760405162461bcd60e51b815260040161064a9061491d565b6000818361311d5760405162461bcd60e51b815260040161064a9190613fc1565b50600083858161312957fe5b0495945050505050565b600054610100900460ff168061314c575061314c6127dc565b8061315a575060005460ff16155b6131765760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff161580156131a1576000805460ff1961ff0019909116610100171660011790555b60006131ab61241b565b60e480546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612b42576000805461ff001916905550565b600054610100900460ff168061322657506132266127dc565b80613234575060005460ff16155b6132505760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff1615801561327b576000805460ff1961ff0019909116610100171660011790555b60b2805460ff191660011790558015612b42576000805461ff001916905550565b6007620151809091046003010660010190565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161330657fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6201518081028203828111156108f557600080fd5b6000816001148061336b5750816003145b806133765750816005145b806133815750816007145b8061338c5750816008145b80613397575081600a145b806133a2575081600c145b156133af5750601f6108f5565b816002146133bf5750601e6108f5565b6133c883613797565b6133d357601c6133d6565b601d5b60ff169392505050565b60006107b28410156133f157600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161342d57fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6001600160a01b0383166134825760405162461bcd60e51b815260040161064a90614724565b6001600160a01b0382166134a85760405162461bcd60e51b815260040161064a90614014565b6134b3838383611461565b6134f681604051806060016040528060268152602001614aee602691396001600160a01b038616600090815260656020526040902054919063ffffffff61279a16565b6001600160a01b03808516600090815260656020526040808220939093559084168152205461352b908263ffffffff6123f616565b6001600160a01b0380841660008181526065602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124c6908590613ea7565b80158061359b5750816001600160a01b0316836001600160a01b0316145b156135a557611461565b6135ae82611691565b1580156135c357506001600160a01b03821615155b1561365057609b546135dc90600163ffffffff6123f616565b609b556135e8826137bc565b613650576099805460018082019092557f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b0319166001600160a01b0385169081179091556000908152609a60205260409020805460ff191690911790555b61365983611691565b81141561146157609b5461367490600163ffffffff6123b416565b609b55505050565b61368e60976136896108fb565b6137da565b565b6001600160a01b0381166000908152609860205260409020612b429061368983611691565b6001600160a01b0382166136db5760405162461bcd60e51b815260040161064a90614694565b6136e782600083611461565b61372a81604051806060016040528060228152602001614aac602291396001600160a01b038516600090815260656020526040902054919063ffffffff61279a16565b6001600160a01b038316600090815260656020526040902055606754613756908263ffffffff6123b416565b6067556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e0a908590613ea7565b6000600482061580156137ac57506064820615155b806108f557505061019090061590565b6001600160a01b03166000908152609a602052604090205460ff1690565b8154158061381257508154829060001981019081106137f557fe5b60009182526020909120600290910201546001600160801b031642115b156138a857604080518082018252426001600160801b039081168252602080830185815286546001808201895560008981529384209551600290920290950180546fffffffffffffffffffffffffffffffff1916919094161783555191909201558354915160001992909201917f76735e462dae5480c552f970568dc60e35cc3c4c06eb818f77bbb357593bf7fa9190a261168d565b8154600090839060001981019081106138bd57fe5b60009182526020909120600160029092020101829055505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061391957805160ff1916838001178555613946565b82800160010185558215613946579182015b8281111561394657825182559160200191906001019061392b565b50613952929150613956565b5090565b6108da91905b80821115613952576000815560010161395c565b80356108f581614a7b565b600082601f83011261398b578081fd5b813567ffffffffffffffff8111156139a1578182fd5b6139b4601f8201601f1916602001614a54565b91508082528360208285010111156139cb57600080fd5b8060208401602084013760009082016020015292915050565b6000602082840312156139f5578081fd5b813561148881614a7b565b600060208284031215613a11578081fd5b815161148881614a7b565b60008060408385031215613a2e578081fd5b8235613a3981614a7b565b91506020830135613a4981614a7b565b809150509250929050565b600080600060608486031215613a68578081fd5b8335613a7381614a7b565b92506020840135613a8381614a7b565b929592945050506040919091013590565b60008060408385031215613aa6578182fd5b8235613ab181614a7b565b946020939093013593505050565b600060208284031215613ad0578081fd5b815161148881614a90565b60008060408385031215613aed578182fd5b8251613af881614a90565b6020939093015192949293505050565b600060208284031215613b19578081fd5b5035919050565b60008060408385031215613b32578182fd5b8235915060208084013567ffffffffffffffff80821115613b51578384fd5b81860187601f820112613b62578485fd5b8035925081831115613b72578485fd5b8383029150613b82848301614a54565b8381528481019082860184840187018b1015613b9c578788fd5b8794505b85851015613bc657613bb28b82613970565b835260019490940193918601918601613ba0565b508096505050505050509250929050565b60008060408385031215613be9578182fd5b50508035926020909101359150565b60008060008060808587031215613c0d578182fd5b84359350602085013592506040850135613c2681614a90565b91506060850135613c3681614a7b565b939692955090935050565b60008060008060808587031215613c56578182fd5b8435613c6181614a7b565b93506020850135613c7181614a7b565b9250604085013591506060850135613c3681614a7b565b600060208284031215613c99578081fd5b813561148881614a9e565b60008060408385031215613cb6578182fd5b8235613ab181614a9e565b600060208284031215613cd2578081fd5b5051919050565b60008060408385031215613ceb578182fd5b823567ffffffffffffffff80821115613d02578384fd5b613d0e8683870161397b565b93506020850135915080821115613d23578283fd5b50613d308582860161397b565b9150509250929050565b600060608284031215613d4b578081fd5b613d556060614a54565b82518152602083015160068110613d6a578283fd5b60208201526040830151613d7d81614a90565b60408201529392505050565b60008060008060808587031215613d9e578182fd5b84359350602085013560098110613db3578283fd5b9250604085013560028110613dc6578283fd5b9396929550929360600135925050565b600080600060608486031215613dea578081fd5b505081359360208301359350604090920135919050565b600060208284031215613e12578081fd5b815160ff81168114611488578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015613e905783516001600160a01b031683529284019291840191600101613e6b565b50909695505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b9081526f1cd95d1d1b195b595b9d14195c9a5bd960821b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152677175616e7469747960c01b602082015260400190565b9081526d195e195c98da5cd954195c9a5bd960921b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b9283526020830191909152604082015260600190565b60408101601d8410613fb757fe5b9281526020015290565b6000602080835283518082850152825b81811015613fed57858101830151858201604001528201613fd1565b81811115613ffe5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252603590820152600080516020614ace83398151915260408201527414d251d39053125391d7d393d517d1539050931151605a1b606082015260800190565b60208082526025908201527f4943542e696e697469616c697a653a20494e56414c49445f444154415f524547604082015264495354525960d81b606082015260800190565b60208082526031908201527f4943542e66657463684465706f736974416d6f756e74466f724576656e743a206040820152701393d517d6515517d1115413d4d2551151607a1b606082015260800190565b60208082526037908201527f4465706f7369742e7570646174654465706f736974416d6f756e743a2044455060408201527f4f5349545f414d4f554e545f414c52454144595f534554000000000000000000606082015260800190565b60208082526026908201527f4943542e696e697469616c697a653a20494e56414c49445f41535345545f524560408201526547495354525960d01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526032908201527f5369676e65644d6174682e666c6f61744d756c743a2043414e4e4f545f524550604082015271524553454e545f4752414e554c415249545960701b606082015260800190565b60208082526027908201527f5369676e65644d6174682e666c6f61744d756c743a204f564552464c4f575f4460408201526611551150d5115160ca1b606082015260800190565b6020808252602d908201527f4465706f7369742e6372656174654465706f7369743a204445504f5349545f4160408201526c4c52454144595f45584953545360981b606082015260800190565b6020808252602d908201527f4465706f7369742e636c61696d4465706f7369743a204445504f5349545f414c60408201526c149150511657d0d31052535151609a1b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252602f908201527f4943542e7265676973746572466f72526564656d7074696f6e3a20415353455460408201526e17d113d154d7d393d517d1561254d5608a1b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526022908201527f4943542e5f7472616e736665723a20484f4c4445525f49535f5349474e414c496040820152614e4760f01b606082015260800190565b6020808252603690820152600080516020614ace83398151915260408201527511115413d4d25517d113d154d7d393d517d1561254d560521b606082015260800190565b6020808252602e908201527f4943542e6372656174654465706f736974466f724576656e743a20464f52424960408201526d4444454e5f4556454e5f5459504560901b606082015260800190565b60208082526024908201527f4943542e736574417373657449643a2041535345545f49445f414c524541445960408201526317d4d15560e21b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526033908201527f4465706f7369742e7570646174654465706f736974416d6f756e743a2044455060408201527213d4d25517d113d154d7d393d517d1561254d5606a1b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252602f908201527f4943542e6372656174654465706f736974466f724576656e743a20415353455460408201526e17d113d154d7d393d517d1561254d5608a1b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252603c90820152600080516020614ace83398151915260408201527f4445504f5349545f49535f414c52454144595f50524f43455353454400000000606082015260800190565b6020808252603d90820152600080516020614ace83398151915260408201527f5349474e414c5f414d4f554e545f455843454544535f42414c414e4345000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526028908201527f4465706f7369742e7472616e736665724465706f7369743a205452414e5346456040820152671497d1905253115160c21b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b9586526020860194909452604085019290925260608401526001600160a01b03166080830152151560a082015260c00190565b958652602086019490945260408501929092526060840152151560808301526001600160a01b031660a082015260c00190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614a7357600080fd5b604052919050565b6001600160a01b0381168114612b4257600080fd5b8015158114612b4257600080fd5b601d8110612b4257600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e63654465706f7369742e7369676e616c416d6f756e74466f724465706f7369743a2045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122039b7e095c4389ec66947b63a8e3855a7b335a83d806c37f67a241e4dce8da92864736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102955760003560e01c8063715018a611610167578063a31ee5b0116100ce578063dd62ed3e11610087578063dd62ed3e146105ac578063e05a66e0146105bf578063e726d680146105d2578063ec15b9ca146105e5578063f2fde38b146105f8578063f5586e051461060b57610295565b8063a31ee5b014610545578063a39c1d6b14610558578063a457c2d714610560578063a9059cbb14610573578063a999b73f14610586578063c20662c31461059957610295565b8063811322fb11610120578063811322fb146104e75780638da5cb5b146104fa5780638e17e4a31461050f57806395d89b4114610522578063979d7e861461052a578063981b24d01461053257610295565b8063715018a61461046b578063725400031461047357806376fa0e46146104945780637a22402c146104a75780637a86983f146104ba5780637bb7a8b9146104df57610295565b8063308feec31161020b57806344de240a116101c457806344de240a146104045780634cd88b761461040c5780634ee2cd7e1461041f578063520fdd22146104325780635e5858891461044557806370a082311461045857610295565b8063308feec31461037c578063313ce56714610384578063318019251461039957806339509351146103b95780633d4dff7b146103cc57806340c10f19146103f157610295565b80631cb54d491161025d5780631cb54d491461030a5780632069daeb1461031d57806323b872dd1461033057806326158a8b146103435780632839a18414610356578063302424ea1461036957610295565b806303952a7a1461029a57806306fdde03146102af578063095ea7b3146102cd57806318160ddd146102ed5780631aab9a9f14610302575b600080fd5b6102ad6102a8366004613bd7565b61061e565b005b6102b7610846565b6040516102c49190613fc1565b60405180910390f35b6102e06102db366004613a94565b6108dd565b6040516102c49190613e9c565b6102f56108fb565b6040516102c49190613ea7565b6102f5610901565b6102ad610318366004613bd7565b610907565b6102ad61032b366004613b08565b610d9c565b6102e061033e366004613a54565b610f6a565b6102ad610351366004613b08565b610ff7565b6102f56103643660046139e4565b611053565b6102ad610377366004613bf8565b611065565b6102f56110d1565b61038c6110d7565b6040516102c49190614a46565b6103ac6103a7366004613dd6565b6110e0565b6040516102c49190613e4f565b6102e06103c7366004613a94565b6112f7565b6103df6103da366004613b08565b61134b565b6040516102c4969594939291906149e0565b6102e06103ff366004613a94565b61138f565b6102f56113d0565b6102ad61041a366004613cd9565b6113d7565b6102f561042d366004613a94565b611466565b6103ac610440366004613b08565b61148f565b6102ad610453366004613b08565b611643565b6102f56104663660046139e4565b611691565b6102ad6116ac565b610486610481366004613b08565b61172b565b6040516102c4929190613fa9565b6102e06104a2366004613a94565b611754565b6102f56104b5366004613a94565b611782565b6104cd6104c8366004613b08565b611868565b6040516102c496959493929190614a13565b6102f56118ac565b6102f56104f5366004613c88565b6118b3565b6105026118c1565b6040516102c49190613e22565b6102ad61051d366004613b08565b6118d0565b6102b7611ba6565b610502611c07565b6102f5610540366004613b08565b611c17565b6102ad610553366004613c41565b611c24565b610502611db2565b6102e061056e366004613a94565b611dc2565b6102e0610581366004613a94565b611e30565b6102ad610594366004613bd7565b611e44565b6102ad6105a7366004613b20565b611e99565b6102f56105ba366004613a1c565b611f1b565b6102f56105cd366004613ca4565b611f46565b6102f56105e0366004613d89565b611f64565b6102ad6105f3366004613b08565b6120b9565b6102ad6106063660046139e4565b612292565b6102f5610619366004613d89565b612349565b600082815260a66020526040902080546106535760405162461bcd60e51b815260040161064a906144e8565b60405180910390fd5b6004810154600160a01b900460ff1615156001146106835760405162461bcd60e51b815260040161064a90614057565b805442106106a35760405162461bcd60e51b815260040161064a90614850565b6106ad3342611466565b33600090815260a7602052604090205411156106db5760405162461bcd60e51b815260040161064a9061489b565b816107225733600090815260068201602090815260408083205460a79092529091205461070d9163ffffffff6123b416565b33600090815260a760205260409020556107ee565b3360009081526006820160205260409020548210156107965733600090815260068201602052604081205461075d908463ffffffff6123b416565b33600090815260a76020526040902054909150610780908263ffffffff6123b416565b33600090815260a76020526040902055506107ee565b3360009081526006820160205260408120546107b990849063ffffffff6123b416565b33600090815260a760205260409020549091506107dc908263ffffffff6123f616565b33600090815260a76020526040902055505b33600090815260068201602052604090205460038201546108149163ffffffff6123b416565b6003820181905561082b908363ffffffff6123f616565b60038201553360009081526006909101602052604090205550565b60688054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108d25780601f106108a7576101008083540402835291602001916108d2565b820191906000526020600020905b8154815290600101906020018083116108b557829003601f168201915b505050505090505b90565b60006108f16108ea61241b565b848461241f565b5060015b92915050565b60675490565b609b5481565b60b25460ff166109295760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff191690556101165461011954604051631392c59160e11b81526001600160a01b03909216916327258b229161096691600401613ea7565b60206040518083038186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b69190613abf565b15156001146109d75760405162461bcd60e51b815260040161064a90614416565b6109e1828261061e565b600082815260a660205260408082206101165461011954925163b461dd4f60e01b81529193926001600160a01b039091169163b461dd4f91610a2591600401613f3f565b60206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a759190613cc1565b90506000610a868360000154611c17565b90506000610aa18285600301546124d390919063ffffffff16565b90506000610ab5828563ffffffff61258f16565b90506000610ac28861172b565b5090506000610d18601783601c811115610ad857fe5b1415610b705761011654610119546040516337f2add560e11b8152610b6b926001600160a01b031691636fe55baa91610b149190600401613f59565b60606040518083038186803b158015610b2c57600080fd5b505afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b649190613d3a565b895461262d565b610b73565b87545b610116546101195460405163ecef557760e01b81526001600160a01b039092169163ecef557791610ba691600401613efa565b60206040518083038186803b158015610bbe57600080fd5b505afa158015610bd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf69190613e01565b60ff166008811115610c0457fe5b610116546101195460405163ecef557760e01b81526001600160a01b039092169163ecef557791610c3791600401613f79565b60206040518083038186803b158015610c4f57600080fd5b505afa158015610c63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c879190613e01565b60ff166001811115610c9557fe5b610116546101195460405163135b9f4d60e01b81526001600160a01b039092169163135b9f4d91610cc891600401613f21565b60206040518083038186803b158015610ce057600080fd5b505afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190613cc1565b610117546101185460405163d38db86d60e01b81529293506001600160a01b039091169163d38db86d91610d529185908890600401613f93565b600060405180830381600087803b158015610d6c57600080fd5b505af1158015610d80573d6000803e3d6000fd5b505060b2805460ff191660011790555050505050505050505050565b60b25460ff16610dbe5760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff19169055600080610dd48361172b565b610116546101195492945090925060009182916001600160a01b03169063ba4d2d2890601787601c811115610e0557fe5b1415610ea45761011654610119546040516337f2add560e11b8152610e9f926018926105cd926001600160a01b0390921691636fe55baa91610e4991600401613ebe565b60606040518083038186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e999190613d3a565b8961262d565b610ea6565b875b6040518363ffffffff1660e01b8152600401610ec3929190613eb0565b604080518083038186803b158015610eda57600080fd5b505afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f129190613adb565b9092509050600182151514610f395760405162461bcd60e51b815260040161064a906140df565b610f56856000831215610f50578260001902610594565b82611e44565b505060b2805460ff19166001179055505050565b6000610f77848484612759565b610fed84610f8361241b565b610fe885604051806060016040528060288152602001614b14602891396001600160a01b038a16600090815260666020526040812090610fc161241b565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61279a16565b61241f565b5060019392505050565b610fff61241b565b60e4546001600160a01b0390811691161461102c5760405162461bcd60e51b815260040161064a906145be565b610119541561104d5760405162461bcd60e51b815260040161064a9061457a565b61011955565b60a76020526000908152604090205481565b600084815260a6602052604090208054156110925760405162461bcd60e51b815260040161064a9061432b565b9283556004909201805460ff60a01b1916600160a01b92151592909202919091176001600160a01b0319166001600160a01b0390921691909117905550565b60995490565b606a5460ff1690565b6099546060908083106110f5578390036110fd565b506001838303015b60608167ffffffffffffffff8111801561111657600080fd5b50604051908082528060200260200182016040528015611140578160200160208202803683370190505b50905060005b828110156111a75760998682018154811061115d57fe5b9060005260206000200160009054906101000a90046001600160a01b031682828151811061118757fe5b6001600160a01b0390921660209283029190910190910152600101611146565b506000805b825181101561121c5760006111d48483815181106111c657fe5b60200260200101518a611466565b11156111e557600190910190611214565b60008382815181106111f357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001016111ac565b60608267ffffffffffffffff8111801561123557600080fd5b5060405190808252806020026020018201604052801561125f578160200160208202803683370190505b50905060009250600091505b83518210156112eb5760006001600160a01b031684838151811061128b57fe5b60200260200101516001600160a01b0316146112e0578382815181106112ad57fe5b60200260200101518184815181106112c157fe5b6001600160a01b03909216602092830291909101909101526001909201915b60019091019061126b565b98975050505050505050565b60006108f161130461241b565b84610fe8856066600061131561241b565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6123f616565b60a66020526000908152604090208054600182015460028301546003840154600490940154929391929091906001600160a01b03811690600160a01b900460ff1686565b600061139961241b565b60e4546001600160a01b039081169116146113c65760405162461bcd60e51b815260040161064a906145be565b6108f183836127c6565b6101195481565b600054610100900460ff16806113f057506113f06127dc565b806113fe575060005460ff16155b61141a5760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015611445576000805460ff1961ff0019909116610100171660011790555b61144f83836127e2565b8015611461576000805461ff00191690555b505050565b6001600160a01b03821660009081526098602052604081206114889083612862565b9392505050565b6060600080606060998054806020026020016040519081016040528092919081815260200182805480156114ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114ce575b50505050509050600091505b805182101561156b57600061152082848151811061151257fe5b602002602001015187611466565b111561153157600190920191611560565b600081838151811061153f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001909101906114f8565b60608367ffffffffffffffff8111801561158457600080fd5b506040519080825280602002602001820160405280156115ae578160200160208202803683370190505b50905060009350600092505b815183101561163a5760006001600160a01b03168284815181106115da57fe5b60200260200101516001600160a01b03161461162f578183815181106115fc57fe5b602002602001015181858151811061161057fe5b6001600160a01b03909216602092830291909101909101526001909301925b6001909201916115ba565b95945050505050565b600081815260a660209081526040808320338452600581019092529091205460ff16156116825760405162461bcd60e51b815260040161064a90614378565b61168d33828461298e565b5050565b6001600160a01b031660009081526065602052604090205490565b6116b461241b565b60e4546001600160a01b039081169116146116e15760405162461bcd60e51b815260040161064a906145be565b60e4546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360e480546001600160a01b0319169055565b6000808060f884901c601c81111561173f57fe5b92505067ffffffffffffffff83169050915091565b600090815260a6602090815260408083206001600160a01b0394909416835260059093019052205460ff1690565b600081815260a6602090815260408083206001600160a01b03861684526005810190925282205460ff16156117bb5760009150506108f5565b60006117ca8260000154611c17565b6004830154909150600090600160a01b900460ff166117f6576117f1868460000154611466565b611812565b6001600160a01b03861660009081526006840160205260409020545b9050600061185d8460040160149054906101000a900460ff16611835578361183b565b84600301545b600186015461185190859063ffffffff6129fd16565b9063ffffffff612a3716565b979650505050505050565b600090815260a6602052604090208054600182015460028301546003840154600490940154929491939092909160ff600160a01b830416916001600160a01b031690565b6101185481565b600081601c8111156108f557fe5b60e4546001600160a01b031690565b60b25460ff166118f25760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff191690556101165461011954604051631392c59160e11b81526001600160a01b03909216916327258b229161192f91600401613ea7565b60206040518083038186803b15801561194757600080fd5b505afa15801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190613abf565b15156001146119a05760405162461bcd60e51b815260040161064a906146d5565b6119ab81600061061e565b600081815260a660205260408082206101165461011954925163b461dd4f60e01b81529193926001600160a01b039091169163b461dd4f916119ef91600401613f3f565b60206040518083038186803b158015611a0757600080fd5b505afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f9190613cc1565b90506000611a508360000154611c17565b90506000611a6b8285600301546124d390919063ffffffff16565b90506000611a7f828563ffffffff61258f16565b9050600080611a8d8861172b565b90925090506000611b6c601784601c811115611aa557fe5b1415611b375761011654610119546040516337f2add560e11b8152610b6b926001600160a01b031691636fe55baa91611ae19190600401613f59565b60606040518083038186803b158015611af957600080fd5b505afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b319190613d3a565b8461262d565b8854610116546101195460405163ecef557760e01b81526001600160a01b039092169163ecef557791610ba691600401613efa565b610117546101185460405163d38db86d60e01b81529293506001600160a01b039091169163d38db86d91610d529185908990600401613f93565b60698054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108d25780601f106108a7576101008083540402835291602001916108d2565b610116546001600160a01b031681565b60006108f5609783612862565b600054610100900460ff1680611c3d5750611c3d6127dc565b80611c4b575060005460ff16155b611c675760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015611c92576000805460ff1961ff0019909116610100171660011790555b611ca4856001600160a01b0316612a79565b611cc05760405162461bcd60e51b815260040161064a9061418d565b611cd2846001600160a01b0316612a79565b611cee5760405162461bcd60e51b815260040161064a9061409a565b611d486040518060400160405280601c81526020017f496e766573746d656e7420436572746966696361746520546f6b656e00000000815250604051806040016040528060038152602001621250d560ea1b8152506113d7565b611d50612ab2565b611d58612b45565b611d6182612292565b61011680546001600160a01b038088166001600160a01b0319928316179092556101178054928716929091169190911790556101188390558015611dab576000805461ff00191690555b5050505050565b610117546001600160a01b031681565b60006108f1611dcf61241b565b84610fe885604051806060016040528060258152602001614b3c6025913960666000611df961241b565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61279a16565b60006108f1611e3d61241b565b8484612759565b600082815260a6602052604090208054611e705760405162461bcd60e51b815260040161064a90614641565b600181015415611e925760405162461bcd60e51b815260040161064a90614130565b6001015550565b600082815260a660205260408120905b8251811015611f1557816005016000848381518110611ec457fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611f0d57611f0d838281518110611efe57fe5b6020026020010151838661298e565b600101611ea9565b50505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b60008160f884601c811115611f5757fe5b60ff16901b179392505050565b600081851415611f755750836120b1565b6001846008811115611f8357fe5b1480611f9a57506003846008811115611f9857fe5b145b15611fb057611fa98584612bbb565b90506120b1565b6002846008811115611fbe57fe5b1480611fd557506004846008811115611fd357fe5b145b15612019576000611fe68685612bbb565b9050611ff186612c17565b611ffa82612c17565b14156120075790506120b1565b6120118685612c30565b9150506120b1565b600584600881111561202757fe5b148061203e5750600784600881111561203c57fe5b145b1561204d57611fa98584612c30565b600684600881111561205b57fe5b14806120725750600884600881111561207057fe5b145b156120ae5760006120838685612c30565b905061208e86612c17565b61209782612c17565b14156120a45790506120b1565b6120118685612bbb565b50835b949350505050565b60b25460ff166120db5760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff191690556101165461011954604051631392c59160e11b81526001600160a01b03909216916327258b229161211891600401613ea7565b60206040518083038186803b15801561213057600080fd5b505afa158015612144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121689190613abf565b15156001146121895760405162461bcd60e51b815260040161064a906146d5565b6000806121958361172b565b9092509050601a82601c8111156121a857fe5b141580156121c25750601882601c8111156121bf57fe5b14155b6121de5760405162461bcd60e51b815260040161064a9061452c565b610116546101195460405163eb01255960e01b81526000926001600160a01b03169163eb012559916122139190600401613ee0565b60206040518083038186803b15801561222b57600080fd5b505afa15801561223f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122639190613a00565b905061227f8483601786601c81111561227857fe5b1484611065565b505060b2805460ff191660011790555050565b61229a61241b565b60e4546001600160a01b039081169116146122c75760405162461bcd60e51b815260040161064a906145be565b6001600160a01b0381166122ed5760405162461bcd60e51b815260040161064a906141d3565b60e4546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360e480546001600160a01b0319166001600160a01b0392909216919091179055565b6000600384600881111561235957fe5b14806123705750600484600881111561236e57fe5b145b806123865750600784600881111561238457fe5b145b8061239c5750600884600881111561239a57fe5b145b156123a85750836120b1565b61163a85858585611f64565b600061148883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061279a565b6000828201838110156114885760405162461bcd60e51b815260040161064a9061425b565b3390565b6001600160a01b0383166124455760405162461bcd60e51b815260040161064a9061480c565b6001600160a01b03821661246b5760405162461bcd60e51b815260040161064a90614219565b6001600160a01b0380841660008181526066602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906124c6908590613ea7565b60405180910390a3505050565b6000816124f25760405162461bcd60e51b815260040161064a90614965565b826124ff575060006108f5565b670de0b6b3a76400008381029084828161251557fe5b05146125335760405162461bcd60e51b815260040161064a90614769565b826000191480156125475750600160ff1b84145b156125645760405162461bcd60e51b815260040161064a90614769565b600083828161256f57fe5b059050806120b15760405162461bcd60e51b815260040161064a906143c5565b600082158061259c575081155b156125a9575060006108f5565b826000191480156125bd5750600160ff1b82145b156125da5760405162461bcd60e51b815260040161064a906142e4565b828202828482816125e757fe5b05146126055760405162461bcd60e51b815260040161064a906142e4565b670de0b6b3a76400008105806120b15760405162461bcd60e51b815260040161064a90614292565b600080808460200151600581111561264157fe5b141561266157835161265a90849063ffffffff612c7e16565b9050611488565b60018460200151600581111561267357fe5b141561268f57835161265a90849060070263ffffffff612c7e16565b6002846020015160058111156126a157fe5b14156126ba57835161265a90849063ffffffff612c9316565b6003846020015160058111156126cc57fe5b14156126e857835161265a90849060030263ffffffff612c9316565b6004846020015160058111156126fa57fe5b141561271657835161265a90849060060263ffffffff612c9316565b60058460200151600581111561272857fe5b141561274157835161265a90849063ffffffff612d0d16565b60405162461bcd60e51b815260040161064a906147af565b6001600160a01b038316600090815260a760205260409020541561278f5760405162461bcd60e51b815260040161064a906144a6565b611461838383612d34565b600081848411156127be5760405162461bcd60e51b815260040161064a9190613fc1565b505050900390565b6127d08282612d4a565b61168d60008383612e16565b303b1590565b600054610100900460ff16806127fb57506127fb6127dc565b80612809575060005460ff16155b6128255760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612850576000805460ff1961ff0019909116610100171660011790555b612858612e3b565b61144f8383612ebc565b8154600090612873575060006108f5565b82548390600019810190811061288557fe5b60009182526020909120600290910201546001600160801b031682106128d0578254839060001981019081106128b757fe5b90600052602060002090600202016001015490506108f5565b826000815481106128dd57fe5b60009182526020909120600290910201546001600160801b0316821015612906575060006108f5565b8254600090600019015b8181111561296657600060026001838501010490508486828154811061293257fe5b60009182526020909120600290910201546001600160801b03161161295957809250612960565b6001810391505b50612910565b84828154811061297257fe5b9060005260206000209060020201600101549250505092915050565b6004820154600160a01b900460ff16151560011480156129c757506001600160a01b038316600090815260068301602052604090205415155b156129f2576001600160a01b03831660009081526006830160205260409020546129f2908490612f75565b611461838383612f8b565b600082612a0c575060006108f5565b82820282848281612a1957fe5b04146114885760405162461bcd60e51b815260040161064a90614465565b600061148883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130fc565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906120b1575050151592915050565b600054610100900460ff1680612acb5750612acb6127dc565b80612ad9575060005460ff16155b612af55760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612b20576000805460ff1961ff0019909116610100171660011790555b612b28612e3b565b612b30613133565b8015612b42576000805461ff00191690555b50565b600054610100900460ff1680612b5e5750612b5e6127dc565b80612b6c575060005460ff16155b612b885760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612bb3576000805460ff1961ff0019909116610100171660011790555b612b3061320d565b60006001826001811115612bcb57fe5b1415612c1057612bda8361329c565b60061415612bf457612bed836002612c7e565b90506108f5565b612bfd8361329c565b60071415612c1057612bed836001612c7e565b5090919050565b6000612c2862015180835b046132af565b509392505050565b60006001826001811115612c4057fe5b1415612c1057612c4f8361329c565b60061415612c6257612bed836001613345565b612c6b8361329c565b60071415612c1057612bed836002613345565b6201518081028201828110156108f557600080fd5b6000808080612ca56201518087612c22565b600c918801600019810183810494909401965094509250900660010191506000612ccf848461335a565b905080821115612cdd578091505b62015180870662015180612cf28686866133e0565b0201945086851015612d0357600080fd5b5050505092915050565b6000808080612d1f6201518087612c22565b9187019450925090506000612ccf848461335a565b612d3f83838361345c565b611461838383612e16565b6001600160a01b038216612d705760405162461bcd60e51b815260040161064a906149a9565b612d7c60008383611461565b606754612d8f908263ffffffff6123f616565b6067556001600160a01b038216600090815260656020526040902054612dbb908263ffffffff6123f616565b6001600160a01b0383166000818152606560205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e0a908590613ea7565b60405180910390a35050565b612e2183838361357d565b612e2961367c565b612e3283613690565b61146182613690565b600054610100900460ff1680612e545750612e546127dc565b80612e62575060005460ff16155b612e7e5760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612b30576000805460ff1961ff0019909116610100171660011790558015612b42576000805461ff001916905550565b600054610100900460ff1680612ed55750612ed56127dc565b80612ee3575060005460ff16155b612eff5760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff16158015612f2a576000805460ff1961ff0019909116610100171660011790555b8251612f3d9060689060208601906138d8565b508151612f519060699060208501906138d8565b50606a805460ff191660121790558015611461576000805461ff0019169055505050565b612f7f82826136b5565b61168d82600083612e16565b60b25460ff16612fad5760405162461bcd60e51b815260040161064a906148e6565b60b2805460ff191690556000612fc38483611782565b6001600160a01b03851660009081526005850160205260409020805460ff19166001179055600284015490915061300190829063ffffffff6123f616565b60028401556001600160a01b038416600090815260068401602090815260408083205460a79092529091205461303c9163ffffffff6123b416565b6001600160a01b038516600090815260a76020526040902055801561227f5760048084015460405163a9059cbb60e01b81526001600160a01b039091169163a9059cbb9161308e918891869101613e36565b602060405180830381600087803b1580156130a857600080fd5b505af11580156130bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e09190613abf565b61227f5760405162461bcd60e51b815260040161064a9061491d565b6000818361311d5760405162461bcd60e51b815260040161064a9190613fc1565b50600083858161312957fe5b0495945050505050565b600054610100900460ff168061314c575061314c6127dc565b8061315a575060005460ff16155b6131765760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff161580156131a1576000805460ff1961ff0019909116610100171660011790555b60006131ab61241b565b60e480546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015612b42576000805461ff001916905550565b600054610100900460ff168061322657506132266127dc565b80613234575060005460ff16155b6132505760405162461bcd60e51b815260040161064a906145f3565b600054610100900460ff1615801561327b576000805460ff1961ff0019909116610100171660011790555b60b2805460ff191660011790558015612b42576000805461ff001916905550565b6007620151809091046003010660010190565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161330657fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6201518081028203828111156108f557600080fd5b6000816001148061336b5750816003145b806133765750816005145b806133815750816007145b8061338c5750816008145b80613397575081600a145b806133a2575081600c145b156133af5750601f6108f5565b816002146133bf5750601e6108f5565b6133c883613797565b6133d357601c6133d6565b601d5b60ff169392505050565b60006107b28410156133f157600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161342d57fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6001600160a01b0383166134825760405162461bcd60e51b815260040161064a90614724565b6001600160a01b0382166134a85760405162461bcd60e51b815260040161064a90614014565b6134b3838383611461565b6134f681604051806060016040528060268152602001614aee602691396001600160a01b038616600090815260656020526040902054919063ffffffff61279a16565b6001600160a01b03808516600090815260656020526040808220939093559084168152205461352b908263ffffffff6123f616565b6001600160a01b0380841660008181526065602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124c6908590613ea7565b80158061359b5750816001600160a01b0316836001600160a01b0316145b156135a557611461565b6135ae82611691565b1580156135c357506001600160a01b03821615155b1561365057609b546135dc90600163ffffffff6123f616565b609b556135e8826137bc565b613650576099805460018082019092557f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000180546001600160a01b0319166001600160a01b0385169081179091556000908152609a60205260409020805460ff191690911790555b61365983611691565b81141561146157609b5461367490600163ffffffff6123b416565b609b55505050565b61368e60976136896108fb565b6137da565b565b6001600160a01b0381166000908152609860205260409020612b429061368983611691565b6001600160a01b0382166136db5760405162461bcd60e51b815260040161064a90614694565b6136e782600083611461565b61372a81604051806060016040528060228152602001614aac602291396001600160a01b038516600090815260656020526040902054919063ffffffff61279a16565b6001600160a01b038316600090815260656020526040902055606754613756908263ffffffff6123b416565b6067556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612e0a908590613ea7565b6000600482061580156137ac57506064820615155b806108f557505061019090061590565b6001600160a01b03166000908152609a602052604090205460ff1690565b8154158061381257508154829060001981019081106137f557fe5b60009182526020909120600290910201546001600160801b031642115b156138a857604080518082018252426001600160801b039081168252602080830185815286546001808201895560008981529384209551600290920290950180546fffffffffffffffffffffffffffffffff1916919094161783555191909201558354915160001992909201917f76735e462dae5480c552f970568dc60e35cc3c4c06eb818f77bbb357593bf7fa9190a261168d565b8154600090839060001981019081106138bd57fe5b60009182526020909120600160029092020101829055505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061391957805160ff1916838001178555613946565b82800160010185558215613946579182015b8281111561394657825182559160200191906001019061392b565b50613952929150613956565b5090565b6108da91905b80821115613952576000815560010161395c565b80356108f581614a7b565b600082601f83011261398b578081fd5b813567ffffffffffffffff8111156139a1578182fd5b6139b4601f8201601f1916602001614a54565b91508082528360208285010111156139cb57600080fd5b8060208401602084013760009082016020015292915050565b6000602082840312156139f5578081fd5b813561148881614a7b565b600060208284031215613a11578081fd5b815161148881614a7b565b60008060408385031215613a2e578081fd5b8235613a3981614a7b565b91506020830135613a4981614a7b565b809150509250929050565b600080600060608486031215613a68578081fd5b8335613a7381614a7b565b92506020840135613a8381614a7b565b929592945050506040919091013590565b60008060408385031215613aa6578182fd5b8235613ab181614a7b565b946020939093013593505050565b600060208284031215613ad0578081fd5b815161148881614a90565b60008060408385031215613aed578182fd5b8251613af881614a90565b6020939093015192949293505050565b600060208284031215613b19578081fd5b5035919050565b60008060408385031215613b32578182fd5b8235915060208084013567ffffffffffffffff80821115613b51578384fd5b81860187601f820112613b62578485fd5b8035925081831115613b72578485fd5b8383029150613b82848301614a54565b8381528481019082860184840187018b1015613b9c578788fd5b8794505b85851015613bc657613bb28b82613970565b835260019490940193918601918601613ba0565b508096505050505050509250929050565b60008060408385031215613be9578182fd5b50508035926020909101359150565b60008060008060808587031215613c0d578182fd5b84359350602085013592506040850135613c2681614a90565b91506060850135613c3681614a7b565b939692955090935050565b60008060008060808587031215613c56578182fd5b8435613c6181614a7b565b93506020850135613c7181614a7b565b9250604085013591506060850135613c3681614a7b565b600060208284031215613c99578081fd5b813561148881614a9e565b60008060408385031215613cb6578182fd5b8235613ab181614a9e565b600060208284031215613cd2578081fd5b5051919050565b60008060408385031215613ceb578182fd5b823567ffffffffffffffff80821115613d02578384fd5b613d0e8683870161397b565b93506020850135915080821115613d23578283fd5b50613d308582860161397b565b9150509250929050565b600060608284031215613d4b578081fd5b613d556060614a54565b82518152602083015160068110613d6a578283fd5b60208201526040830151613d7d81614a90565b60408201529392505050565b60008060008060808587031215613d9e578182fd5b84359350602085013560098110613db3578283fd5b9250604085013560028110613dc6578283fd5b9396929550929360600135925050565b600080600060608486031215613dea578081fd5b505081359360208301359350604090920135919050565b600060208284031215613e12578081fd5b815160ff81168114611488578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015613e905783516001600160a01b031683529284019291840191600101613e6b565b50909695505050505050565b901515815260200190565b90815260200190565b918252602082015260400190565b9081526f1cd95d1d1b195b595b9d14195c9a5bd960821b602082015260400190565b9081526763757272656e637960c01b602082015260400190565b90815274313ab9b4b732b9b9a230bca1b7b73b32b73a34b7b760591b602082015260400190565b9081526b6d617475726974794461746560a01b602082015260400190565b908152677175616e7469747960c01b602082015260400190565b9081526d195e195c98da5cd954195c9a5bd960921b602082015260400190565b9081526731b0b632b73230b960c11b602082015260400190565b9283526020830191909152604082015260600190565b60408101601d8410613fb757fe5b9281526020015290565b6000602080835283518082850152825b81811015613fed57858101830151858201604001528201613fd1565b81811115613ffe5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252603590820152600080516020614ace83398151915260408201527414d251d39053125391d7d393d517d1539050931151605a1b606082015260800190565b60208082526025908201527f4943542e696e697469616c697a653a20494e56414c49445f444154415f524547604082015264495354525960d81b606082015260800190565b60208082526031908201527f4943542e66657463684465706f736974416d6f756e74466f724576656e743a206040820152701393d517d6515517d1115413d4d2551151607a1b606082015260800190565b60208082526037908201527f4465706f7369742e7570646174654465706f736974416d6f756e743a2044455060408201527f4f5349545f414d4f554e545f414c52454144595f534554000000000000000000606082015260800190565b60208082526026908201527f4943542e696e697469616c697a653a20494e56414c49445f41535345545f524560408201526547495354525960d01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526032908201527f5369676e65644d6174682e666c6f61744d756c743a2043414e4e4f545f524550604082015271524553454e545f4752414e554c415249545960701b606082015260800190565b60208082526027908201527f5369676e65644d6174682e666c6f61744d756c743a204f564552464c4f575f4460408201526611551150d5115160ca1b606082015260800190565b6020808252602d908201527f4465706f7369742e6372656174654465706f7369743a204445504f5349545f4160408201526c4c52454144595f45584953545360981b606082015260800190565b6020808252602d908201527f4465706f7369742e636c61696d4465706f7369743a204445504f5349545f414c60408201526c149150511657d0d31052535151609a1b606082015260800190565b60208082526031908201527f5369676e65644d6174682e666c6f61744469763a2043414e4e4f545f524550526040820152704553454e545f4752414e554c415249545960781b606082015260800190565b6020808252602f908201527f4943542e7265676973746572466f72526564656d7074696f6e3a20415353455460408201526e17d113d154d7d393d517d1561254d5608a1b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526022908201527f4943542e5f7472616e736665723a20484f4c4445525f49535f5349474e414c496040820152614e4760f01b606082015260800190565b6020808252603690820152600080516020614ace83398151915260408201527511115413d4d25517d113d154d7d393d517d1561254d560521b606082015260800190565b6020808252602e908201527f4943542e6372656174654465706f736974466f724576656e743a20464f52424960408201526d4444454e5f4556454e5f5459504560901b606082015260800190565b60208082526024908201527f4943542e736574417373657449643a2041535345545f49445f414c524541445960408201526317d4d15560e21b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602e908201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560408201526d195b881a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526033908201527f4465706f7369742e7570646174654465706f736974416d6f756e743a2044455060408201527213d4d25517d113d154d7d393d517d1561254d5606a1b606082015260800190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b6020808252602f908201527f4943542e6372656174654465706f736974466f724576656e743a20415353455460408201526e17d113d154d7d393d517d1561254d5608a1b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526026908201527f5369676e65644d6174682e666c6f61744469763a204f564552464c4f575f4445604082015265151150d5115160d21b606082015260800190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252603c90820152600080516020614ace83398151915260408201527f4445504f5349545f49535f414c52454144595f50524f43455353454400000000606082015260800190565b6020808252603d90820152600080516020614ace83398151915260408201527f5349474e414c5f414d4f554e545f455843454544535f42414c414e4345000000606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526028908201527f4465706f7369742e7472616e736665724465706f7369743a205452414e5346456040820152671497d1905253115160c21b606082015260800190565b60208082526024908201527f5369676e65644d6174682e666c6f61744469763a20444956494445445f42595f6040820152635a45524f60e01b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b9586526020860194909452604085019290925260608401526001600160a01b03166080830152151560a082015260c00190565b958652602086019490945260408501929092526060840152151560808301526001600160a01b031660a082015260c00190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715614a7357600080fd5b604052919050565b6001600160a01b0381168114612b4257600080fd5b8015158114612b4257600080fd5b601d8110612b4257600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e63654465706f7369742e7369676e616c416d6f756e74466f724465706f7369743a2045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122039b7e095c4389ec66947b63a8e3855a7b335a83d806c37f67a241e4dce8da92864736f6c634300060b0033",
  "immutableReferences": {},
  "sourceMap": "839:7533:67:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "839:7533:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1574:1915:62;;;;;;:::i;:::-;;:::i;:::-;;2469:81:111;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4505:166;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3512:98::-;;;:::i;:::-;;;;;;;:::i;460:26:61:-;;;:::i;4239:1539:67:-;;;;;;:::i;:::-;;:::i;3226:887::-;;;;;;:::i;:::-;;:::i;5131:317:111:-;;;;;;:::i;:::-;;:::i;2141:226:67:-;;;;;;:::i;:::-;;:::i;1152:62:63:-;;;;;;:::i;:::-;;:::i;685:426:62:-;;;;;;:::i;:::-;;:::i;2577:97:60:-;;;:::i;3371:81:111:-;;;:::i;:::-;;;;;;;:::i;1500:1071:60:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5843:215:111:-;;;;;;:::i;:::-;;:::i;1103:43:63:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;7417:172:67:-;;;;;;:::i;:::-;;:::i;1190:22::-;;;:::i;425:124:60:-;;;;;;:::i;:::-;;:::i;2877:158::-;;;;;;:::i;:::-;;:::i;770:724::-;;;;;;:::i;:::-;;:::i;4184:307:62:-;;;;;;:::i;:::-;;:::i;3668:117:111:-;;;;;;:::i;:::-;;:::i;1894:145:109:-;;;:::i;487:293:82:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7552:150:62:-;;;;;;:::i;:::-;;:::i;5654:862::-;;;;;;:::i;:::-;;:::i;6744:617::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;1153:31:67:-;;;:::i;956:145:82:-;;;;;;:::i;:::-;;:::i;1271:77:109:-;;;:::i;:::-;;;;;;;:::i;5871:1540:67:-;;;;;;:::i;:::-;;:::i;2663:85:111:-;;;:::i;1073:35:67:-;;;:::i;3203:139:60:-;;;;;;:::i;:::-;;:::i;1385:750:67:-;;;;;;:::i;:::-;;:::i;1114:32::-;;;:::i;6545:266:111:-;;;;;;:::i;:::-;;:::i;3988:172::-;;;;;;:::i;:::-;;:::i;1117:451:62:-;;;;;;:::i;:::-;;:::i;3670:383::-;;;;;;:::i;:::-;;:::i;4218:149:111:-;;;;;;:::i;:::-;;:::i;234:247:82:-;;;;;;:::i;:::-;;:::i;1599:2214:75:-;;;;;;:::i;:::-;;:::i;2373:847:67:-;;;;;;:::i;:::-;;:::i;2188:240:109:-;;;;;;:::i;:::-;;:::i;648:583:75:-;;;;;;:::i;:::-;;:::i;1574:1915:62:-;1664:23;1690:19;;;:8;:19;;;;;1741:20;;1720:135;;;;-1:-1:-1;;;1720:135:62;;;;;;;:::i;:::-;;;;;;;;;1887:20;;;;-1:-1:-1;;;1887:20:62;;;;:28;;1911:4;1887:28;1866:128;;;;-1:-1:-1;;;1866:128:62;;;;;;;:::i;:::-;2026:20;;2049:3;-1:-1:-1;2005:133:62;;;;-1:-1:-1;;;2005:133:62;;;;;;;:::i;:::-;2213:40;2225:10;2237:15;2213:11;:40::i;:::-;2198:10;2170:39;;;;:27;:39;;;;;;:83;;2149:191;;;;-1:-1:-1;;;2149:191:62;;;;;;;:::i;:::-;2439:17;2435:694;;2582:10;2558:35;;;;:23;;;:35;;;;;;;;;2514:27;:39;;;;;;;:80;;;:43;:80;:::i;:::-;2500:10;2472:39;;;;:27;:39;;;;;:122;2435:694;;;2654:10;2630:35;;;;:23;;;:35;;;;;;2615:50;;2611:518;;;2735:10;2681:27;2711:35;;;:23;;;:35;;;;;;:53;;2751:12;2711:53;:39;:53;:::i;:::-;2848:10;2820:39;;;;:27;:39;;;;;;2681:83;;-1:-1:-1;2820:64:62;;2681:83;2820:64;:43;:64;:::i;:::-;2806:10;2778:39;;;;:27;:39;;;;;:106;-1:-1:-1;2611:518:62;;;2986:10;2915:27;2962:35;;;:23;;;:35;;;;;;2945:53;;:12;;:53;:16;:53;:::i;:::-;3082:10;3054:39;;;;:27;:39;;;;;;2915:83;;-1:-1:-1;3054:64:62;;2915:83;3054:64;:43;:64;:::i;:::-;3040:10;3012:39;;;;:27;:39;;;;;:106;-1:-1:-1;2611:518:62;3277:10;3253:35;;;;:23;;;:35;;;;;;3221:27;;;;:68;;;:31;:68;:::i;:::-;3191:27;;;:98;;;3329:45;;3361:12;3329:45;:31;:45;:::i;:::-;3299:27;;;:75;3456:10;3432:35;;;;:23;;;;:35;;;;;:50;-1:-1:-1;1574:1915:62:o;2469:81:111:-;2538:5;2531:12;;;;;;;;-1:-1:-1;;2531:12:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2506:13;;2531:12;;2538:5;;2531:12;;2538:5;2531:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2469:81;;:::o;4505:166::-;4588:4;4604:39;4613:12;:10;:12::i;:::-;4627:7;4636:6;4604:8;:39::i;:::-;-1:-1:-1;4660:4:111;4505:166;;;;;:::o;3512:98::-;3591:12;;3512:98;:::o;460:26:61:-;;;;:::o;4239:1539:67:-;2014:11:114;;;;2006:55;;;;-1:-1:-1;;;2006:55:114;;;;;;;:::i;:::-;2136:11;:19;;-1:-1:-1;;2136:19:114;;;4375:13:67::1;::::0;4402:7:::1;::::0;4375:35:::1;::::0;-1:-1:-1;;;4375:35:67;;-1:-1:-1;;;;;4375:13:67;;::::1;::::0;:26:::1;::::0;:35:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;4414:4;4375:43;4354:137;;;;-1:-1:-1::0;;;4354:137:67::1;;;;;;;:::i;:::-;4502:38;4525:6;4533;4502:22;:38::i;:::-;4551:23;4577:16:::0;;;:8:::1;:16;::::0;;;;;4729:13:::1;::::0;4772:7:::1;::::0;4729:63;;-1:-1:-1;;;4729:63:67;;4577:16;;4551:23;-1:-1:-1;;;;;4729:13:67;;::::1;::::0;:42:::1;::::0;:63:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4706:86;;4802:18;4830:35;4844:7;:20;;;4830:13;:35::i;:::-;4802:64;;4876:20;4899:57;4944:11;4906:7;:27;;;4899:44;;:57;;;;:::i;:::-;4876:80:::0;-1:-1:-1;4966:15:67::1;4984:38;4876:80:::0;5008:13;4984:38:::1;:23;:38;:::i;:::-;4966:56;;5034:19;5059;5071:6;5059:11;:19::i;:::-;-1:-1:-1::0;5033:45:67;-1:-1:-1;5089:17:67::1;5109:583;5150:13;5137:9;:26;;;;;;;;;;5136:262;;5266:13;::::0;5312:7:::1;::::0;5266:72:::1;::::0;-1:-1:-1;;;5266:72:67;;5222:176:::1;::::0;-1:-1:-1;;;;;5266:13:67::1;::::0;:45:::1;::::0;:72:::1;::::0;5312:7;5266:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5360:20:::0;;5222:22:::1;:176::i;:::-;5136:262;;;5183:20:::0;;5136:262:::1;5434:13;::::0;5478:7:::1;::::0;5434:77:::1;::::0;-1:-1:-1;;;5434:77:67;;-1:-1:-1;;;;;5434:13:67;;::::1;::::0;:43:::1;::::0;:77:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5412:100;;;;;;;;;;5535:13;::::0;5579:7:::1;::::0;5535:64:::1;::::0;-1:-1:-1;;;5535:64:67;;-1:-1:-1;;;;;5535:13:67;;::::1;::::0;:43:::1;::::0;:64:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5526:74;;;;;;;;;;5614:13;::::0;5658:7:::1;::::0;5614:68:::1;::::0;-1:-1:-1;;;5614:68:67;;-1:-1:-1;;;;;5614:13:67;;::::1;::::0;:43:::1;::::0;:68:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5109:583::-;5703:12;::::0;5733:16:::1;::::0;5703:68:::1;::::0;-1:-1:-1;;;5703:68:67;;5089:603;;-1:-1:-1;;;;;;5703:12:67;;::::1;::::0;:29:::1;::::0;:68:::1;::::0;5089:603;;5762:8;;5703:68:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2310:11:114;:18;;-1:-1:-1;;2310:18:114;2324:4;2310:18;;;-1:-1:-1;;;;;;;;;;;4239:1539:67:o;3226:887::-;2014:11:114;;;;2006:55;;;;-1:-1:-1;;;2006:55:114;;;;;;;:::i;:::-;2136:11;:19;;-1:-1:-1;;2136:19:114;;;2150:5;;3376:19:67::1;3388:6:::0;3376:11:::1;:19::i;:::-;3440:13;::::0;3482:7:::1;::::0;3330:65;;-1:-1:-1;3330:65:67;;-1:-1:-1;3407:14:67::1;::::0;;;-1:-1:-1;;;;;3440:13:67::1;::::0;:28:::1;::::0;3517:13:::1;3504:9;:26;;;;;;;;;;3503:341;;3692:13;::::0;3738:7:::1;::::0;3692:74:::1;::::0;-1:-1:-1;;;3692:74:67;;3576:268:::1;::::0;3609:13:::1;::::0;3644:182:::1;::::0;-1:-1:-1;;;;;3692:13:67;;::::1;::::0;:45:::1;::::0;:74:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3792:12;3644:22;:182::i;3576:268::-;3503:341;;;3551:6;3503:341;3440:414;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3406:448:::0;;-1:-1:-1;3406:448:67;-1:-1:-1;3899:4:67::1;3886:17:::0;::::1;;;3865:113;;;;-1:-1:-1::0;;;3865:113:67::1;;;;;;;:::i;:::-;3989:117;4022:6;4053:1;4043:6;:11;;4042:54;;4084:6;-1:-1:-1::0;;4084:11:67::1;4042:54;;;4066:6;3989:19;:117::i;:::-;-1:-1:-1::0;;2310:11:114;:18;;-1:-1:-1;;2310:18:114;2324:4;2310:18;;;-1:-1:-1;;;3226:887:67:o;5131:317:111:-;5237:4;5253:36;5263:6;5271:9;5282:6;5253:9;:36::i;:::-;5299:121;5308:6;5316:12;:10;:12::i;:::-;5330:89;5368:6;5330:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5330:19:111;;;;;;:11;:19;;;;;;5350:12;:10;:12::i;:::-;-1:-1:-1;;;;;5330:33:111;;;;;;;;;;;;-1:-1:-1;5330:33:111;;;:89;;:37;:89;:::i;:::-;5299:8;:121::i;:::-;-1:-1:-1;5437:4:111;5131:317;;;;;:::o;2141:226:67:-;1485:12:109;:10;:12::i;:::-;1475:6;;-1:-1:-1;;;;;1475:6:109;;;:22;;;1467:67;;;;-1:-1:-1;;;1467:67:109;;;;;;;:::i;:::-;2248:7:67::1;::::0;:21;2226:105:::1;;;;-1:-1:-1::0;;;2226:105:67::1;;;;;;;:::i;:::-;2342:7;:18:::0;2141:226::o;1152:62:63:-;;;;;;;;;;;;;:::o;685:426:62:-;800:23;826:19;;;:8;:19;;;;;877:20;;:34;856:126;;;;-1:-1:-1;;;856:126:62;;;;;;;:::i;:::-;993:35;;;1038:20;;;;:35;;-1:-1:-1;;;;1038:35:62;-1:-1:-1;;;1038:35:62;;;;;;;;;;;-1:-1:-1;;;;;;1083:21:62;-1:-1:-1;;;;;1083:21:62;;;;;;;;;-1:-1:-1;685:426:62:o;2577:97:60:-;2653:7;:14;2577:97;:::o;3371:81:111:-;3436:9;;;;3371:81;:::o;1500:1071:60:-;1698:7;:14;1651:16;;1726:11;;;1722:114;;1760:12;;;1722:114;;;-1:-1:-1;1824:1:60;1810:11;;;:15;1722:114;1845:29;1891:4;1877:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1877:19:60;;1845:51;;1910:9;1906:78;1925:4;1921:1;:8;1906:78;;;1966:7;1978:5;1974:1;:9;1966:18;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1966:18:60;1948:12;1961:1;1948:15;;;;;;;;-1:-1:-1;;;;;1948:36:60;;;:15;;;;;;;;;;;:36;1931:3;;1906:78;;;-1:-1:-1;1995:13:60;;2037:225;2053:12;:19;2049:1;:23;2037:225;;;2142:1;2097:42;2109:12;2122:1;2109:15;;;;;;;;;;;;;;2126:12;2097:11;:42::i;:::-;:46;2093:159;;;2163:7;;;;;2093:159;;;2235:1;2209:12;2222:1;2209:15;;;;;;;;;;;;;:28;-1:-1:-1;;;;;2209:28:60;;;-1:-1:-1;;;;;2209:28:60;;;;;2093:159;2074:3;;2037:225;;;2271:25;2313:5;2299:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2299:20:60;;2271:48;;2337:1;2329:9;;2357:1;2353:5;;2348:192;2364:12;:19;2360:1;:23;2348:192;;;2435:1;-1:-1:-1;;;;;2408:29:60;:12;2421:1;2408:15;;;;;;;;;;;;;;-1:-1:-1;;;;;2408:29:60;;2404:126;;2475:12;2488:1;2475:15;;;;;;;;;;;;;;2457:8;2466:5;2457:15;;;;;;;;-1:-1:-1;;;;;2457:33:60;;;:15;;;;;;;;;;;:33;2508:7;;;;;2404:126;2385:3;;;;;2348:192;;;2556:8;1500:1071;-1:-1:-1;;;;;;;;1500:1071:60:o;5843:215:111:-;5931:4;5947:83;5956:12;:10;:12::i;:::-;5970:7;5979:50;6018:10;5979:11;:25;5991:12;:10;:12::i;:::-;-1:-1:-1;;;;;5979:25:111;;;;;;;;;;;;;;;;;-1:-1:-1;5979:25:111;;;:34;;;;;;;;;;;:50;:38;:50;:::i;1103:43:63:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1103:43:63;;;-1:-1:-1;;;1103:43:63;;;;;:::o;7417:172:67:-;7513:4;1485:12:109;:10;:12::i;:::-;1475:6;;-1:-1:-1;;;;;1475:6:109;;;:22;;;1467:67;;;;-1:-1:-1;;;1467:67:109;;;;;;;:::i;:::-;7533:28:67::1;7545:7;7554:6;7533:11;:28::i;1190:22::-:0;;;;:::o;425:124:60:-;1024:12:108;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:108;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:108;;;;;;;:::i;:::-;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:108;;;;;1225:18;1213:4;1225:18;;;1170:80;516:26:60::1;529:4;535:6;516:12;:26::i;:::-;1268:14:108::0;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:108;;;1264:55;425:124:60;;;:::o;2877:158::-;-1:-1:-1;;;;;2990:26:60;;2953:7;2990:26;;;:18;:26;;;;;2979:49;;3018:9;2979:10;:49::i;:::-;2972:56;2877:158;-1:-1:-1;;;2877:158:60:o;770:724::-;834:16;862:13;885:9;904:30;937:7;904:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;904:40:60;;;;;;;;;;;;;;;;;;;;;;;963:1;959:5;;954:228;970:13;:20;966:1;:24;954:228;;;1061:1;1015:43;1027:13;1041:1;1027:16;;;;;;;;;;;;;;1045:12;1015:11;:43::i;:::-;:47;1011:161;;;1082:7;;;;;1011:161;;;1155:1;1128:13;1142:1;1128:16;;;;;;;;;;;;;:29;-1:-1:-1;;;;;1128:29:60;;;-1:-1:-1;;;;;1128:29:60;;;;;1011:161;992:3;;;;;954:228;;;1191:25;1233:5;1219:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1219:20:60;;1191:48;;1257:1;1249:9;;1277:1;1273:5;;1268:195;1284:13;:20;1280:1;:24;1268:195;;;1357:1;-1:-1:-1;;;;;1329:30:60;:13;1343:1;1329:16;;;;;;;;;;;;;;-1:-1:-1;;;;;1329:30:60;;1325:128;;1397:13;1411:1;1397:16;;;;;;;;;;;;;;1379:8;1388:5;1379:15;;;;;;;;-1:-1:-1;;;;;1379:34:60;;;:15;;;;;;;;;;;:34;1431:7;;;;;1325:128;1306:3;;;;;1268:195;;;1479:8;770:724;-1:-1:-1;;;;;770:724:60:o;4184:307:62:-;4242:23;4268:19;;;:8;:19;;;;;;;;4335:10;4319:27;;:15;;;:27;;;;;;;;;:36;4298:128;;;;-1:-1:-1;;;4298:128:62;;;;;;;:::i;:::-;4437:47;4453:10;4465:7;4474:9;4437:15;:47::i;:::-;4184:307;;:::o;3668:117:111:-;-1:-1:-1;;;;;3760:18:111;3734:7;3760:18;;;:9;:18;;;;;;;3668:117::o;1894:145:109:-;1485:12;:10;:12::i;:::-;1475:6;;-1:-1:-1;;;;;1475:6:109;;;:22;;;1467:67;;;;-1:-1:-1;;;1467:67:109;;;;;;;:::i;:::-;1984:6:::1;::::0;1963:40:::1;::::0;2000:1:::1;::::0;-1:-1:-1;;;;;1984:6:109::1;::::0;1963:40:::1;::::0;2000:1;;1963:40:::1;2013:6;:19:::0;;-1:-1:-1;;;;;;2013:19:109::1;::::0;;1894:145::o;487:293:82:-;569:9;;;659:3;649:13;;;625:40;;;;;;;;603:62;-1:-1:-1;;698:32:82;;;;-1:-1:-1;487:293:82;;;:::o;7552:150:62:-;7637:4;7660:19;;;:8;:19;;;;;;;;-1:-1:-1;;;;;7660:35:62;;;;;;:27;;;;:35;;;;;;;7552:150::o;5654:862::-;5741:7;5786:19;;;:8;:19;;;;;;;;-1:-1:-1;;;;;5820:22:62;;;;:15;;;:22;;;;;;;;5816:36;;;5851:1;5844:8;;;;;5816:36;5863:19;5885:35;5899:7;:20;;;5885:13;:35::i;:::-;6086:20;;;;5863:57;;-1:-1:-1;6067:15:62;;-1:-1:-1;;;6086:20:62;;;;6085:122;;6167:40;6179:5;6186:7;:20;;;6167:11;:40::i;:::-;6085:122;;;-1:-1:-1;;;;;6122:30:62;;;;;;:23;;;:30;;;;;;6085:122;6067:140;;6349:13;6365:121;6411:7;:20;;;;;;;;;;;;6410:66;;6465:11;6410:66;;;6435:7;:27;;;6410:66;6377:14;;;;6365:27;;:7;;:27;:11;:27;:::i;:::-;:31;:121;:31;:121;:::i;:::-;6349:137;5654:862;-1:-1:-1;;;;;;;5654:862:62:o;6744:617::-;6841:20;7074:19;;;:8;:19;;;;;7119:20;;7158:14;;;;7198:21;;;;7251:27;;;;7303:20;;;;;7119;;7158:14;;7198:21;;7251:27;;7303:20;-1:-1:-1;;;7303:20:62;;;;-1:-1:-1;;;;;7341:13:62;;6744:617::o;1153:31:67:-;;;;:::o;956:145:82:-;1046:7;1084:9;1076:18;;;;;;;1271:77:109;1335:6;;-1:-1:-1;;;;;1335:6:109;1271:77;:::o;5871:1540:67:-;2014:11:114;;;;2006:55;;;;-1:-1:-1;;;2006:55:114;;;;;;;:::i;:::-;2136:11;:19;;-1:-1:-1;;2136:19:114;;;6001:13:67::1;::::0;6028:7:::1;::::0;6001:35:::1;::::0;-1:-1:-1;;;6001:35:67;;-1:-1:-1;;;;;6001:13:67;;::::1;::::0;:26:::1;::::0;:35:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;6040:4;6001:43;5980:137;;;;-1:-1:-1::0;;;5980:137:67::1;;;;;;;:::i;:::-;6128:33;6151:6;6159:1;6128:22;:33::i;:::-;6172:23;6198:16:::0;;;:8:::1;:16;::::0;;;;;6350:13:::1;::::0;6393:7:::1;::::0;6350:63;;-1:-1:-1;;;6350:63:67;;6198:16;;6172:23;-1:-1:-1;;;;;6350:13:67;;::::1;::::0;:42:::1;::::0;:63:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6327:86;;6423:18;6451:35;6465:7;:20;;;6451:13;:35::i;:::-;6423:64;;6497:20;6520:57;6565:11;6527:7;:27;;;6520:44;;:57;;;;:::i;:::-;6497:80:::0;-1:-1:-1;6587:15:67::1;6605:38;6497:80:::0;6629:13;6605:38:::1;:23;:38;:::i;:::-;6587:56;;6655:19;6676:20:::0;6700:19:::1;6712:6;6700:11;:19::i;:::-;6654:65:::0;;-1:-1:-1;6654:65:67;-1:-1:-1;6730:17:67::1;6750:575;6791:13;6778:9;:26;;;;;;;;;;6777:254;;6907:13;::::0;6953:7:::1;::::0;6907:72:::1;::::0;-1:-1:-1;;;6907:72:67;;6863:168:::1;::::0;-1:-1:-1;;;;;6907:13:67::1;::::0;:45:::1;::::0;:72:::1;::::0;6953:7;6907:72:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7001:12;6863:22;:168::i;6777:254::-;6824:20:::0;;7067:13:::1;::::0;7111:7:::1;::::0;7067:77:::1;::::0;-1:-1:-1;;;7067:77:67;;-1:-1:-1;;;;;7067:13:67;;::::1;::::0;:43:::1;::::0;:77:::1;::::0;::::1;;;:::i;6750:575::-;7336:12;::::0;7366:16:::1;::::0;7336:68:::1;::::0;-1:-1:-1;;;7336:68:67;;6730:595;;-1:-1:-1;;;;;;7336:12:67;;::::1;::::0;:29:::1;::::0;:68:::1;::::0;6730:595;;7395:8;;7336:68:::1;;;:::i;2663:85:111:-:0;2734:7;2727:14;;;;;;;;-1:-1:-1;;2727:14:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2702:13;;2727:14;;2734:7;;2727:14;;2734:7;2727:14;;;;;;;;;;;;;;;;;;;;;;;;1073:35:67;;;-1:-1:-1;;;;;1073:35:67;;:::o;3203:139:60:-;3265:7;3291:44;3302:21;3325:9;3291:10;:44::i;1385:750:67:-;1024:12:108;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:108;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:108;;;;;;;:::i;:::-;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:108;;;;;1225:18;1213:4;1225:18;;;1170:80;1614:36:67::1;1622:14;-1:-1:-1::0;;;;;1614:34:67::1;;:36::i;:::-;1593:121;;;;-1:-1:-1::0;;;1593:121:67::1;;;;;;;:::i;:::-;1745:35;1753:13;-1:-1:-1::0;;;;;1745:33:67::1;;:35::i;:::-;1724:119;;;;-1:-1:-1::0;;;1724:119:67::1;;;;;;;:::i;:::-;1854:55;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1854:55:67::1;;::::0;:16:::1;:55::i;:::-;1919:16;:14;:16::i;:::-;1945:24;:22;:24::i;:::-;1979;1997:5;1979:17;:24::i;:::-;2014:13;:30:::0;;-1:-1:-1;;;;;2014:30:67;;::::1;-1:-1:-1::0;;;;;;2014:30:67;;::::1;;::::0;;;2054:12:::1;:28:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;2092:16:::1;:36:::0;;;1264:55:108;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:108;;;1264:55;1385:750:67;;;;;:::o;1114:32::-;;;-1:-1:-1;;;;;1114:32:67;;:::o;6545:266:111:-;6638:4;6654:129;6663:12;:10;:12::i;:::-;6677:7;6686:96;6725:15;6686:96;;;;;;;;;;;;;;;;;:11;:25;6698:12;:10;:12::i;:::-;-1:-1:-1;;;;;6686:25:111;;;;;;;;;;;;;;;;;-1:-1:-1;6686:25:111;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;3988:172::-;4074:4;4090:42;4100:12;:10;:12::i;:::-;4114:9;4125:6;4090:9;:42::i;1117:451:62:-;1198:23;1224:19;;;:8;:19;;;;;1275:20;;1254:132;;;;-1:-1:-1;;;1254:132:62;;;;;;;:::i;:::-;1418:14;;;;:28;1397:130;;;;-1:-1:-1;;;1397:130:62;;;;;;;:::i;:::-;1538:14;;:23;-1:-1:-1;1117:451:62:o;3670:383::-;3803:23;3829:19;;;:8;:19;;;;;;3859:188;3883:6;:13;3879:1;:17;3859:188;;;3921:7;:15;;:26;3937:6;3944:1;3937:9;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3921:26:62;;;;;;;;;;;-1:-1:-1;3921:26:62;;;;3917:120;;3976:46;3992:6;3999:1;3992:9;;;;;;;;;;;;;;4003:7;4012:9;3976:15;:46::i;:::-;3898:3;;3859:188;;;;3670:383;;;:::o;4218:149:111:-;-1:-1:-1;;;;;4333:18:111;;;4307:7;4333:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4218:149::o;234:247:82:-;343:7;451:12;425:3;409:9;403:16;;;;;;;;395:25;;387:41;;:77;;234:247;-1:-1:-1;;;234:247:82:o;1599:2214:75:-;1800:7;1890:12;1877:9;:25;1873:47;;;-1:-1:-1;1911:9:75;1904:16;;1873:47;2003:25;1989:10;:39;;;;;;;;;:82;;;-1:-1:-1;2046:25:75;2032:10;:39;;;;;;;;;1989:82;1985:1795;;;2094:60;2134:9;2145:8;2094:39;:60::i;:::-;2087:67;;;;1985:1795;2372:26;2358:10;:40;;;;;;;;;:84;;;-1:-1:-1;2416:26:75;2402:10;:40;;;;;;;;;2358:84;2354:1426;;;2458:34;2495:60;2535:9;2546:8;2495:39;:60::i;:::-;2458:97;;2641:47;2678:9;2641:36;:47::i;:::-;2573:64;2610:26;2573:36;:64::i;:::-;:115;2569:187;;;2715:26;-1:-1:-1;2708:33:75;;2569:187;2776:61;2817:9;2828:8;2776:40;:61::i;:::-;2769:68;;;;;2354:1426;2928:25;2914:10;:39;;;;;;;;;:82;;;-1:-1:-1;2971:25:75;2957:10;:39;;;;;;;;;2914:82;2910:870;;;3019:61;3060:9;3071:8;3019:40;:61::i;2910:870::-;3301:26;3287:10;:40;;;;;;;;;:84;;;-1:-1:-1;3345:26:75;3331:10;:40;;;;;;;;;3287:84;3283:497;;;3387:35;3425:61;3466:9;3477:8;3425:40;:61::i;:::-;3387:99;;3573:47;3610:9;3573:36;:47::i;:::-;3504:65;3541:27;3504:36;:65::i;:::-;:116;3500:189;;;3647:27;-1:-1:-1;3640:34:75;;3500:189;3709:60;3749:9;3760:8;3709:39;:60::i;3283:497::-;-1:-1:-1;3797:9:75;1599:2214;;;;;;;:::o;2373:847:67:-;2014:11:114;;;;2006:55;;;;-1:-1:-1;;;2006:55:114;;;;;;;:::i;:::-;2136:11;:19;;-1:-1:-1;;2136:19:114;;;2493:13:67::1;::::0;2520:7:::1;::::0;2493:35:::1;::::0;-1:-1:-1;;;2493:35:67;;-1:-1:-1;;;;;2493:13:67;;::::1;::::0;:26:::1;::::0;:35:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;2532:4;2493:43;2472:137;;;;-1:-1:-1::0;;;2472:137:67::1;;;;;;;:::i;:::-;2621:19;2642:20:::0;2666:19:::1;2678:6;2666:11;:19::i;:::-;2620:65:::0;;-1:-1:-1;2620:65:67;-1:-1:-1;2858:12:67::1;2845:9;:25;;;;;;;;;;:55;;;;-1:-1:-1::0;2887:13:67::1;2874:9;:26;;;;;;;;;;2845:55;2824:148;;;;-1:-1:-1::0;;;2824:148:67::1;;;;;;;:::i;:::-;3002:13;::::0;3049:7:::1;::::0;3002:67:::1;::::0;-1:-1:-1;;;3002:67:67;;2983:16:::1;::::0;-1:-1:-1;;;;;3002:13:67::1;::::0;:46:::1;::::0;:67:::1;::::0;3049:7;3002:67:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2983:86:::0;-1:-1:-1;3080:133:67::1;3107:6:::0;3127:12;3167:13:::1;3154:9;:26;;;;;;;;;3195:8;3080:13;:133::i;:::-;-1:-1:-1::0;;2310:11:114;:18;;-1:-1:-1;;2310:18:114;2324:4;2310:18;;;-1:-1:-1;;2373:847:67:o;2188:240:109:-;1485:12;:10;:12::i;:::-;1475:6;;-1:-1:-1;;;;;1475:6:109;;;:22;;;1467:67;;;;-1:-1:-1;;;1467:67:109;;;;;;;:::i;:::-;-1:-1:-1;;;;;2276:22:109;::::1;2268:73;;;;-1:-1:-1::0;;;2268:73:109::1;;;;;;;:::i;:::-;2377:6;::::0;2356:38:::1;::::0;-1:-1:-1;;;;;2356:38:109;;::::1;::::0;2377:6:::1;::::0;2356:38:::1;::::0;2377:6:::1;::::0;2356:38:::1;2404:6;:17:::0;;-1:-1:-1;;;;;;2404:17:109::1;-1:-1:-1::0;;;;;2404:17:109;;;::::1;::::0;;;::::1;::::0;;2188:240::o;648:583:75:-;848:7;902:25;888:10;:39;;;;;;;;;:95;;;-1:-1:-1;957:26:75;943:10;:40;;;;;;;;;888:95;:150;;;-1:-1:-1;1013:25:75;999:10;:39;;;;;;;;;888:150;:206;;;-1:-1:-1;1068:26:75;1054:10;:40;;;;;;;;;888:206;871:275;;;-1:-1:-1;1126:9:75;1119:16;;871:275;1163:61;1178:9;1189:10;1201:8;1211:12;1163:14;:61::i;1274:134:110:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;-1:-1:-1;;;938:46:110;;;;;;;:::i;931:104:107:-;1018:10;931:104;:::o;9609:340:111:-;-1:-1:-1;;;;;9710:19:111;;9702:68;;;;-1:-1:-1;;;9702:68:111;;;;;;;:::i;:::-;-1:-1:-1;;;;;9788:21:111;;9780:68;;;;-1:-1:-1;;;9780:68:111;;;;;;;:::i;:::-;-1:-1:-1;;;;;9859:18:111;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;9910:32;;;;;9889:6;;9910:32;:::i;:::-;;;;;;;;9609:340;;;:::o;1146:600:80:-;1231:6;1261;1253:55;;;;-1:-1:-1;;;1253:55:80;;;;;;;:::i;:::-;1372:6;1368:20;;-1:-1:-1;1387:1:80;1380:8;;1368:20;353:15;1409:25;;;;:1;:25;:1;1452:5;;;;;:30;1444:81;;;;-1:-1:-1;;;1444:81:80;;;;;;;:::i;:::-;1546:1;-1:-1:-1;;1546:7:80;:26;;;;;-1:-1:-1;;;1557:1:80;:15;1546:26;1544:29;1536:80;;;;-1:-1:-1;;;1536:80:80;;;;;;;:::i;:::-;1626:8;1641:1;1637;:5;;;;;;;-1:-1:-1;1660:6:80;1652:68;;;;-1:-1:-1;;;1652:68:80;;;;;;;:::i;613:527::-;699:6;725;;;:16;;-1:-1:-1;735:6:80;;725:16;721:30;;;-1:-1:-1;750:1:80;743:8;;721:30;772:1;-1:-1:-1;;772:7:80;:26;;;;;-1:-1:-1;;;783:1:80;:15;772:26;770:29;762:81;;;;-1:-1:-1;;;762:81:80;;;;;;;:::i;:::-;864:5;;;868:1;864;:5;:1;887:5;;;;;:10;879:62;;;;-1:-1:-1;;;879:62:80;;;;;;;:::i;:::-;353:15;1010:25;;;1045:69;;;;-1:-1:-1;;;1045:69:80;;;;;;;:::i;443:879:83:-;559:7;;;617:6;:8;;;:15;;;;;;;;;613:673;;;681:8;;663:27;;:9;;:27;:17;:27;:::i;:::-;648:42;;613:673;;;723:3;711:6;:8;;;:15;;;;;;;;;707:579;;;775:8;;757:31;;:9;;786:1;775:12;757:31;:17;:31;:::i;707:579::-;821:3;809:6;:8;;;:15;;;;;;;;;805:481;;;875:8;;855:29;;:9;;:29;:19;:29;:::i;805:481::-;917:3;905:6;:8;;;:15;;;;;;;;;901:385;;;971:8;;951:33;;:9;;982:1;971:12;951:33;:19;:33;:::i;901:385::-;1017:3;1005:6;:8;;;:15;;;;;;;;;1001:285;;;1071:8;;1051:33;;:9;;1082:1;1071:12;1051:33;:19;:33;:::i;1001:285::-;1117:3;1105:6;:8;;;:15;;;;;;;;;1101:185;;;1170:8;;1151:28;;:9;;:28;:18;:28;:::i;1101:185::-;1210:65;;-1:-1:-1;;;1210:65:83;;;;;;;:::i;7595:322:67:-;-1:-1:-1;;;;;7770:33:67;;;;;;:27;:33;;;;;;:38;7749:119;;;;-1:-1:-1;;;7749:119:67;;;;;;;:::i;:::-;7878:32;7894:4;7900:2;7904:5;7878:15;:32::i;1692:187:110:-;1778:7;1813:12;1805:6;;;;1797:29;;;;-1:-1:-1;;;1797:29:110;;;;;;;;:::i;:::-;-1:-1:-1;;;1848:5:110;;;1692:187::o;5086:216:60:-;5207:31;5219:11;5232:5;5207:11;:31::i;:::-;5248:47;5272:1;5276:11;5289:5;5248:15;:47::i;1409:498:108:-;1820:4;1864:17;1895:7;1409:498;:::o;2046:174:111:-;1024:12:108;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:108;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:108;;;;;;;:::i;:::-;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:108;;;;;1225:18;1213:4;1225:18;;;1170:80;2141:26:111::1;:24;:26::i;:::-;2177:36;2200:4;2206:6;2177:22;:36::i;491:876:58:-:0;692:18;;635:7;;688:37;;-1:-1:-1;724:1:58;717:8;;688:37;806:18;;794:11;;-1:-1:-1;;806:22:58;;;794:35;;;;;;;;;;;;;;;;;;;:45;-1:-1:-1;;;;;794:45:58;781:58;;777:124;;872:18;;860:11;;-1:-1:-1;;872:22:58;;;860:35;;;;;;;;;;;;;;;;:41;;;853:48;;;;777:124;927:11;939:1;927:14;;;;;;;;;;;;;;;;;;;;;:24;-1:-1:-1;;;;;927:24:58;915:36;;911:50;;;-1:-1:-1;960:1:58;953:8;;911:50;1062:18;;1023:11;;-1:-1:-1;;1062:22:58;1094:228;1107:3;1101;:9;1094:228;;;1126:11;1158:1;1153;1141:9;;;:13;1140:19;1126:33;;1207:9;1177:11;1189:3;1177:16;;;;;;;;;;;;;;;;;;;;;:26;-1:-1:-1;;;;;1177:26:58;:39;1173:139;;1242:3;1236:9;;1173:139;;;1296:1;1290:3;:7;1284:13;;1173:139;1094:228;;;;1338:11;1350:3;1338:16;;;;;;;;;;;;;;;;;;:22;;;1331:29;;;;491:876;;;;:::o;7923:447:67:-;8105:20;;;;-1:-1:-1;;;8105:20:67;;;;:28;;8129:4;8105:28;:66;;;;-1:-1:-1;;;;;;8137:30:67;;8170:1;8137:30;;;:23;;;:30;;;;;;:34;;8105:66;8101:141;;;-1:-1:-1;;;;;8200:30:67;;;;;;:23;;;:30;;;;;;8187:44;;8193:5;;8187;:44::i;:::-;8315:48;8337:5;8344:7;8353:9;8315:21;:48::i;2119:459:110:-;2177:7;2418:6;2414:45;;-1:-1:-1;2447:1:110;2440:8;;2414:45;2481:5;;;2485:1;2481;:5;:1;2504:5;;;;;:10;2496:56;;;;-1:-1:-1;;;2496:56:110;;;;;;;:::i;3033:130::-;3091:7;3117:39;3121:1;3124;3117:39;;;;;;;;;;;;;;;;;:3;:39::i;685:610:113:-;745:4;1206:20;;1051:66;1245:23;;;;;;:42;;-1:-1:-1;;1272:15:113;;;1237:51;-1:-1:-1;;685:610:113:o;867:126:109:-;1024:12:108;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:108;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:108;;;;;;;:::i;:::-;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:108;;;;;1225:18;1213:4;1225:18;;;1170:80;924:26:109::1;:24;:26::i;:::-;960;:24;:26::i;:::-;1268:14:108::0;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:108;;;1264:55;867:126:109;:::o;898:106:114:-;1024:12:108;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:108;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:108;;;;;;;:::i;:::-;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:108;;;;;1225:18;1213:4;1225:18;;;1170:80;963:34:114::1;:32;:34::i;3980:550:75:-:0;4114:7;4153:11;4141:8;:23;;;;;;;;;4137:361;;;4184:51;4225:9;4184:40;:51::i;:::-;4239:1;4184:56;4180:308;;;4267:49;4303:9;4314:1;4267:35;:49::i;:::-;4260:56;;;;4180:308;4341:51;4382:9;4341:40;:51::i;:::-;4396:1;4341:56;4337:151;;;4424:49;4460:9;4471:1;4424:35;:49::i;4337:151::-;-1:-1:-1;4514:9:75;;3980:550;-1:-1:-1;3980:550:75:o;7219:138:106:-;7276:10;7310:40;1020:12;7322:9;:27;;7310:11;:40::i;:::-;-1:-1:-1;7298:52:106;7219:138;-1:-1:-1;;;7219:138:106:o;4694:551:75:-;4829:7;4868:11;4856:8;:23;;;;;;;;;4852:361;;;4899:51;4940:9;4899:40;:51::i;:::-;4954:1;4899:56;4895:308;;;4982:49;5018:9;5029:1;4982:35;:49::i;4895:308::-;5056:51;5097:9;5056:40;:51::i;:::-;5111:1;5056:56;5052:151;;;5139:49;5175:9;5186:1;5139:35;:49::i;9033:198:106:-;1020:12;9157:23;;9145:35;;9198:25;;;;9190:34;;;;;8467:561;8539:17;;;;8604:40;1020:12;8616:9;:27;;8604:40;8702:2;8654:16;;;-1:-1:-1;;8689:9:106;;8688:16;;;8680:24;;;;;-1:-1:-1;8654:16:106;-1:-1:-1;8568:76:106;-1:-1:-1;8702:2:106;8722:16;8741:1;8722:20;8714:28;;8752:16;8771:28;8787:4;8793:5;8771:15;:28::i;:::-;8752:47;;8819:11;8813:3;:17;8809:65;;;8852:11;8846:17;;8809:65;1020:12;8950:9;:27;1020:12;8898:31;8912:4;8918:5;8925:3;8898:13;:31::i;:::-;:49;:79;8883:94;;9011:9;8995:12;:25;;8987:34;;;;;;8467:561;;;;;;;;:::o;7977:485::-;8047:17;;;;8112:40;1020:12;8124:9;:27;;8112:40;8162:14;;;;-1:-1:-1;8076:76:106;-1:-1:-1;8076:76:106;-1:-1:-1;8186:16:106;8205:28;8162:14;8076:76;8205:15;:28::i;5530:235:60:-;5684:32;5700:4;5706:2;5710:5;5684:15;:32::i;:::-;5726;5742:4;5748:2;5752:5;5726:15;:32::i;8085:370:111:-;-1:-1:-1;;;;;8168:21:111;;8160:65;;;;-1:-1:-1;;;8160:65:111;;;;;;;:::i;:::-;8236:49;8265:1;8269:7;8278:6;8236:20;:49::i;:::-;8311:12;;:24;;8328:6;8311:24;:16;:24;:::i;:::-;8296:12;:39;-1:-1:-1;;;;;8366:18:111;;;;;;:9;:18;;;;;;:30;;8389:6;8366:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;8345:18:111;;;;;;:9;:18;;;;;;:51;;;;8411:37;;8345:18;;;8411:37;;;;8441:6;;8411:37;:::i;:::-;;;;;;;;8085:370;;:::o;4832:248:60:-;4917:35;4936:4;4942:2;4946:5;4917:18;:35::i;:::-;4962:31;:29;:31::i;:::-;5003;5029:4;5003:25;:31::i;:::-;5044:29;5070:2;5044:25;:29::i;858:66:107:-;1024:12:108;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:108;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:108;;;;;;;:::i;:::-;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:108;;;;;1225:18;1213:4;1225:18;;;1268:14;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:108;;;858:66:107;:::o;2226:177:111:-;1024:12:108;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:108;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:108;;;;;;;:::i;:::-;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:108;;;;;1225:18;1213:4;1225:18;;;1170:80;2333:12:111;;::::1;::::0;:5:::1;::::0;:12:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2355:16:111;;::::1;::::0;:7:::1;::::0;:16:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2381:9:111::1;:14:::0;;-1:-1:-1;;2381:14:111::1;2393:2;2381:14;::::0;;1264:55:108;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:108;;;2226:177:111;;;:::o;5308:216:60:-;5429:31;5441:11;5454:5;5429:11;:31::i;:::-;5470:47;5486:11;5507:1;5511:5;5470:15;:47::i;4662:780:62:-;2014:11:114;;;;2006:55;;;;-1:-1:-1;;;2006:55:114;;;;;;;:::i;:::-;2136:11;:19;;-1:-1:-1;;2136:19:114;;;2150:5;4862:41:62::1;4886:5:::0;4893:9;4862:23:::1;:41::i;:::-;-1:-1:-1::0;;;;;4914:22:62;::::1;;::::0;;;:15:::1;::::0;::::1;:22;::::0;;;;:29;;-1:-1:-1;;4914:29:62::1;4939:4;4914:29;::::0;;4987:21:::1;::::0;::::1;::::0;4846:57;;-1:-1:-1;4977:32:62::1;::::0;4846:57;;4977:32:::1;:9;:32;:::i;:::-;4953:21;::::0;::::1;:56:::0;-1:-1:-1;;;;;5211:30:62;::::1;;::::0;;;:23:::1;::::0;::::1;:30;::::0;;;;;;;;5172:27:::1;:34:::0;;;;;;;:70:::1;::::0;::::1;:38;:70;:::i;:::-;-1:-1:-1::0;;;;;5135:34:62;::::1;;::::0;;;:27:::1;:34;::::0;;;;:107;5257:9;;5253:183:::1;;5314:13;::::0;;::::1;::::0;5307:44:::1;::::0;-1:-1:-1;;;5307:44:62;;-1:-1:-1;;;;;5314:13:62;;::::1;::::0;5307:30:::1;::::0;:44:::1;::::0;5338:5;;5345;;5307:44:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5282:143;;;;-1:-1:-1::0;;;5282:143:62::1;;;;;;;:::i;3638:338:110:-:0;3724:7;3824:12;3817:5;3809:28;;;;-1:-1:-1;;;3809:28:110;;;;;;;;:::i;:::-;;3847:9;3863:1;3859;:5;;;;;;;3638:338;-1:-1:-1;;;;;3638:338:110:o;999:195:109:-;1024:12:108;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:108;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:108;;;;;;;:::i;:::-;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:108;;;;;1225:18;1213:4;1225:18;;;1170:80;1068:17:109::1;1088:12;:10;:12::i;:::-;1110:6;:18:::0;;-1:-1:-1;;;;;;1110:18:109::1;-1:-1:-1::0;;;;;1110:18:109;::::1;::::0;;::::1;::::0;;;1143:43:::1;::::0;1110:18;;-1:-1:-1;1110:18:109;-1:-1:-1;;1143:43:109::1;::::0;-1:-1:-1;;1143:43:109::1;1256:1:108;1268:14:::0;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:108;;;999:195:109;:::o;1010:515:114:-;1024:12:108;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:108;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:108;;;;;;;:::i;:::-;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:108;;;;;1225:18;1213:4;1225:18;;;1170:80;1499:11:114::1;:18:::0;;-1:-1:-1;;1499:18:114::1;1513:4;1499:18;::::0;;1264:55:108;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:108;;;1010:515:114;:::o;6898:175:106:-;7061:1;1020:12;6998:27;;;7056:1;7048:9;7047:15;7065:1;7047:19;;6898:175::o;3309:605::-;3365:9;;;3425:5;3450:31;;;3365:9;3507:6;3499:1;:5;;:14;;-1:-1:-1;3550:1:106;3545;3532:6;:10;;:14;3531:20;3527:24;;;;3561:9;3590:7;3573:4;3585:1;3581:5;;3573:14;:24;;-1:-1:-1;3630:1:106;3615:4;:12;;:16;3611:1;:20;3634:2;3611:25;3607:29;;3646:10;3668:4;3664:1;3659:2;:6;:13;;;;;;;-1:-1:-1;3682:8:106;3713:2;3697:4;:13;;:18;3693:22;;;-1:-1:-1;3738:2:106;3729:6;:11;-1:-1:-1;;3803:6:106;;;;3796:3;:14;:22;;;;:26;;;3768:1;3772:2;:6;;;3759:19;;;;;;;;-1:-1:-1;3729:11:106;-1:-1:-1;3796:26:106;-1:-1:-1;;;;3309:605:106:o;10938:198::-;1020:12;11062:23;;11050:35;;11103:25;;;;11095:34;;;;;6480:383;6551:16;6583:5;6592:1;6583:10;:24;;;;6597:5;6606:1;6597:10;6583:24;:38;;;;6611:5;6620:1;6611:10;6583:38;:52;;;;6625:5;6634:1;6625:10;6583:52;:66;;;;6639:5;6648:1;6639:10;6583:66;:81;;;;6653:5;6662:2;6653:11;6583:81;:96;;;;6668:5;6677:2;6668:11;6583:96;6579:278;;;-1:-1:-1;6709:2:106;6579:278;;;6732:5;6741:1;6732:10;6728:129;;-1:-1:-1;6772:2:106;6728:129;;;6819:17;6831:4;6819:11;:17::i;:::-;:27;;6844:2;6819:27;;;6839:2;6819:27;6805:41;;;6480:383;-1:-1:-1;;;6480:383:106:o;2045:511::-;2124:10;2162:4;2154;:12;;2146:21;;;;;;2193:4;2225:5;2256:3;2177:9;1157:7;2490:1;2440;2483:3;2454:4;2477:2;-1:-1:-1;;2462:11:106;;2461:18;2446:33;;;2445:41;2440:47;:51;2425:2;;-1:-1:-1;;2399:11:106;;2398:18;2419:2;2398:23;2394:1;2385:6;:10;:36;2378:3;:44;:49;;;;;;2364:1;2319:4;2358:2;-1:-1:-1;;2343:11:106;;2342:18;2327:33;;2335:4;2327:33;2319:42;:46;2301:5;2284:4;:22;:81;:143;:207;:234;2271:247;;2542:6;2529:20;;2045:511;;;;;;;;;:::o;7285:530:111:-;-1:-1:-1;;;;;7390:20:111;;7382:70;;;;-1:-1:-1;;;7382:70:111;;;;;;;:::i;:::-;-1:-1:-1;;;;;7470:23:111;;7462:71;;;;-1:-1:-1;;;7462:71:111;;;;;;;:::i;:::-;7544:47;7565:6;7573:9;7584:6;7544:20;:47::i;:::-;7622:71;7644:6;7622:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7622:17:111;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;7602:17:111;;;;;;;:9;:17;;;;;;:91;;;;7726:20;;;;;;;:32;;7751:6;7726:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;7703:20:111;;;;;;;:9;:20;;;;;;;:55;;;;7773:35;;;;;;;;;;7801:6;;7773:35;:::i;3469:618:60:-;3562:10;;;3561:28;;;3586:2;-1:-1:-1;;;;;3578:10:60;:4;-1:-1:-1;;;;;3578:10:60;;3561:28;3557:65;;;3605:7;;3557:65;3692:13;3702:2;3692:9;:13::i;:::-;:18;3691:42;;;;-1:-1:-1;;;;;;3716:16:60;;;;3691:42;3687:236;;;3763:11;;:18;;3779:1;3763:18;:15;:18;:::i;:::-;3749:11;:32;3800:21;3818:2;3800:17;:21::i;:::-;3795:118;;3841:7;:16;;;;;;;;;;;;;-1:-1:-1;;;;;;3841:16:60;-1:-1:-1;;;;;3841:16:60;;;;;;;;-1:-1:-1;3875:16:60;;;:12;3841:16;3875;;;;:23;;-1:-1:-1;;3875:23:60;;;;;;3795:118;4007:15;4017:4;4007:9;:15::i;:::-;3998:5;:24;3994:87;;;4052:11;;:18;;4068:1;4052:18;:15;:18;:::i;:::-;4038:11;:32;3469:618;;;:::o;4193:121::-;4253:54;4270:21;4293:13;:11;:13::i;:::-;4253:16;:54::i;:::-;4193:121::o;4487:140::-;-1:-1:-1;;;;;4574:26:60;;;;;;:18;:26;;;;;4557:63;;4602:17;4593:6;4602:9;:17::i;8774:410:111:-;-1:-1:-1;;;;;8857:21:111;;8849:67;;;;-1:-1:-1;;;8849:67:111;;;;;;;:::i;:::-;8927:49;8948:7;8965:1;8969:6;8927:20;:49::i;:::-;9008:68;9031:6;9008:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9008:18:111;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;8987:18:111;;;;;;:9;:18;;;;;:89;9101:12;;:24;;9118:6;9101:24;:16;:24;:::i;:::-;9086:12;:39;9140:37;;9166:1;;-1:-1:-1;;;;;9140:37:111;;;;;;;9170:6;;9140:37;:::i;5820:157:106:-;5875:13;5920:1;5913:4;:8;:13;5912:36;;;;-1:-1:-1;5939:3:106;5932:4;:10;:15;;5912:36;5911:59;;;-1:-1:-1;;5961:3:106;5954:10;;:15;;5820:157::o;3348:115:60:-;-1:-1:-1;;;;;3436:20:60;3413:4;3436:20;;;:12;:20;;;;;;;;;3348:115::o;1666:894:58:-;2021:18;;:23;;:104;;-1:-1:-1;2091:18:58;;2079:11;;-1:-1:-1;;2091:22:58;;;2079:35;;;;;;;;;;;;;;;;;;;:45;-1:-1:-1;;;;;2079:45:58;2061:15;:63;2021:104;2004:550;;;2211:65;;;;;;;;2243:15;-1:-1:-1;;;;;2211:65:58;;;;;;;;;;;;2194:83;;;;;;;;-1:-1:-1;2194:83:58;;;;;;;;;;;;;;;;;-1:-1:-1;;2194:83:58;;;;;;;;;;;;;;2315:18;;2297:41;;-1:-1:-1;;2315:22:58;;;;;2297:41;;-1:-1:-1;2297:41:58;2004:550;;;2479:18;;2432:32;;2467:11;;-1:-1:-1;;2479:22:58;;;2467:35;;;;;;;;;;;;;;2516:19;2467:35;;;;;2516:19;:27;;;-1:-1:-1;1666:894:58;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;283:146;358:20;;383:41;358:20;383:41;:::i;2784:442::-;;2886:3;2879:4;2871:6;2867:17;2863:27;2853:2;;-1:-1;;2894:12;2853:2;2941:6;2928:20;54909:18;54901:6;54898:30;54895:2;;;-1:-1;;54931:12;54895:2;2963:65;55004:9;54985:17;;-1:-1;;54981:33;55072:4;55062:15;2963:65;:::i;:::-;2954:74;;3048:6;3041:5;3034:21;3152:3;55072:4;3143:6;3076;3134:16;;3131:25;3128:2;;;3169:1;;3159:12;3128:2;57973:6;55072:4;3076:6;3072:17;55072:4;3110:5;3106:16;57950:30;58029:1;58011:16;;;55072:4;58011:16;58004:27;3110:5;2846:380;-1:-1;;2846:380::o;4322:241::-;;4426:2;4414:9;4405:7;4401:23;4397:32;4394:2;;;-1:-1;;4432:12;4394:2;85:6;72:20;97:33;124:5;97:33;:::i;4570:263::-;;4685:2;4673:9;4664:7;4660:23;4656:32;4653:2;;;-1:-1;;4691:12;4653:2;226:6;220:13;238:33;265:5;238:33;:::i;4840:366::-;;;4961:2;4949:9;4940:7;4936:23;4932:32;4929:2;;;-1:-1;;4967:12;4929:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5019:63;-1:-1;5119:2;5158:22;;72:20;97:33;72:20;97:33;:::i;:::-;5127:63;;;;4923:283;;;;;:::o;5213:491::-;;;;5351:2;5339:9;5330:7;5326:23;5322:32;5319:2;;;-1:-1;;5357:12;5319:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5409:63;-1:-1;5509:2;5548:22;;72:20;97:33;72:20;97:33;:::i;:::-;5313:391;;5517:63;;-1:-1;;;5617:2;5656:22;;;;3974:20;;5313:391::o;5711:366::-;;;5832:2;5820:9;5811:7;5807:23;5803:32;5800:2;;;-1:-1;;5838:12;5800:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5890:63;5990:2;6029:22;;;;1534:20;;-1:-1;;;5794:283::o;6457:257::-;;6569:2;6557:9;6548:7;6544:23;6540:32;6537:2;;;-1:-1;;6575:12;6537:2;1413:6;1407:13;1425:30;1449:5;1425:30;:::i;6721:391::-;;;6849:2;6837:9;6828:7;6824:23;6820:32;6817:2;;;-1:-1;;6855:12;6817:2;1413:6;1407:13;1425:30;1449:5;1425:30;:::i;:::-;7015:2;7064:22;;;;2721:13;6907:71;;2721:13;;-1:-1;;;6811:301::o;7119:241::-;;7223:2;7211:9;7202:7;7198:23;7194:32;7191:2;;;-1:-1;;7229:12;7191:2;-1:-1;1534:20;;7185:175;-1:-1;7185:175::o;7367:518::-;;;7521:2;7509:9;7500:7;7496:23;7492:32;7489:2;;;-1:-1;;7527:12;7489:2;1547:6;1534:20;7579:63;;7707:2;;7696:9;7692:18;7679:32;7731:18;;7723:6;7720:30;7717:2;;;-1:-1;;7753:12;7717:2;7852:6;7841:9;7837:22;587:3;580:4;572:6;568:17;564:27;554:2;;-1:-1;;595:12;554:2;642:6;629:20;615:34;;7731:18;54605:6;54602:30;54599:2;;;-1:-1;;54635:12;54599:2;7707;54672:6;54668:17;;;664:88;7707:2;54668:17;54733:15;664:88;:::i;:::-;780:21;;;837:14;;;;812:17;;;917:27;;;;;914:36;-1:-1;911:2;;;-1:-1;;953:12;911:2;-1:-1;979:10;;973:214;998:6;995:1;992:13;973:214;;;1078:45;1119:3;1107:10;1078:45;:::i;:::-;1066:58;;1020:1;1013:9;;;;;1138:14;;;;1166;;973:214;;;977:14;7773:96;;;;;;;;;7483:402;;;;;:::o;7892:366::-;;;8013:2;8001:9;7992:7;7988:23;7984:32;7981:2;;;-1:-1;;8019:12;7981:2;-1:-1;;1534:20;;;8171:2;8210:22;;;3974:20;;-1:-1;7975:283::o;8265:611::-;;;;;8417:3;8405:9;8396:7;8392:23;8388:33;8385:2;;;-1:-1;;8424:12;8385:2;1547:6;1534:20;8476:63;;8576:2;8619:9;8615:22;3974:20;8584:63;;8684:2;8724:9;8720:22;1265:20;1290:30;1314:5;1290:30;:::i;:::-;8692:60;-1:-1;8789:2;8828:22;;72:20;97:33;72:20;97:33;:::i;:::-;8379:497;;;;-1:-1;8379:497;;-1:-1;;8379:497::o;8883:705::-;;;;;9082:3;9070:9;9061:7;9057:23;9053:33;9050:2;;;-1:-1;;9089:12;9050:2;1886:6;1873:20;1898:56;1948:5;1898:56;:::i;:::-;9141:86;-1:-1;9264:2;9324:22;;1692:20;1717:54;1692:20;1717:54;:::i;:::-;9272:84;-1:-1;9393:2;9432:22;;1534:20;;-1:-1;9501:2;9540:22;;72:20;97:33;72:20;97:33;:::i;9595:271::-;;9714:2;9702:9;9693:7;9689:23;9685:32;9682:2;;;-1:-1;;9720:12;9682:2;2417:6;2404:20;2429:48;2471:5;2429:48;:::i;9873:396::-;;;10009:2;9997:9;9988:7;9984:23;9980:32;9977:2;;;-1:-1;;10015:12;9977:2;2417:6;2404:20;2429:48;2471:5;2429:48;:::i;10276:261::-;;10390:2;10378:9;10369:7;10365:23;10361:32;10358:2;;;-1:-1;;10396:12;10358:2;-1:-1;2721:13;;10352:185;-1:-1;10352:185::o;10544:578::-;;;10685:2;10673:9;10664:7;10660:23;10656:32;10653:2;;;-1:-1;;10691:12;10653:2;10749:17;10736:31;10787:18;;10779:6;10776:30;10773:2;;;-1:-1;;10809:12;10773:2;10839:63;10894:7;10885:6;10874:9;10870:22;10839:63;:::i;:::-;10829:73;;10967:2;10956:9;10952:18;10939:32;10925:46;;10787:18;10983:6;10980:30;10977:2;;;-1:-1;;11013:12;10977:2;;11043:63;11098:7;11089:6;11078:9;11074:22;11043:63;:::i;:::-;11033:73;;;10647:475;;;;;:::o;11129:305::-;;11265:2;11253:9;11244:7;11240:23;11236:32;11233:2;;;-1:-1;;11271:12;11233:2;3407:20;11265:2;3407:20;:::i;:::-;3538:22;4122:13;3488:16;3481:86;3625:2;3701:9;3697:22;2574:13;59819:1;59812:5;59809:12;59799:2;;-1:-1;;59825:12;59799:2;3625;3640:16;;3633:93;3788:2;3850:22;;1407:13;1425:30;1407:13;1425:30;:::i;:::-;3788:2;3803:16;;3796:83;3807:5;11227:207;-1:-1;;;11227:207::o;11959:699::-;;;;;12155:3;12143:9;12134:7;12130:23;12126:33;12123:2;;;-1:-1;;12162:12;12123:2;3987:6;3974:20;12214:63;;12314:2;12384:9;12380:22;2060:20;59479:1;59472:5;59469:12;59459:2;;-1:-1;;59485:12;59459:2;12322:90;-1:-1;12449:2;12502:22;;2238:20;59594:1;59584:12;;59574:2;;-1:-1;;59600:12;59574:2;12117:541;;;;-1:-1;12457:77;;12571:2;12610:22;3974:20;;-1:-1;;12117:541::o;12665:491::-;;;;12803:2;12791:9;12782:7;12778:23;12774:32;12771:2;;;-1:-1;;12809:12;12771:2;-1:-1;;3974:20;;;12961:2;13000:22;;3974:20;;-1:-1;13069:2;13108:22;;;3974:20;;12765:391;-1:-1;12765:391::o;13163:259::-;;13276:2;13264:9;13255:7;13251:23;13247:32;13244:2;;;-1:-1;;13282:12;13244:2;4267:6;4261:13;57113:4;60180:5;57102:16;60157:5;60154:33;60144:2;;-1:-1;;60191:12;30708:222;-1:-1;;;;;56897:54;;;;13672:37;;30835:2;30820:18;;30806:124::o;30937:333::-;-1:-1;;;;;56897:54;;;;13672:37;;31256:2;31241:18;;14752:37;31092:2;31077:18;;31063:207::o;31277:370::-;31454:2;31468:47;;;55355:12;;31439:18;;;55759:19;;;31277:370;;31454:2;55209:14;;;;55799;;;;31277:370;14280:260;14305:6;14302:1;14299:13;14280:260;;;14366:13;;-1:-1;;;;;56897:54;13672:37;;55614:14;;;;13583;;;;54909:18;14320:9;14280:260;;;-1:-1;31521:116;;31425:222;-1:-1;;;;;;31425:222::o;31654:210::-;56269:13;;56262:21;14635:34;;31775:2;31760:18;;31746:118::o;31871:222::-;14752:37;;;31998:2;31983:18;;31969:124::o;32100:333::-;14752:37;;;32419:2;32404:18;;14752:37;32255:2;32240:18;;32226:207::o;32440:459::-;14752:37;;;-1:-1;;;32885:2;32870:18;;16303:31;32658:2;32643:18;;32629:270::o;32906:459::-;14752:37;;;-1:-1;;;33351:2;33336:18;;19943:23;33124:2;33109:18;;33095:270::o;33372:459::-;14752:37;;;-1:-1;;;33817:2;33802:18;;22072:36;33590:2;33575:18;;33561:270::o;33838:459::-;14752:37;;;-1:-1;;;34283:2;34268:18;;24925:27;34056:2;34041:18;;34027:270::o;34304:459::-;14752:37;;;-1:-1;;;34749:2;34734:18;;27822:23;34522:2;34507:18;;34493:270::o;34770:459::-;14752:37;;;-1:-1;;;35215:2;35200:18;;28402:29;34988:2;34973:18;;34959:270::o;35236:459::-;14752:37;;;-1:-1;;;35681:2;35666:18;;29329:23;35454:2;35439:18;;35425:270::o;35702:440::-;14752:37;;;36047:2;36032:18;;14752:37;;;;36128:2;36113:18;;14752:37;35883:2;35868:18;;35854:288::o;36695:359::-;36863:2;36848:18;;58511:2;58501:13;;58491:2;;58518:9;58491:2;15239:63;;;37040:2;37025:18;14752:37;36834:220;:::o;37061:310::-;;37208:2;;37229:17;37222:47;15576:5;55355:12;55771:6;37208:2;37197:9;37193:18;55759:19;-1:-1;58118:101;58132:6;58129:1;58126:13;58118:101;;;58199:11;;;;;58193:18;58180:11;;;55799:14;58180:11;58173:39;58147:10;;58118:101;;;58234:6;58231:1;58228:13;58225:2;;;-1:-1;55799:14;58290:6;37197:9;58281:16;;58274:27;58225:2;-1:-1;55004:9;58390:14;-1:-1;;58386:28;15734:39;;;;55799:14;15734:39;;37179:192;-1:-1;;;37179:192::o;37378:416::-;37578:2;37592:47;;;16010:2;37563:18;;;55759:19;16046:34;55799:14;;;16026:55;-1:-1;;;16101:12;;;16094:27;16140:12;;;37549:245::o;37801:416::-;38001:2;38015:47;;;16573:2;37986:18;;;55759:19;-1:-1;;;;;;;;;;;55799:14;;;16589:55;-1:-1;;;16664:12;;;16657:45;16721:12;;;37972:245::o;38224:416::-;38424:2;38438:47;;;16972:2;38409:18;;;55759:19;17008:34;55799:14;;;16988:55;-1:-1;;;17063:12;;;17056:29;17104:12;;;38395:245::o;38647:416::-;38847:2;38861:47;;;17355:2;38832:18;;;55759:19;17391:34;55799:14;;;17371:55;-1:-1;;;17446:12;;;17439:41;17499:12;;;38818:245::o;39070:416::-;39270:2;39284:47;;;17750:2;39255:18;;;55759:19;17786:34;55799:14;;;17766:55;17855:25;17841:12;;;17834:47;17900:12;;;39241:245::o;39493:416::-;39693:2;39707:47;;;18151:2;39678:18;;;55759:19;18187:34;55799:14;;;18167:55;-1:-1;;;18242:12;;;18235:30;18284:12;;;39664:245::o;39916:416::-;40116:2;40130:47;;;18535:2;40101:18;;;55759:19;18571:34;55799:14;;;18551:55;-1:-1;;;18626:12;;;18619:30;18668:12;;;40087:245::o;40339:416::-;40539:2;40553:47;;;18919:2;40524:18;;;55759:19;18955:34;55799:14;;;18935:55;-1:-1;;;19010:12;;;19003:26;19048:12;;;40510:245::o;40762:416::-;40962:2;40976:47;;;19299:2;40947:18;;;55759:19;19335:29;55799:14;;;19315:50;19384:12;;;40933:245::o;41185:416::-;41385:2;41399:47;;;19635:2;41370:18;;;55759:19;19671:34;55799:14;;;19651:55;-1:-1;;;19726:12;;;19719:42;19780:12;;;41356:245::o;41608:416::-;41808:2;41822:47;;;20205:2;41793:18;;;55759:19;20241:34;55799:14;;;20221:55;-1:-1;;;20296:12;;;20289:31;20339:12;;;41779:245::o;42031:416::-;42231:2;42245:47;;;20590:2;42216:18;;;55759:19;20626:34;55799:14;;;20606:55;-1:-1;;;20681:12;;;20674:37;20730:12;;;42202:245::o;42454:416::-;42654:2;42668:47;;;20981:2;42639:18;;;55759:19;21017:34;55799:14;;;20997:55;-1:-1;;;21072:12;;;21065:37;21121:12;;;42625:245::o;42877:416::-;43077:2;43091:47;;;21372:2;43062:18;;;55759:19;21408:34;55799:14;;;21388:55;-1:-1;;;21463:12;;;21456:41;21516:12;;;43048:245::o;43300:416::-;43500:2;43514:47;;;21767:2;43485:18;;;55759:19;21803:34;55799:14;;;21783:55;-1:-1;;;21858:12;;;21851:39;21909:12;;;43471:245::o;43723:416::-;43923:2;43937:47;;;22347:2;43908:18;;;55759:19;22383:34;55799:14;;;22363:55;-1:-1;;;22438:12;;;22431:25;22475:12;;;43894:245::o;44146:416::-;44346:2;44360:47;;;22726:2;44331:18;;;55759:19;22762:34;55799:14;;;22742:55;-1:-1;;;22817:12;;;22810:26;22855:12;;;44317:245::o;44569:416::-;44769:2;44783:47;;;23106:2;44754:18;;;55759:19;-1:-1;;;;;;;;;;;55799:14;;;23122:55;-1:-1;;;23197:12;;;23190:46;23255:12;;;44740:245::o;44992:416::-;45192:2;45206:47;;;23506:2;45177:18;;;55759:19;23542:34;55799:14;;;23522:55;-1:-1;;;23597:12;;;23590:38;23647:12;;;45163:245::o;45415:416::-;45615:2;45629:47;;;23898:2;45600:18;;;55759:19;23934:34;55799:14;;;23914:55;-1:-1;;;23989:12;;;23982:28;24029:12;;;45586:245::o;45838:416::-;46038:2;46052:47;;;46023:18;;;55759:19;24316:34;55799:14;;;24296:55;24370:12;;;46009:245::o;46261:416::-;46461:2;46475:47;;;24621:2;46446:18;;;55759:19;24657:34;55799:14;;;24637:55;-1:-1;;;24712:12;;;24705:38;24762:12;;;46432:245::o;46684:416::-;46884:2;46898:47;;;25191:2;46869:18;;;55759:19;25227:34;55799:14;;;25207:55;-1:-1;;;25282:12;;;25275:43;25337:12;;;46855:245::o;47107:416::-;47307:2;47321:47;;;25588:2;47292:18;;;55759:19;25624:34;55799:14;;;25604:55;-1:-1;;;25679:12;;;25672:25;25716:12;;;47278:245::o;47530:416::-;47730:2;47744:47;;;25967:2;47715:18;;;55759:19;26003:34;55799:14;;;25983:55;-1:-1;;;26058:12;;;26051:39;26109:12;;;47701:245::o;47953:416::-;48153:2;48167:47;;;26360:2;48138:18;;;55759:19;26396:34;55799:14;;;26376:55;-1:-1;;;26451:12;;;26444:29;26492:12;;;48124:245::o;48376:416::-;48576:2;48590:47;;;26743:2;48561:18;;;55759:19;26779:34;55799:14;;;26759:55;-1:-1;;;26834:12;;;26827:30;26876:12;;;48547:245::o;48799:416::-;48999:2;49013:47;;;27127:2;48984:18;;;55759:19;27163:34;55799:14;;;27143:55;27232:25;27218:12;;;27211:47;27277:12;;;48970:245::o;49222:416::-;49422:2;49436:47;;;27528:2;49407:18;;;55759:19;27564:34;55799:14;;;27544:55;-1:-1;;;27619:12;;;27612:28;27659:12;;;49393:245::o;49645:416::-;49845:2;49859:47;;;28084:2;49830:18;;;55759:19;-1:-1;;;;;;;;;;;55799:14;;;28100:55;28189:30;28175:12;;;28168:52;28239:12;;;49816:245::o;50068:416::-;50268:2;50282:47;;;28670:2;50253:18;;;55759:19;-1:-1;;;;;;;;;;;55799:14;;;28686:55;28775:31;28761:12;;;28754:53;28826:12;;;50239:245::o;50491:416::-;50691:2;50705:47;;;29077:2;50676:18;;;55759:19;29113:33;55799:14;;;29093:54;29166:12;;;50662:245::o;50914:416::-;51114:2;51128:47;;;29591:2;51099:18;;;55759:19;29627:34;55799:14;;;29607:55;-1:-1;;;29682:12;;;29675:32;29726:12;;;51085:245::o;51337:416::-;51537:2;51551:47;;;29977:2;51522:18;;;55759:19;30013:34;55799:14;;;29993:55;-1:-1;;;30068:12;;;30061:28;30108:12;;;51508:245::o;51760:416::-;51960:2;51974:47;;;30359:2;51945:18;;;55759:19;30395:33;55799:14;;;30375:54;30448:12;;;51931:245::o;52412:768::-;14752:37;;;52838:2;52823:18;;14752:37;;;;52921:2;52906:18;;14752:37;;;;53004:2;52989:18;;14752:37;-1:-1;;;;;56897:54;53087:3;53072:19;;13672:37;56269:13;56262:21;56908:42;53150:19;;14635:34;52673:3;52658:19;;52644:536::o;53187:768::-;14752:37;;;53613:2;53598:18;;14752:37;;;;53696:2;53681:18;;14752:37;;;;53779:2;53764:18;;14752:37;56269:13;56262:21;53856:3;53841:19;;14635:34;-1:-1;;;;;56897:54;56908:42;53925:19;;13672:37;53448:3;53433:19;;53419:536::o;53962:214::-;57113:4;57102:16;;;;30661:35;;54085:2;54070:18;;54056:120::o;54183:256::-;54245:2;54239:9;54271:17;;;54346:18;54331:34;;54367:22;;;54328:62;54325:2;;;54403:1;;54393:12;54325:2;54245;54412:22;54223:216;;-1:-1;54223:216::o;58541:117::-;-1:-1;;;;;56897:54;;58600:35;;58590:2;;58649:1;;58639:12;58805:111;58886:5;56269:13;56262:21;58864:5;58861:32;58851:2;;58907:1;;58897:12;59626:110;59710:2;59703:5;59700:13;59690:2;;59727:1;;59717:12",
  "source": "// \"SPDX-License-Identifier: Apache-2.0\"\npragma solidity ^0.6.11;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts-ethereum-package/contracts/utils/ReentrancyGuard.sol\";\nimport \"@openzeppelin/contracts-ethereum-package/contracts/utils/Address.sol\";\nimport \"@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol\";\nimport \"@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol\";\nimport \"@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol\";\nimport \"@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol\";\nimport \"@atpar/actus-solidity/contracts/Core/SignedMath.sol\";\n\nimport \"../Core/Base/AssetRegistry/IAssetRegistry.sol\";\nimport \"../Core/Base/DataRegistry/DataRegistry.sol\";\nimport \"./DepositAllocater.sol\";\n\n\ncontract ProxySafeICT is\n    DepositAllocater,\n    OwnableUpgradeSafe,\n    EventUtils,\n    PeriodUtils,\n    BusinessDayConventions\n{\n    using Address for address;\n    using SafeMath for uint256;\n    using SignedMath for int256;\n\n    IAssetRegistry public assetRegistry;\n    DataRegistry public dataRegistry;\n\n    bytes32 public marketObjectCode;\n    bytes32 public assetId;\n\n    // Reserved\n    uint256[10] private __gap;\n\n    /**\n     * @notice Initialize a new instance storage\n     * @dev \"constructor\" to be called on deployment\n     */\n    function initialize(\n        IAssetRegistry _assetRegistry,\n        DataRegistry _dataRegistry,\n        bytes32 _marketObjectCode,\n        address owner\n    )\n        public\n        initializer\n    {\n        require(\n            address(_assetRegistry).isContract(),\n            \"ICT.initialize: INVALID_ASSET_REGISTRY\"\n        );\n        require(\n            address(_dataRegistry).isContract(),\n            \"ICT.initialize: INVALID_DATA_REGISTRY\"\n        );\n\n        super.initialize(\"Investment Certificate Token\", \"ICT\");\n        __Ownable_init();\n        __ReentrancyGuard_init();\n        transferOwnership(owner);\n\n        assetRegistry = _assetRegistry;\n        dataRegistry = _dataRegistry;\n        marketObjectCode = _marketObjectCode;\n    }\n\n    function setAssetId(bytes32 _assetId)\n        public\n        onlyOwner\n    {\n        require (\n            assetId == bytes32(0),\n            \"ICT.setAssetId: ASSET_ID_ALREADY_SET\"\n        );\n\n        assetId = _assetId;\n    }\n\n    function createDepositForEvent(bytes32 _event)\n        public\n        nonReentrant()\n    {\n        require(\n            assetRegistry.isRegistered(assetId) == true,\n            \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\"\n        );\n\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n        \n        // redemption is comprised of RFD, XD, RPD events\n        // only RFD is needed for the ICT redemption workflow\n        require(\n            eventType != EventType.XD && eventType != EventType.RPD,\n            \"ICT.createDepositForEvent: FORBIDDEN_EVEN_TYPE\"\n        );\n\n        address currency = assetRegistry.getAddressValueForTermsAttribute(assetId, \"currency\");\n\n        createDeposit(\n            _event,\n            scheduleTime,\n            (eventType == EventType.RFD),\n            currency\n        );\n    }\n\n    function fetchDepositAmountForEvent(bytes32 _event)\n        public\n        nonReentrant()\n    {\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        (bool isSettled, int256 payoff) = assetRegistry.isEventSettled(\n            assetId,\n            (eventType != EventType.RFD) \n                ? _event\n                : encodeEvent(\n                    EventType.RPD,\n                    getTimestampPlusPeriod(\n                        assetRegistry.getPeriodValueForTermsAttribute(assetId, \"settlementPeriod\"),\n                        scheduleTime\n                    )\n                )\n        );\n\n        require(\n            isSettled == true,\n            \"ICT.fetchDepositAmountForEvent: NOT_YET_DEPOSITED\"\n        );\n\n        updateDepositAmount(\n            _event,\n            (payoff >= 0) ? uint256(payoff) : uint256(payoff * -1)\n        );\n    }\n\n    /**\n     * @param _event encoded redemption to register for\n     * @param amount amount of tokens to redeem\n     */\n    function registerForRedemption(bytes32 _event, uint256 amount)\n        public\n        nonReentrant()\n    {\n        require(\n            assetRegistry.isRegistered(assetId) == true,\n            \"ICT.registerForRedemption: ASSET_DOES_NOT_EXIST\"\n        );\n\n        signalAmountForDeposit(_event, amount);\n\n        Deposit storage deposit = deposits[_event];\n        // assuming number of decimals used for numbers in actus-solidity == number of decimals of ICT\n        int256 totalQuantity = assetRegistry.getIntValueForTermsAttribute(assetId, \"quantity\");\n        int256 totalSupply = int256(totalSupplyAt(deposit.scheduledFor));\n        int256 ratioSignaled = int256(deposit.totalAmountSignaled).floatDiv(totalSupply);\n        int256 quantity = ratioSignaled.floatMult(totalQuantity);\n\n        (EventType eventType, ) = decodeEvent(_event);\n\n        uint256 timestamp = shiftCalcTime(\n            (eventType != EventType.RFD)\n                ? deposit.scheduledFor\n                : getTimestampPlusPeriod(\n                    assetRegistry.getPeriodValueForTermsAttribute(assetId, \"exercisePeriod\"),\n                    deposit.scheduledFor\n                ),\n            BusinessDayConvention(assetRegistry.getEnumValueForTermsAttribute(assetId, \"businessDayConvention\")),\n            Calendar(assetRegistry.getEnumValueForTermsAttribute(assetId, \"calendar\")),\n            assetRegistry.getUIntValueForTermsAttribute(assetId, \"maturityDate\")\n        );\n\n        dataRegistry.publishDataPoint(marketObjectCode, timestamp, quantity);\n    }\n\n    /**\n     * @param _event encoded redemption to cancel the registration for\n     */\n    function cancelRegistrationForRedemption(bytes32 _event)\n        public\n        nonReentrant()\n    {\n        require(\n            assetRegistry.isRegistered(assetId) == true,\n            \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\"\n        );\n\n        signalAmountForDeposit(_event, 0);\n\n        Deposit storage deposit = deposits[_event];\n        // assuming number of decimals used for numbers in actus-solidity == number of decimals of ICT\n        int256 totalQuantity = assetRegistry.getIntValueForTermsAttribute(assetId, \"quantity\");\n        int256 totalSupply = int256(totalSupplyAt(deposit.scheduledFor));\n        int256 ratioSignaled = int256(deposit.totalAmountSignaled).floatDiv(totalSupply);\n        int256 quantity = ratioSignaled.floatMult(totalQuantity);\n\n        (EventType eventType, uint256 scheduleTime) = decodeEvent(_event);\n\n        uint256 timestamp = shiftCalcTime(\n            (eventType != EventType.RFD)\n                ? deposit.scheduledFor\n                : getTimestampPlusPeriod(\n                    assetRegistry.getPeriodValueForTermsAttribute(assetId, \"exercisePeriod\"),\n                    scheduleTime\n                ),\n            BusinessDayConvention(assetRegistry.getEnumValueForTermsAttribute(assetId, \"businessDayConvention\")),\n            Calendar(assetRegistry.getEnumValueForTermsAttribute(assetId, \"calendar\")),\n            assetRegistry.getUIntValueForTermsAttribute(assetId, \"maturityDate\")\n        );\n\n        dataRegistry.publishDataPoint(marketObjectCode, timestamp, quantity);\n    }\n\n    function mint(address account, uint256 amount)\n        public\n        onlyOwner\n        returns(bool)\n    {\n        super._mint(account, amount);\n        return true;\n    }\n\n    function _transfer(\n        address from,\n        address to,\n        uint256 value\n    )\n        internal\n        virtual\n        override\n    {\n        require(\n            totalAmountSignaledByHolder[from] == 0,\n            \"ICT._transfer: HOLDER_IS_SIGNALING\"\n        );\n        super._transfer(from, to, value);\n    }\n\n    function transferDeposit(\n        address payee,\n        Deposit storage deposit,\n        bytes32 depositId\n    )\n        internal\n        virtual\n        override\n    {\n        if (deposit.onlySignaled == true && deposit.signaledAmounts[payee] > 0) {\n            _burn(payee, deposit.signaledAmounts[payee]);\n        }\n        // `nonReentrant`-protected (by the `DepositAllocator`)\n        super.transferDeposit(payee, deposit, depositId);\n    }\n}\n",
  "sourcePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/ProxySafeICT.sol",
  "ast": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/ProxySafeICT.sol",
    "exportedSymbols": {
      "ProxySafeICT": [
        21885
      ]
    },
    "id": 21886,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21292,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:67"
      },
      {
        "id": 21293,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:67"
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol",
        "id": 21294,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 37428,
        "src": "101:79:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/utils/ReentrancyGuard.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/utils/ReentrancyGuard.sol",
        "id": 21295,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 38350,
        "src": "181:86:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/utils/Address.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/utils/Address.sol",
        "id": 21296,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 38300,
        "src": "268:78:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol",
        "file": "@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol",
        "id": 21297,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 23007,
        "src": "347:61:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "id": 21298,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 24759,
        "src": "409:67:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol",
        "id": 21299,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 24886,
        "src": "477:68:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
        "id": 21300,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 23278,
        "src": "546:85:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/SignedMath.sol",
        "file": "@atpar/actus-solidity/contracts/Core/SignedMath.sol",
        "id": 21301,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 24231,
        "src": "632:61:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol",
        "file": "../Core/Base/AssetRegistry/IAssetRegistry.sol",
        "id": 21302,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 4501,
        "src": "695:55:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol",
        "file": "../Core/Base/DataRegistry/DataRegistry.sol",
        "id": 21303,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 7689,
        "src": "751:52:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/DepositAllocater.sol",
        "file": "./DepositAllocater.sol",
        "id": 21304,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 21142,
        "src": "804:32:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21305,
              "name": "DepositAllocater",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21141,
              "src": "868:16:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositAllocater_$21141",
                "typeString": "contract DepositAllocater"
              }
            },
            "id": 21306,
            "nodeType": "InheritanceSpecifier",
            "src": "868:16:67"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21307,
              "name": "OwnableUpgradeSafe",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37427,
              "src": "890:18:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OwnableUpgradeSafe_$37427",
                "typeString": "contract OwnableUpgradeSafe"
              }
            },
            "id": 21308,
            "nodeType": "InheritanceSpecifier",
            "src": "890:18:67"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21309,
              "name": "EventUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24758,
              "src": "914:10:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventUtils_$24758",
                "typeString": "contract EventUtils"
              }
            },
            "id": 21310,
            "nodeType": "InheritanceSpecifier",
            "src": "914:10:67"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21311,
              "name": "PeriodUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24885,
              "src": "930:11:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PeriodUtils_$24885",
                "typeString": "contract PeriodUtils"
              }
            },
            "id": 21312,
            "nodeType": "InheritanceSpecifier",
            "src": "930:11:67"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21313,
              "name": "BusinessDayConventions",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 23277,
              "src": "947:22:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BusinessDayConventions_$23277",
                "typeString": "contract BusinessDayConventions"
              }
            },
            "id": 21314,
            "nodeType": "InheritanceSpecifier",
            "src": "947:22:67"
          }
        ],
        "contractDependencies": [
          19984,
          19992,
          20550,
          20578,
          21141,
          21178,
          23277,
          24758,
          24885,
          37222,
          37297,
          37427,
          38157,
          38235,
          38349
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 21885,
        "linearizedBaseContracts": [
          21885,
          23277,
          24885,
          24758,
          37427,
          21141,
          38349,
          21178,
          20550,
          20578,
          19984,
          19992,
          38157,
          38235,
          37222,
          37297
        ],
        "name": "ProxySafeICT",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 21317,
            "libraryName": {
              "contractScope": null,
              "id": 21315,
              "name": "Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38299,
              "src": "982:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Address_$38299",
                "typeString": "library Address"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "976:26:67",
            "typeName": {
              "id": 21316,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "994:7:67",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "id": 21320,
            "libraryName": {
              "contractScope": null,
              "id": 21318,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37623,
              "src": "1013:8:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$37623",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1007:27:67",
            "typeName": {
              "id": 21319,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1026:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 21323,
            "libraryName": {
              "contractScope": null,
              "id": 21321,
              "name": "SignedMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24230,
              "src": "1045:10:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignedMath_$24230",
                "typeString": "library SignedMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1039:28:67",
            "typeName": {
              "id": 21322,
              "name": "int256",
              "nodeType": "ElementaryTypeName",
              "src": "1060:6:67",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            }
          },
          {
            "constant": false,
            "functionSelector": "979d7e86",
            "id": 21325,
            "mutability": "mutable",
            "name": "assetRegistry",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1073:35:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
              "typeString": "contract IAssetRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 21324,
              "name": "IAssetRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4500,
              "src": "1073:14:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                "typeString": "contract IAssetRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a39c1d6b",
            "id": 21327,
            "mutability": "mutable",
            "name": "dataRegistry",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1114:32:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DataRegistry_$7688",
              "typeString": "contract DataRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 21326,
              "name": "DataRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7688,
              "src": "1114:12:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DataRegistry_$7688",
                "typeString": "contract DataRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "7bb7a8b9",
            "id": 21329,
            "mutability": "mutable",
            "name": "marketObjectCode",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1153:31:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 21328,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1153:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "44de240a",
            "id": 21331,
            "mutability": "mutable",
            "name": "assetId",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1190:22:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 21330,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1190:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 21335,
            "mutability": "mutable",
            "name": "__gap",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1235:25:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$10_storage",
              "typeString": "uint256[10]"
            },
            "typeName": {
              "baseType": {
                "id": 21332,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1235:7:67",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 21334,
              "length": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 21333,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1243:2:67",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "ArrayTypeName",
              "src": "1235:11:67",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$10_storage_ptr",
                "typeString": "uint256[10]"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 21398,
              "nodeType": "Block",
              "src": "1583:552:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21352,
                                "name": "_assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21338,
                                "src": "1622:14:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 21351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1614:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21350,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1614:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21353,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1614:23:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 21354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isContract",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 38264,
                          "src": "1614:34:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 21355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1614:36:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e696e697469616c697a653a20494e56414c49445f41535345545f5245474953545259",
                        "id": 21356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1664:40:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1a98f1d831458c7661626303b308e350956e08a73545321c60eb0e760d9f893c",
                          "typeString": "literal_string \"ICT.initialize: INVALID_ASSET_REGISTRY\""
                        },
                        "value": "ICT.initialize: INVALID_ASSET_REGISTRY"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1a98f1d831458c7661626303b308e350956e08a73545321c60eb0e760d9f893c",
                          "typeString": "literal_string \"ICT.initialize: INVALID_ASSET_REGISTRY\""
                        }
                      ],
                      "id": 21349,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1593:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1593:121:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21358,
                  "nodeType": "ExpressionStatement",
                  "src": "1593:121:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21362,
                                "name": "_dataRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21340,
                                "src": "1753:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DataRegistry_$7688",
                                  "typeString": "contract DataRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DataRegistry_$7688",
                                  "typeString": "contract DataRegistry"
                                }
                              ],
                              "id": 21361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1745:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21360,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1745:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1745:22:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 21364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isContract",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 38264,
                          "src": "1745:33:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 21365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1745:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e696e697469616c697a653a20494e56414c49445f444154415f5245474953545259",
                        "id": 21366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1794:39:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0c55b8c63c6950e07d603eab8fa6fe662e61abafe4bd61ab4694cea61b377dff",
                          "typeString": "literal_string \"ICT.initialize: INVALID_DATA_REGISTRY\""
                        },
                        "value": "ICT.initialize: INVALID_DATA_REGISTRY"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0c55b8c63c6950e07d603eab8fa6fe662e61abafe4bd61ab4694cea61b377dff",
                          "typeString": "literal_string \"ICT.initialize: INVALID_DATA_REGISTRY\""
                        }
                      ],
                      "id": 21359,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1724:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1724:119:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21368,
                  "nodeType": "ExpressionStatement",
                  "src": "1724:119:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "496e766573746d656e7420436572746966696361746520546f6b656e",
                        "id": 21372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1871:30:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_041ec3a2fa9bf4fd6737f2b29021271fc6ed461936c24d27d5e0d2a6f8485e46",
                          "typeString": "literal_string \"Investment Certificate Token\""
                        },
                        "value": "Investment Certificate Token"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "494354",
                        "id": 21373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1903:5:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_906e0cab7796631b2dcc5cbf8706f0759ac83acc2be411b4a33c7f9f0f071281",
                          "typeString": "literal_string \"ICT\""
                        },
                        "value": "ICT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_041ec3a2fa9bf4fd6737f2b29021271fc6ed461936c24d27d5e0d2a6f8485e46",
                          "typeString": "literal_string \"Investment Certificate Token\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_906e0cab7796631b2dcc5cbf8706f0759ac83acc2be411b4a33c7f9f0f071281",
                          "typeString": "literal_string \"ICT\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21369,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "1854:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ProxySafeICT_$21885",
                          "typeString": "contract super ProxySafeICT"
                        }
                      },
                      "id": 21371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20017,
                      "src": "1854:16:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,string memory)"
                      }
                    },
                    "id": 21374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1854:55:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21375,
                  "nodeType": "ExpressionStatement",
                  "src": "1854:55:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 21376,
                      "name": "__Ownable_init",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37327,
                      "src": "1919:14:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 21377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1919:16:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21378,
                  "nodeType": "ExpressionStatement",
                  "src": "1919:16:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 21379,
                      "name": "__ReentrancyGuard_init",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 38316,
                      "src": "1945:22:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 21380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1945:24:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21381,
                  "nodeType": "ExpressionStatement",
                  "src": "1945:24:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21383,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21344,
                        "src": "1997:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 21382,
                      "name": "transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37422,
                      "src": "1979:17:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 21384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1979:24:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21385,
                  "nodeType": "ExpressionStatement",
                  "src": "1979:24:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21386,
                      "name": "assetRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21325,
                      "src": "2014:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                        "typeString": "contract IAssetRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 21387,
                      "name": "_assetRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21338,
                      "src": "2030:14:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                        "typeString": "contract IAssetRegistry"
                      }
                    },
                    "src": "2014:30:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "id": 21389,
                  "nodeType": "ExpressionStatement",
                  "src": "2014:30:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21390,
                      "name": "dataRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21327,
                      "src": "2054:12:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DataRegistry_$7688",
                        "typeString": "contract DataRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 21391,
                      "name": "_dataRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21340,
                      "src": "2069:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DataRegistry_$7688",
                        "typeString": "contract DataRegistry"
                      }
                    },
                    "src": "2054:28:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DataRegistry_$7688",
                      "typeString": "contract DataRegistry"
                    }
                  },
                  "id": 21393,
                  "nodeType": "ExpressionStatement",
                  "src": "2054:28:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21394,
                      "name": "marketObjectCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21329,
                      "src": "2092:16:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 21395,
                      "name": "_marketObjectCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21342,
                      "src": "2111:17:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2092:36:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 21397,
                  "nodeType": "ExpressionStatement",
                  "src": "2092:36:67"
                }
              ]
            },
            "documentation": {
              "id": 21336,
              "nodeType": "StructuredDocumentation",
              "src": "1267:113:67",
              "text": " @notice Initialize a new instance storage\n @dev \"constructor\" to be called on deployment"
            },
            "functionSelector": "a31ee5b0",
            "id": 21399,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 21347,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21346,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 37270,
                  "src": "1567:11:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1567:11:67"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21338,
                  "mutability": "mutable",
                  "name": "_assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21399,
                  "src": "1414:29:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21337,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "1414:14:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21340,
                  "mutability": "mutable",
                  "name": "_dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21399,
                  "src": "1453:26:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DataRegistry_$7688",
                    "typeString": "contract DataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21339,
                    "name": "DataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7688,
                    "src": "1453:12:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DataRegistry_$7688",
                      "typeString": "contract DataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21342,
                  "mutability": "mutable",
                  "name": "_marketObjectCode",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21399,
                  "src": "1489:25:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21341,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1489:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21344,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21399,
                  "src": "1524:13:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21343,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1524:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1404:139:67"
            },
            "returnParameters": {
              "id": 21348,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1583:0:67"
            },
            "scope": 21885,
            "src": "1385:750:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21420,
              "nodeType": "Block",
              "src": "2216:151:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 21412,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 21407,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21331,
                          "src": "2248:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 21410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2267:1:67",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 21409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2259:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 21408,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2259:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 21411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2259:10:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2248:21:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e736574417373657449643a2041535345545f49445f414c52454144595f534554",
                        "id": 21413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2283:38:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_97db4697d9d4380178a6c707781066b006d0bc00bb9f31fd8b54ebb3e602a250",
                          "typeString": "literal_string \"ICT.setAssetId: ASSET_ID_ALREADY_SET\""
                        },
                        "value": "ICT.setAssetId: ASSET_ID_ALREADY_SET"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_97db4697d9d4380178a6c707781066b006d0bc00bb9f31fd8b54ebb3e602a250",
                          "typeString": "literal_string \"ICT.setAssetId: ASSET_ID_ALREADY_SET\""
                        }
                      ],
                      "id": 21406,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2226:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2226:105:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21415,
                  "nodeType": "ExpressionStatement",
                  "src": "2226:105:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21416,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21331,
                      "src": "2342:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 21417,
                      "name": "_assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21401,
                      "src": "2352:8:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2342:18:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 21419,
                  "nodeType": "ExpressionStatement",
                  "src": "2342:18:67"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "26158a8b",
            "id": 21421,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 21404,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21403,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 37372,
                  "src": "2202:9:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2202:9:67"
              }
            ],
            "name": "setAssetId",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21402,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21401,
                  "mutability": "mutable",
                  "name": "_assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21421,
                  "src": "2161:16:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21400,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2161:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2160:18:67"
            },
            "returnParameters": {
              "id": 21405,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2216:0:67"
            },
            "scope": 21885,
            "src": "2141:226:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21478,
              "nodeType": "Block",
              "src": "2462:758:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21431,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21331,
                              "src": "2520:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21429,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21325,
                              "src": "2493:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 21430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isRegistered",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4510,
                            "src": "2493:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view external returns (bool)"
                            }
                          },
                          "id": 21432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2493:35:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2532:4:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "2493:43:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e6372656174654465706f736974466f724576656e743a2041535345545f444f45535f4e4f545f4558495354",
                        "id": 21435,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2550:49:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b43043d6a26d2fd1809d588c13632b7ba9918745d30d9207f158332cc37a5c14",
                          "typeString": "literal_string \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\""
                        },
                        "value": "ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b43043d6a26d2fd1809d588c13632b7ba9918745d30d9207f158332cc37a5c14",
                          "typeString": "literal_string \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\""
                        }
                      ],
                      "id": 21428,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2472:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2472:137:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21437,
                  "nodeType": "ExpressionStatement",
                  "src": "2472:137:67"
                },
                {
                  "assignments": [
                    21439,
                    21441
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21439,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21478,
                      "src": "2621:19:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21438,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "2621:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21441,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21478,
                      "src": "2642:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21440,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2642:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21445,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21443,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21423,
                        "src": "2678:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 21442,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "2666:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 21444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2666:19:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2620:65:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "id": 21450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21447,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21439,
                            "src": "2845:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21448,
                              "name": "EventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22610,
                              "src": "2858:9:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                "typeString": "type(enum EventType)"
                              }
                            },
                            "id": 21449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "XD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2858:12:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "src": "2845:25:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "id": 21454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21451,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21439,
                            "src": "2874:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21452,
                              "name": "EventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22610,
                              "src": "2887:9:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                "typeString": "type(enum EventType)"
                              }
                            },
                            "id": 21453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "RPD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2887:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "src": "2874:26:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2845:55:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e6372656174654465706f736974466f724576656e743a20464f5242494444454e5f4556454e5f54595045",
                        "id": 21456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2914:48:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_96c665b6247ae69fbbc07adc636611533b47ef47b2e7b78210ea8ec736bd8ea0",
                          "typeString": "literal_string \"ICT.createDepositForEvent: FORBIDDEN_EVEN_TYPE\""
                        },
                        "value": "ICT.createDepositForEvent: FORBIDDEN_EVEN_TYPE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_96c665b6247ae69fbbc07adc636611533b47ef47b2e7b78210ea8ec736bd8ea0",
                          "typeString": "literal_string \"ICT.createDepositForEvent: FORBIDDEN_EVEN_TYPE\""
                        }
                      ],
                      "id": 21446,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2824:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2824:148:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21458,
                  "nodeType": "ExpressionStatement",
                  "src": "2824:148:67"
                },
                {
                  "assignments": [
                    21460
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21460,
                      "mutability": "mutable",
                      "name": "currency",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21478,
                      "src": "2983:16:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21459,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2983:7:67",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21466,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21463,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21331,
                        "src": "3049:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63757272656e6379",
                        "id": 21464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3058:10:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        },
                        "value": "currency"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21461,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21325,
                        "src": "3002:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 21462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAddressValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6839,
                      "src": "3002:46:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 21465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3002:67:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2983:86:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21468,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21423,
                        "src": "3107:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21469,
                        "name": "scheduleTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21441,
                        "src": "3127:12:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            },
                            "id": 21473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 21470,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21439,
                              "src": "3154:9:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21471,
                                "name": "EventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22610,
                                "src": "3167:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                  "typeString": "type(enum EventType)"
                                }
                              },
                              "id": 21472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "RFD",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3167:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "src": "3154:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 21474,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3153:28:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21475,
                        "name": "currency",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21460,
                        "src": "3195:8:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 21467,
                      "name": "createDeposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20643,
                      "src": "3080:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_bool_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,uint256,bool,address)"
                      }
                    },
                    "id": 21476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3080:133:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21477,
                  "nodeType": "ExpressionStatement",
                  "src": "3080:133:67"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ec15b9ca",
            "id": 21479,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 21426,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21425,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38344,
                  "src": "2443:12:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2443:14:67"
              }
            ],
            "name": "createDepositForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21424,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21423,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21479,
                  "src": "2404:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21422,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2404:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2403:16:67"
            },
            "returnParameters": {
              "id": 21427,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2462:0:67"
            },
            "scope": 21885,
            "src": "2373:847:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21549,
              "nodeType": "Block",
              "src": "3320:793:67",
              "statements": [
                {
                  "assignments": [
                    21487,
                    21489
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21487,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21549,
                      "src": "3331:19:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21486,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "3331:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21489,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21549,
                      "src": "3352:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21488,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3352:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21493,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21491,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21481,
                        "src": "3388:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 21490,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "3376:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 21492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3376:19:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3330:65:67"
                },
                {
                  "assignments": [
                    21495,
                    21497
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21495,
                      "mutability": "mutable",
                      "name": "isSettled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21549,
                      "src": "3407:14:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 21494,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3407:4:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21497,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21549,
                      "src": "3423:13:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21496,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3423:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21521,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21500,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21331,
                        "src": "3482:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              "id": 21504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21501,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21487,
                                "src": "3504:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21502,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "3517:9:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 21503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3517:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "3504:26:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 21505,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3503:28:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21508,
                                "name": "EventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22610,
                                "src": "3609:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                  "typeString": "type(enum EventType)"
                                }
                              },
                              "id": 21509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "RPD",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3609:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 21513,
                                      "name": "assetId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21331,
                                      "src": "3738:7:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "736574746c656d656e74506572696f64",
                                      "id": 21514,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3747:18:67",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_0a5ea9d3932adf12dc03652b0e3eeb001e53c884f1b47e4121f7de15230a5bb8",
                                        "typeString": "literal_string \"settlementPeriod\""
                                      },
                                      "value": "settlementPeriod"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_0a5ea9d3932adf12dc03652b0e3eeb001e53c884f1b47e4121f7de15230a5bb8",
                                        "typeString": "literal_string \"settlementPeriod\""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21511,
                                      "name": "assetRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21325,
                                      "src": "3692:13:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                        "typeString": "contract IAssetRegistry"
                                      }
                                    },
                                    "id": 21512,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getPeriodValueForTermsAttribute",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6875,
                                    "src": "3692:45:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                      "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                    }
                                  },
                                  "id": 21515,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3692:74:67",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                    "typeString": "struct IP memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 21516,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21489,
                                  "src": "3792:12:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                    "typeString": "struct IP memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 21510,
                                "name": "getTimestampPlusPeriod",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24884,
                                "src": "3644:22:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 21517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3644:182:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21507,
                            "name": "encodeEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24702,
                            "src": "3576:11:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 21518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3576:268:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 21519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "3503:341:67",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 21506,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21481,
                          "src": "3551:6:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21498,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21325,
                        "src": "3440:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 21499,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isEventSettled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4914,
                      "src": "3440:28:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_int256_$",
                        "typeString": "function (bytes32,bytes32) view external returns (bool,int256)"
                      }
                    },
                    "id": 21520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3440:414:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                      "typeString": "tuple(bool,int256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3406:448:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 21523,
                          "name": "isSettled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21495,
                          "src": "3886:9:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3899:4:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "3886:17:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e66657463684465706f736974416d6f756e74466f724576656e743a204e4f545f5945545f4445504f5349544544",
                        "id": 21526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3917:51:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_156d2845289b6765e807e58c97a3794425ca2b4ae12471f8b354556718796f97",
                          "typeString": "literal_string \"ICT.fetchDepositAmountForEvent: NOT_YET_DEPOSITED\""
                        },
                        "value": "ICT.fetchDepositAmountForEvent: NOT_YET_DEPOSITED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_156d2845289b6765e807e58c97a3794425ca2b4ae12471f8b354556718796f97",
                          "typeString": "literal_string \"ICT.fetchDepositAmountForEvent: NOT_YET_DEPOSITED\""
                        }
                      ],
                      "id": 21522,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3865:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3865:113:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21528,
                  "nodeType": "ExpressionStatement",
                  "src": "3865:113:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21530,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21481,
                        "src": "4022:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 21533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21531,
                                "name": "payoff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21497,
                                "src": "4043:6:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4053:1:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4043:11:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 21534,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4042:13:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 21544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21541,
                                "name": "payoff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21497,
                                "src": "4084:6:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 21543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "4093:2:67",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 21542,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4094:1:67",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              },
                              "src": "4084:11:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 21540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4076:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 21539,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4076:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 21545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4076:20:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "4042:54:67",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21537,
                              "name": "payoff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21497,
                              "src": "4066:6:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 21536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4058:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 21535,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4058:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 21538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4058:15:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21529,
                      "name": "updateDepositAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20685,
                      "src": "3989:19:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 21547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3989:117:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21548,
                  "nodeType": "ExpressionStatement",
                  "src": "3989:117:67"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "2069daeb",
            "id": 21550,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 21484,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21483,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38344,
                  "src": "3301:12:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3301:14:67"
              }
            ],
            "name": "fetchDepositAmountForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21481,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21550,
                  "src": "3262:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21480,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3262:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3261:16:67"
            },
            "returnParameters": {
              "id": 21485,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3320:0:67"
            },
            "scope": 21885,
            "src": "3226:887:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21672,
              "nodeType": "Block",
              "src": "4344:1434:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21563,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21331,
                              "src": "4402:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21561,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21325,
                              "src": "4375:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 21562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isRegistered",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4510,
                            "src": "4375:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view external returns (bool)"
                            }
                          },
                          "id": 21564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4375:35:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4414:4:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "4375:43:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e7265676973746572466f72526564656d7074696f6e3a2041535345545f444f45535f4e4f545f4558495354",
                        "id": 21567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4432:49:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8ea466dbaad28668ba190dc7d83419c5624d69b4c7eff5a09467763a0f37bbf7",
                          "typeString": "literal_string \"ICT.registerForRedemption: ASSET_DOES_NOT_EXIST\""
                        },
                        "value": "ICT.registerForRedemption: ASSET_DOES_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8ea466dbaad28668ba190dc7d83419c5624d69b4c7eff5a09467763a0f37bbf7",
                          "typeString": "literal_string \"ICT.registerForRedemption: ASSET_DOES_NOT_EXIST\""
                        }
                      ],
                      "id": 21560,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4354:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4354:137:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21569,
                  "nodeType": "ExpressionStatement",
                  "src": "4354:137:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21571,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21553,
                        "src": "4525:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21572,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21555,
                        "src": "4533:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21570,
                      "name": "signalAmountForDeposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20854,
                      "src": "4502:22:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 21573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4502:38:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21574,
                  "nodeType": "ExpressionStatement",
                  "src": "4502:38:67"
                },
                {
                  "assignments": [
                    21576
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21576,
                      "mutability": "mutable",
                      "name": "deposit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4551:23:67",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                        "typeString": "struct DepositAllocaterStorage.Deposit"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21575,
                        "name": "Deposit",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 21165,
                        "src": "4551:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                          "typeString": "struct DepositAllocaterStorage.Deposit"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21580,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 21577,
                      "name": "deposits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21169,
                      "src": "4577:8:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Deposit_$21165_storage_$",
                        "typeString": "mapping(bytes32 => struct DepositAllocaterStorage.Deposit storage ref)"
                      }
                    },
                    "id": 21579,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 21578,
                      "name": "_event",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21553,
                      "src": "4586:6:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4577:16:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$21165_storage",
                      "typeString": "struct DepositAllocaterStorage.Deposit storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4551:42:67"
                },
                {
                  "assignments": [
                    21582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21582,
                      "mutability": "mutable",
                      "name": "totalQuantity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4706:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21581,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4706:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21588,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21585,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21331,
                        "src": "4772:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7175616e74697479",
                        "id": 21586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4781:10:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ce0f9e6c0aabeafe0ddc06e24b09d8141559d91eb3976c426b9091110b777d0f",
                          "typeString": "literal_string \"quantity\""
                        },
                        "value": "quantity"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ce0f9e6c0aabeafe0ddc06e24b09d8141559d91eb3976c426b9091110b777d0f",
                          "typeString": "literal_string \"quantity\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21583,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21325,
                        "src": "4729:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 21584,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getIntValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6866,
                      "src": "4729:42:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (bytes32,bytes32) view external returns (int256)"
                      }
                    },
                    "id": 21587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4729:63:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4706:86:67"
                },
                {
                  "assignments": [
                    21590
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21590,
                      "mutability": "mutable",
                      "name": "totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4802:18:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21589,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4802:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21598,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21594,
                              "name": "deposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21576,
                              "src": "4844:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                              }
                            },
                            "id": 21595,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scheduledFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21146,
                            "src": "4844:20:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21593,
                          "name": "totalSupplyAt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20330,
                          "src": "4830:13:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view returns (uint256)"
                          }
                        },
                        "id": 21596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4830:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4823:6:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 21591,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4823:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 21597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4823:43:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4802:64:67"
                },
                {
                  "assignments": [
                    21600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21600,
                      "mutability": "mutable",
                      "name": "ratioSignaled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4876:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21599,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4876:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21609,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21607,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21590,
                        "src": "4944:11:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21603,
                              "name": "deposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21576,
                              "src": "4906:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                              }
                            },
                            "id": 21604,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalAmountSignaled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21152,
                            "src": "4906:27:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4899:6:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 21601,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4899:6:67",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 21605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4899:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 21606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "floatDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24193,
                      "src": "4899:44:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 21608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4899:57:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4876:80:67"
                },
                {
                  "assignments": [
                    21611
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21611,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4966:15:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21610,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4966:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21616,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21614,
                        "name": "totalQuantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21582,
                        "src": "5008:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21612,
                        "name": "ratioSignaled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21600,
                        "src": "4984:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 21613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "floatMult",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24120,
                      "src": "4984:23:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 21615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4984:38:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4966:56:67"
                },
                {
                  "assignments": [
                    21618,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21618,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "5034:19:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21617,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "5034:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 21622,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21620,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21553,
                        "src": "5071:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 21619,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "5059:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 21621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5059:19:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5033:45:67"
                },
                {
                  "assignments": [
                    21624
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21624,
                      "mutability": "mutable",
                      "name": "timestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "5089:17:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21623,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5089:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21663,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              "id": 21629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21626,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21618,
                                "src": "5137:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21627,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5150:9:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 21628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5150:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5137:26:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 21630,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5136:28:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21636,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21331,
                                  "src": "5312:7:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6578657263697365506572696f64",
                                  "id": 21637,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5321:16:67",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e4a520a6d9071de7920fe6487dd776e3bb7eab906fb8e79826a4753f0d132636",
                                    "typeString": "literal_string \"exercisePeriod\""
                                  },
                                  "value": "exercisePeriod"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_e4a520a6d9071de7920fe6487dd776e3bb7eab906fb8e79826a4753f0d132636",
                                    "typeString": "literal_string \"exercisePeriod\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21634,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21325,
                                  "src": "5266:13:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 21635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPeriodValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6875,
                                "src": "5266:45:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                }
                              },
                              "id": 21638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5266:72:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21639,
                                "name": "deposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21576,
                                "src": "5360:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                  "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                                }
                              },
                              "id": 21640,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "scheduledFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21146,
                              "src": "5360:20:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21633,
                            "name": "getTimestampPlusPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24884,
                            "src": "5222:22:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5222:176:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "5136:262:67",
                        "trueExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21631,
                            "name": "deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21576,
                            "src": "5183:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                              "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                            }
                          },
                          "id": 21632,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "scheduledFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21146,
                          "src": "5183:20:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21646,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21331,
                                "src": "5478:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "627573696e657373446179436f6e76656e74696f6e",
                                "id": 21647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5487:23:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                  "typeString": "literal_string \"businessDayConvention\""
                                },
                                "value": "businessDayConvention"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                  "typeString": "literal_string \"businessDayConvention\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21644,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "5434:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 21645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getEnumValueForTermsAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6830,
                              "src": "5434:43:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                              }
                            },
                            "id": 21648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5434:77:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 21643,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "5412:21:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 21649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5412:100:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21653,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21331,
                                "src": "5579:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "63616c656e646172",
                                "id": 21654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5588:10:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                  "typeString": "literal_string \"calendar\""
                                },
                                "value": "calendar"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                  "typeString": "literal_string \"calendar\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21651,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "5535:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 21652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getEnumValueForTermsAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6830,
                              "src": "5535:43:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                              }
                            },
                            "id": 21655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5535:64:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 21650,
                          "name": "Calendar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22506,
                          "src": "5526:8:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                            "typeString": "type(enum Calendar)"
                          }
                        },
                        "id": 21656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5526:74:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 21659,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21331,
                            "src": "5658:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "6d6174757269747944617465",
                            "id": 21660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5667:14:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                              "typeString": "literal_string \"maturityDate\""
                            },
                            "value": "maturityDate"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                              "typeString": "literal_string \"maturityDate\""
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21657,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21325,
                            "src": "5614:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 21658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getUIntValueForTermsAttribute",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6857,
                          "src": "5614:43:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                          }
                        },
                        "id": 21661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5614:68:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21625,
                      "name": "shiftCalcTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23056,
                      "src": "5109:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 21662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5109:583:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5089:603:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21667,
                        "name": "marketObjectCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21329,
                        "src": "5733:16:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21668,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21624,
                        "src": "5751:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21669,
                        "name": "quantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21611,
                        "src": "5762:8:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21664,
                        "name": "dataRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21327,
                        "src": "5703:12:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DataRegistry_$7688",
                          "typeString": "contract DataRegistry"
                        }
                      },
                      "id": 21666,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "publishDataPoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7687,
                      "src": "5703:29:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_int256_$returns$__$",
                        "typeString": "function (bytes32,uint256,int256) external"
                      }
                    },
                    "id": 21670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5703:68:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21671,
                  "nodeType": "ExpressionStatement",
                  "src": "5703:68:67"
                }
              ]
            },
            "documentation": {
              "id": 21551,
              "nodeType": "StructuredDocumentation",
              "src": "4119:115:67",
              "text": " @param _event encoded redemption to register for\n @param amount amount of tokens to redeem"
            },
            "functionSelector": "1cb54d49",
            "id": 21673,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 21558,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21557,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38344,
                  "src": "4325:12:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4325:14:67"
              }
            ],
            "name": "registerForRedemption",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21553,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21673,
                  "src": "4270:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21552,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4270:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21555,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21673,
                  "src": "4286:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21554,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4286:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4269:32:67"
            },
            "returnParameters": {
              "id": 21559,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4344:0:67"
            },
            "scope": 21885,
            "src": "4239:1539:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21794,
              "nodeType": "Block",
              "src": "5970:1441:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21684,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21331,
                              "src": "6028:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21682,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21325,
                              "src": "6001:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 21683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isRegistered",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4510,
                            "src": "6001:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view external returns (bool)"
                            }
                          },
                          "id": 21685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6001:35:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6040:4:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "6001:43:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e6372656174654465706f736974466f724576656e743a2041535345545f444f45535f4e4f545f4558495354",
                        "id": 21688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6058:49:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b43043d6a26d2fd1809d588c13632b7ba9918745d30d9207f158332cc37a5c14",
                          "typeString": "literal_string \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\""
                        },
                        "value": "ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b43043d6a26d2fd1809d588c13632b7ba9918745d30d9207f158332cc37a5c14",
                          "typeString": "literal_string \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\""
                        }
                      ],
                      "id": 21681,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5980:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5980:137:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21690,
                  "nodeType": "ExpressionStatement",
                  "src": "5980:137:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21692,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21676,
                        "src": "6151:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 21693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6159:1:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 21691,
                      "name": "signalAmountForDeposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20854,
                      "src": "6128:22:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 21694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6128:33:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21695,
                  "nodeType": "ExpressionStatement",
                  "src": "6128:33:67"
                },
                {
                  "assignments": [
                    21697
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21697,
                      "mutability": "mutable",
                      "name": "deposit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6172:23:67",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                        "typeString": "struct DepositAllocaterStorage.Deposit"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21696,
                        "name": "Deposit",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 21165,
                        "src": "6172:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                          "typeString": "struct DepositAllocaterStorage.Deposit"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21701,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 21698,
                      "name": "deposits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21169,
                      "src": "6198:8:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Deposit_$21165_storage_$",
                        "typeString": "mapping(bytes32 => struct DepositAllocaterStorage.Deposit storage ref)"
                      }
                    },
                    "id": 21700,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 21699,
                      "name": "_event",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21676,
                      "src": "6207:6:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6198:16:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$21165_storage",
                      "typeString": "struct DepositAllocaterStorage.Deposit storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6172:42:67"
                },
                {
                  "assignments": [
                    21703
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21703,
                      "mutability": "mutable",
                      "name": "totalQuantity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6327:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21702,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6327:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21709,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21706,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21331,
                        "src": "6393:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7175616e74697479",
                        "id": 21707,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6402:10:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ce0f9e6c0aabeafe0ddc06e24b09d8141559d91eb3976c426b9091110b777d0f",
                          "typeString": "literal_string \"quantity\""
                        },
                        "value": "quantity"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ce0f9e6c0aabeafe0ddc06e24b09d8141559d91eb3976c426b9091110b777d0f",
                          "typeString": "literal_string \"quantity\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21704,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21325,
                        "src": "6350:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 21705,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getIntValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6866,
                      "src": "6350:42:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (bytes32,bytes32) view external returns (int256)"
                      }
                    },
                    "id": 21708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6350:63:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6327:86:67"
                },
                {
                  "assignments": [
                    21711
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21711,
                      "mutability": "mutable",
                      "name": "totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6423:18:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21710,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6423:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21719,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21715,
                              "name": "deposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21697,
                              "src": "6465:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                              }
                            },
                            "id": 21716,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scheduledFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21146,
                            "src": "6465:20:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21714,
                          "name": "totalSupplyAt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20330,
                          "src": "6451:13:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view returns (uint256)"
                          }
                        },
                        "id": 21717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6451:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6444:6:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 21712,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6444:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 21718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6444:43:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6423:64:67"
                },
                {
                  "assignments": [
                    21721
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21721,
                      "mutability": "mutable",
                      "name": "ratioSignaled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6497:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21720,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6497:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21730,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21728,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21711,
                        "src": "6565:11:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21724,
                              "name": "deposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21697,
                              "src": "6527:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                              }
                            },
                            "id": 21725,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalAmountSignaled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21152,
                            "src": "6527:27:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6520:6:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 21722,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6520:6:67",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 21726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6520:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 21727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "floatDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24193,
                      "src": "6520:44:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 21729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6520:57:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6497:80:67"
                },
                {
                  "assignments": [
                    21732
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21732,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6587:15:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21731,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6587:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21737,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21735,
                        "name": "totalQuantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21703,
                        "src": "6629:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21733,
                        "name": "ratioSignaled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21721,
                        "src": "6605:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 21734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "floatMult",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24120,
                      "src": "6605:23:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 21736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6605:38:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6587:56:67"
                },
                {
                  "assignments": [
                    21739,
                    21741
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21739,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6655:19:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21738,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "6655:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21741,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6676:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21740,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6676:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21745,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21743,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21676,
                        "src": "6712:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 21742,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "6700:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 21744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6700:19:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6654:65:67"
                },
                {
                  "assignments": [
                    21747
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21747,
                      "mutability": "mutable",
                      "name": "timestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6730:17:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21746,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6730:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21785,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              "id": 21752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21749,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21739,
                                "src": "6778:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21750,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "6791:9:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 21751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6791:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6778:26:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 21753,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6777:28:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21759,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21331,
                                  "src": "6953:7:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6578657263697365506572696f64",
                                  "id": 21760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6962:16:67",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e4a520a6d9071de7920fe6487dd776e3bb7eab906fb8e79826a4753f0d132636",
                                    "typeString": "literal_string \"exercisePeriod\""
                                  },
                                  "value": "exercisePeriod"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_e4a520a6d9071de7920fe6487dd776e3bb7eab906fb8e79826a4753f0d132636",
                                    "typeString": "literal_string \"exercisePeriod\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21757,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21325,
                                  "src": "6907:13:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 21758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPeriodValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6875,
                                "src": "6907:45:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                }
                              },
                              "id": 21761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6907:72:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21762,
                              "name": "scheduleTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21741,
                              "src": "7001:12:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21756,
                            "name": "getTimestampPlusPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24884,
                            "src": "6863:22:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6863:168:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "6777:254:67",
                        "trueExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21754,
                            "name": "deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21697,
                            "src": "6824:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                              "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                            }
                          },
                          "id": 21755,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "scheduledFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21146,
                          "src": "6824:20:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21768,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21331,
                                "src": "7111:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "627573696e657373446179436f6e76656e74696f6e",
                                "id": 21769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7120:23:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                  "typeString": "literal_string \"businessDayConvention\""
                                },
                                "value": "businessDayConvention"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                  "typeString": "literal_string \"businessDayConvention\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21766,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "7067:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 21767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getEnumValueForTermsAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6830,
                              "src": "7067:43:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                              }
                            },
                            "id": 21770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7067:77:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 21765,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "7045:21:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 21771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7045:100:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21775,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21331,
                                "src": "7212:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "63616c656e646172",
                                "id": 21776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7221:10:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                  "typeString": "literal_string \"calendar\""
                                },
                                "value": "calendar"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                  "typeString": "literal_string \"calendar\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21773,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "7168:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 21774,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getEnumValueForTermsAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6830,
                              "src": "7168:43:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                              }
                            },
                            "id": 21777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7168:64:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 21772,
                          "name": "Calendar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22506,
                          "src": "7159:8:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                            "typeString": "type(enum Calendar)"
                          }
                        },
                        "id": 21778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7159:74:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 21781,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21331,
                            "src": "7291:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "6d6174757269747944617465",
                            "id": 21782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7300:14:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                              "typeString": "literal_string \"maturityDate\""
                            },
                            "value": "maturityDate"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                              "typeString": "literal_string \"maturityDate\""
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21779,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21325,
                            "src": "7247:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 21780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getUIntValueForTermsAttribute",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6857,
                          "src": "7247:43:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                          }
                        },
                        "id": 21783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7247:68:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21748,
                      "name": "shiftCalcTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23056,
                      "src": "6750:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 21784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6750:575:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6730:595:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21789,
                        "name": "marketObjectCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21329,
                        "src": "7366:16:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21790,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21747,
                        "src": "7384:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21791,
                        "name": "quantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21732,
                        "src": "7395:8:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21786,
                        "name": "dataRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21327,
                        "src": "7336:12:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DataRegistry_$7688",
                          "typeString": "contract DataRegistry"
                        }
                      },
                      "id": 21788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "publishDataPoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7687,
                      "src": "7336:29:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_int256_$returns$__$",
                        "typeString": "function (bytes32,uint256,int256) external"
                      }
                    },
                    "id": 21792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7336:68:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21793,
                  "nodeType": "ExpressionStatement",
                  "src": "7336:68:67"
                }
              ]
            },
            "documentation": {
              "id": 21674,
              "nodeType": "StructuredDocumentation",
              "src": "5784:82:67",
              "text": " @param _event encoded redemption to cancel the registration for"
            },
            "functionSelector": "8e17e4a3",
            "id": 21795,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 21679,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21678,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38344,
                  "src": "5951:12:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5951:14:67"
              }
            ],
            "name": "cancelRegistrationForRedemption",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21676,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21795,
                  "src": "5912:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21675,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5912:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5911:16:67"
            },
            "returnParameters": {
              "id": 21680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5970:0:67"
            },
            "scope": 21885,
            "src": "5871:1540:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21815,
              "nodeType": "Block",
              "src": "7523:66:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21809,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21797,
                        "src": "7545:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21810,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21799,
                        "src": "7554:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21806,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "7533:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ProxySafeICT_$21885",
                          "typeString": "contract super ProxySafeICT"
                        }
                      },
                      "id": 21808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20499,
                      "src": "7533:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 21811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7533:28:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21812,
                  "nodeType": "ExpressionStatement",
                  "src": "7533:28:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 21813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7578:4:67",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 21805,
                  "id": 21814,
                  "nodeType": "Return",
                  "src": "7571:11:67"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "40c10f19",
            "id": 21816,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 21802,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21801,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 37372,
                  "src": "7487:9:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7487:9:67"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21797,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21816,
                  "src": "7431:15:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21796,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7431:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21799,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21816,
                  "src": "7448:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21798,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7448:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7430:33:67"
            },
            "returnParameters": {
              "id": 21805,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21804,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21816,
                  "src": "7513:4:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21803,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7513:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7512:6:67"
            },
            "scope": 21885,
            "src": "7417:172:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              20549
            ],
            "body": {
              "id": 21843,
              "nodeType": "Block",
              "src": "7739:178:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 21831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 21827,
                            "name": "totalAmountSignaledByHolder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21173,
                            "src": "7770:27:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21829,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 21828,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21818,
                            "src": "7798:4:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7770:33:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 21830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7807:1:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7770:38:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e5f7472616e736665723a20484f4c4445525f49535f5349474e414c494e47",
                        "id": 21832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7822:36:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9158e12e1795d0e8ad39a90e753eaaf0c0b282f1092294faefb89d32b8f36654",
                          "typeString": "literal_string \"ICT._transfer: HOLDER_IS_SIGNALING\""
                        },
                        "value": "ICT._transfer: HOLDER_IS_SIGNALING"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9158e12e1795d0e8ad39a90e753eaaf0c0b282f1092294faefb89d32b8f36654",
                          "typeString": "literal_string \"ICT._transfer: HOLDER_IS_SIGNALING\""
                        }
                      ],
                      "id": 21826,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7749:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7749:119:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21834,
                  "nodeType": "ExpressionStatement",
                  "src": "7749:119:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21838,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21818,
                        "src": "7894:4:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21839,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21820,
                        "src": "7900:2:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21840,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21822,
                        "src": "7904:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21835,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "7878:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ProxySafeICT_$21885",
                          "typeString": "contract super ProxySafeICT"
                        }
                      },
                      "id": 21837,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20549,
                      "src": "7878:15:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7878:32:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21842,
                  "nodeType": "ExpressionStatement",
                  "src": "7878:32:67"
                }
              ]
            },
            "documentation": null,
            "id": 21844,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transfer",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21824,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7726:8:67"
            },
            "parameters": {
              "id": 21823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21818,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21844,
                  "src": "7623:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21817,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7623:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21820,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21844,
                  "src": "7645:10:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21819,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7645:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21822,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21844,
                  "src": "7665:13:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21821,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7665:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7613:71:67"
            },
            "returnParameters": {
              "id": 21825,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7739:0:67"
            },
            "scope": 21885,
            "src": "7595:322:67",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              21001
            ],
            "body": {
              "id": 21883,
              "nodeType": "Block",
              "src": "8091:279:67",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 21864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 21857,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21854,
                          "name": "deposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21848,
                          "src": "8105:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                            "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                          }
                        },
                        "id": 21855,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "onlySignaled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21156,
                        "src": "8105:20:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 21856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8129:4:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "8105:28:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 21863,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21858,
                            "name": "deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21848,
                            "src": "8137:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                              "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                            }
                          },
                          "id": 21859,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signaledAmounts",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21164,
                          "src": "8137:23:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 21861,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 21860,
                          "name": "payee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21846,
                          "src": "8161:5:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8137:30:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 21862,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8170:1:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "8137:34:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8105:66:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21874,
                  "nodeType": "IfStatement",
                  "src": "8101:141:67",
                  "trueBody": {
                    "id": 21873,
                    "nodeType": "Block",
                    "src": "8173:69:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21866,
                              "name": "payee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21846,
                              "src": "8193:5:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21867,
                                  "name": "deposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21848,
                                  "src": "8200:7:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                    "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                                  }
                                },
                                "id": 21868,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signaledAmounts",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21164,
                                "src": "8200:23:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 21870,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 21869,
                                "name": "payee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21846,
                                "src": "8224:5:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8200:30:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21865,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              20524
                            ],
                            "referencedDeclaration": 20524,
                            "src": "8187:5:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 21871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8187:44:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21872,
                        "nodeType": "ExpressionStatement",
                        "src": "8187:44:67"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21878,
                        "name": "payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21846,
                        "src": "8337:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21879,
                        "name": "deposit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21848,
                        "src": "8344:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                          "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21880,
                        "name": "depositId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21850,
                        "src": "8353:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                          "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21875,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "8315:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ProxySafeICT_$21885",
                          "typeString": "contract super ProxySafeICT"
                        }
                      },
                      "id": 21877,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferDeposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21001,
                      "src": "8315:21:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Deposit_$21165_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,struct DepositAllocaterStorage.Deposit storage pointer,bytes32)"
                      }
                    },
                    "id": 21881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8315:48:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21882,
                  "nodeType": "ExpressionStatement",
                  "src": "8315:48:67"
                }
              ]
            },
            "documentation": null,
            "id": 21884,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferDeposit",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21852,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8078:8:67"
            },
            "parameters": {
              "id": 21851,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21846,
                  "mutability": "mutable",
                  "name": "payee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21884,
                  "src": "7957:13:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21845,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7957:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21848,
                  "mutability": "mutable",
                  "name": "deposit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21884,
                  "src": "7980:23:67",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                    "typeString": "struct DepositAllocaterStorage.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21847,
                    "name": "Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21165,
                    "src": "7980:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                      "typeString": "struct DepositAllocaterStorage.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21850,
                  "mutability": "mutable",
                  "name": "depositId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21884,
                  "src": "8013:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21849,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8013:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7947:89:67"
            },
            "returnParameters": {
              "id": 21853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8091:0:67"
            },
            "scope": 21885,
            "src": "7923:447:67",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "scope": 21886,
        "src": "839:7533:67"
      }
    ],
    "src": "41:8332:67"
  },
  "legacyAST": {
    "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/ProxySafeICT.sol",
    "exportedSymbols": {
      "ProxySafeICT": [
        21885
      ]
    },
    "id": 21886,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21292,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "41:24:67"
      },
      {
        "id": 21293,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:67"
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol",
        "id": 21294,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 37428,
        "src": "101:79:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/utils/ReentrancyGuard.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/utils/ReentrancyGuard.sol",
        "id": 21295,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 38350,
        "src": "181:86:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-ethereum-package/contracts/utils/Address.sol",
        "file": "@openzeppelin/contracts-ethereum-package/contracts/utils/Address.sol",
        "id": 21296,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 38300,
        "src": "268:78:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol",
        "file": "@atpar/actus-solidity/contracts/Core/ACTUSTypes.sol",
        "id": 21297,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 23007,
        "src": "347:61:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/EventUtils.sol",
        "id": 21298,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 24759,
        "src": "409:67:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Utils/PeriodUtils.sol",
        "id": 21299,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 24886,
        "src": "477:68:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
        "file": "@atpar/actus-solidity/contracts/Core/Conventions/BusinessDayConventions.sol",
        "id": 21300,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 23278,
        "src": "546:85:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@atpar/actus-solidity/contracts/Core/SignedMath.sol",
        "file": "@atpar/actus-solidity/contracts/Core/SignedMath.sol",
        "id": 21301,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 24231,
        "src": "632:61:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/AssetRegistry/IAssetRegistry.sol",
        "file": "../Core/Base/AssetRegistry/IAssetRegistry.sol",
        "id": 21302,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 4501,
        "src": "695:55:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/Core/Base/DataRegistry/DataRegistry.sol",
        "file": "../Core/Base/DataRegistry/DataRegistry.sol",
        "id": 21303,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 7689,
        "src": "751:52:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/johannes/Documents/dev/actus-protocol/ap-monorepo/packages/ap-contracts/contracts/ICT/DepositAllocater.sol",
        "file": "./DepositAllocater.sol",
        "id": 21304,
        "nodeType": "ImportDirective",
        "scope": 21886,
        "sourceUnit": 21142,
        "src": "804:32:67",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21305,
              "name": "DepositAllocater",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 21141,
              "src": "868:16:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DepositAllocater_$21141",
                "typeString": "contract DepositAllocater"
              }
            },
            "id": 21306,
            "nodeType": "InheritanceSpecifier",
            "src": "868:16:67"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21307,
              "name": "OwnableUpgradeSafe",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37427,
              "src": "890:18:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OwnableUpgradeSafe_$37427",
                "typeString": "contract OwnableUpgradeSafe"
              }
            },
            "id": 21308,
            "nodeType": "InheritanceSpecifier",
            "src": "890:18:67"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21309,
              "name": "EventUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24758,
              "src": "914:10:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_EventUtils_$24758",
                "typeString": "contract EventUtils"
              }
            },
            "id": 21310,
            "nodeType": "InheritanceSpecifier",
            "src": "914:10:67"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21311,
              "name": "PeriodUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24885,
              "src": "930:11:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_PeriodUtils_$24885",
                "typeString": "contract PeriodUtils"
              }
            },
            "id": 21312,
            "nodeType": "InheritanceSpecifier",
            "src": "930:11:67"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 21313,
              "name": "BusinessDayConventions",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 23277,
              "src": "947:22:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BusinessDayConventions_$23277",
                "typeString": "contract BusinessDayConventions"
              }
            },
            "id": 21314,
            "nodeType": "InheritanceSpecifier",
            "src": "947:22:67"
          }
        ],
        "contractDependencies": [
          19984,
          19992,
          20550,
          20578,
          21141,
          21178,
          23277,
          24758,
          24885,
          37222,
          37297,
          37427,
          38157,
          38235,
          38349
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 21885,
        "linearizedBaseContracts": [
          21885,
          23277,
          24885,
          24758,
          37427,
          21141,
          38349,
          21178,
          20550,
          20578,
          19984,
          19992,
          38157,
          38235,
          37222,
          37297
        ],
        "name": "ProxySafeICT",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 21317,
            "libraryName": {
              "contractScope": null,
              "id": 21315,
              "name": "Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 38299,
              "src": "982:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Address_$38299",
                "typeString": "library Address"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "976:26:67",
            "typeName": {
              "id": 21316,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "994:7:67",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "id": 21320,
            "libraryName": {
              "contractScope": null,
              "id": 21318,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37623,
              "src": "1013:8:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$37623",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1007:27:67",
            "typeName": {
              "id": 21319,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1026:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 21323,
            "libraryName": {
              "contractScope": null,
              "id": 21321,
              "name": "SignedMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24230,
              "src": "1045:10:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignedMath_$24230",
                "typeString": "library SignedMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1039:28:67",
            "typeName": {
              "id": 21322,
              "name": "int256",
              "nodeType": "ElementaryTypeName",
              "src": "1060:6:67",
              "typeDescriptions": {
                "typeIdentifier": "t_int256",
                "typeString": "int256"
              }
            }
          },
          {
            "constant": false,
            "functionSelector": "979d7e86",
            "id": 21325,
            "mutability": "mutable",
            "name": "assetRegistry",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1073:35:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
              "typeString": "contract IAssetRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 21324,
              "name": "IAssetRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4500,
              "src": "1073:14:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                "typeString": "contract IAssetRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a39c1d6b",
            "id": 21327,
            "mutability": "mutable",
            "name": "dataRegistry",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1114:32:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_DataRegistry_$7688",
              "typeString": "contract DataRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 21326,
              "name": "DataRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 7688,
              "src": "1114:12:67",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DataRegistry_$7688",
                "typeString": "contract DataRegistry"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "7bb7a8b9",
            "id": 21329,
            "mutability": "mutable",
            "name": "marketObjectCode",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1153:31:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 21328,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1153:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "44de240a",
            "id": 21331,
            "mutability": "mutable",
            "name": "assetId",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1190:22:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 21330,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1190:7:67",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 21335,
            "mutability": "mutable",
            "name": "__gap",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 21885,
            "src": "1235:25:67",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_array$_t_uint256_$10_storage",
              "typeString": "uint256[10]"
            },
            "typeName": {
              "baseType": {
                "id": 21332,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1235:7:67",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "id": 21334,
              "length": {
                "argumentTypes": null,
                "hexValue": "3130",
                "id": 21333,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1243:2:67",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "ArrayTypeName",
              "src": "1235:11:67",
              "typeDescriptions": {
                "typeIdentifier": "t_array$_t_uint256_$10_storage_ptr",
                "typeString": "uint256[10]"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 21398,
              "nodeType": "Block",
              "src": "1583:552:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21352,
                                "name": "_assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21338,
                                "src": "1622:14:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              ],
                              "id": 21351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1614:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21350,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1614:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21353,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1614:23:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 21354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isContract",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 38264,
                          "src": "1614:34:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 21355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1614:36:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e696e697469616c697a653a20494e56414c49445f41535345545f5245474953545259",
                        "id": 21356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1664:40:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1a98f1d831458c7661626303b308e350956e08a73545321c60eb0e760d9f893c",
                          "typeString": "literal_string \"ICT.initialize: INVALID_ASSET_REGISTRY\""
                        },
                        "value": "ICT.initialize: INVALID_ASSET_REGISTRY"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1a98f1d831458c7661626303b308e350956e08a73545321c60eb0e760d9f893c",
                          "typeString": "literal_string \"ICT.initialize: INVALID_ASSET_REGISTRY\""
                        }
                      ],
                      "id": 21349,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1593:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21357,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1593:121:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21358,
                  "nodeType": "ExpressionStatement",
                  "src": "1593:121:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21362,
                                "name": "_dataRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21340,
                                "src": "1753:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_DataRegistry_$7688",
                                  "typeString": "contract DataRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_DataRegistry_$7688",
                                  "typeString": "contract DataRegistry"
                                }
                              ],
                              "id": 21361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1745:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21360,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1745:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 21363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1745:22:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 21364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isContract",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 38264,
                          "src": "1745:33:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 21365,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1745:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e696e697469616c697a653a20494e56414c49445f444154415f5245474953545259",
                        "id": 21366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1794:39:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0c55b8c63c6950e07d603eab8fa6fe662e61abafe4bd61ab4694cea61b377dff",
                          "typeString": "literal_string \"ICT.initialize: INVALID_DATA_REGISTRY\""
                        },
                        "value": "ICT.initialize: INVALID_DATA_REGISTRY"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0c55b8c63c6950e07d603eab8fa6fe662e61abafe4bd61ab4694cea61b377dff",
                          "typeString": "literal_string \"ICT.initialize: INVALID_DATA_REGISTRY\""
                        }
                      ],
                      "id": 21359,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1724:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21367,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1724:119:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21368,
                  "nodeType": "ExpressionStatement",
                  "src": "1724:119:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "496e766573746d656e7420436572746966696361746520546f6b656e",
                        "id": 21372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1871:30:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_041ec3a2fa9bf4fd6737f2b29021271fc6ed461936c24d27d5e0d2a6f8485e46",
                          "typeString": "literal_string \"Investment Certificate Token\""
                        },
                        "value": "Investment Certificate Token"
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "494354",
                        "id": 21373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1903:5:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_906e0cab7796631b2dcc5cbf8706f0759ac83acc2be411b4a33c7f9f0f071281",
                          "typeString": "literal_string \"ICT\""
                        },
                        "value": "ICT"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_041ec3a2fa9bf4fd6737f2b29021271fc6ed461936c24d27d5e0d2a6f8485e46",
                          "typeString": "literal_string \"Investment Certificate Token\""
                        },
                        {
                          "typeIdentifier": "t_stringliteral_906e0cab7796631b2dcc5cbf8706f0759ac83acc2be411b4a33c7f9f0f071281",
                          "typeString": "literal_string \"ICT\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21369,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "1854:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ProxySafeICT_$21885",
                          "typeString": "contract super ProxySafeICT"
                        }
                      },
                      "id": 21371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20017,
                      "src": "1854:16:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,string memory)"
                      }
                    },
                    "id": 21374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1854:55:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21375,
                  "nodeType": "ExpressionStatement",
                  "src": "1854:55:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 21376,
                      "name": "__Ownable_init",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37327,
                      "src": "1919:14:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 21377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1919:16:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21378,
                  "nodeType": "ExpressionStatement",
                  "src": "1919:16:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 21379,
                      "name": "__ReentrancyGuard_init",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 38316,
                      "src": "1945:22:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 21380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1945:24:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21381,
                  "nodeType": "ExpressionStatement",
                  "src": "1945:24:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21383,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21344,
                        "src": "1997:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 21382,
                      "name": "transferOwnership",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37422,
                      "src": "1979:17:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 21384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1979:24:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21385,
                  "nodeType": "ExpressionStatement",
                  "src": "1979:24:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21386,
                      "name": "assetRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21325,
                      "src": "2014:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                        "typeString": "contract IAssetRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 21387,
                      "name": "_assetRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21338,
                      "src": "2030:14:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                        "typeString": "contract IAssetRegistry"
                      }
                    },
                    "src": "2014:30:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "id": 21389,
                  "nodeType": "ExpressionStatement",
                  "src": "2014:30:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21390,
                      "name": "dataRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21327,
                      "src": "2054:12:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DataRegistry_$7688",
                        "typeString": "contract DataRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 21391,
                      "name": "_dataRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21340,
                      "src": "2069:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DataRegistry_$7688",
                        "typeString": "contract DataRegistry"
                      }
                    },
                    "src": "2054:28:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DataRegistry_$7688",
                      "typeString": "contract DataRegistry"
                    }
                  },
                  "id": 21393,
                  "nodeType": "ExpressionStatement",
                  "src": "2054:28:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21394,
                      "name": "marketObjectCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21329,
                      "src": "2092:16:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 21395,
                      "name": "_marketObjectCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21342,
                      "src": "2111:17:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2092:36:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 21397,
                  "nodeType": "ExpressionStatement",
                  "src": "2092:36:67"
                }
              ]
            },
            "documentation": {
              "id": 21336,
              "nodeType": "StructuredDocumentation",
              "src": "1267:113:67",
              "text": " @notice Initialize a new instance storage\n @dev \"constructor\" to be called on deployment"
            },
            "functionSelector": "a31ee5b0",
            "id": 21399,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 21347,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21346,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 37270,
                  "src": "1567:11:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1567:11:67"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21338,
                  "mutability": "mutable",
                  "name": "_assetRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21399,
                  "src": "1414:29:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                    "typeString": "contract IAssetRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21337,
                    "name": "IAssetRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4500,
                    "src": "1414:14:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                      "typeString": "contract IAssetRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21340,
                  "mutability": "mutable",
                  "name": "_dataRegistry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21399,
                  "src": "1453:26:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_DataRegistry_$7688",
                    "typeString": "contract DataRegistry"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21339,
                    "name": "DataRegistry",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7688,
                    "src": "1453:12:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DataRegistry_$7688",
                      "typeString": "contract DataRegistry"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21342,
                  "mutability": "mutable",
                  "name": "_marketObjectCode",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21399,
                  "src": "1489:25:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21341,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1489:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21344,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21399,
                  "src": "1524:13:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21343,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1524:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1404:139:67"
            },
            "returnParameters": {
              "id": 21348,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1583:0:67"
            },
            "scope": 21885,
            "src": "1385:750:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21420,
              "nodeType": "Block",
              "src": "2216:151:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 21412,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 21407,
                          "name": "assetId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21331,
                          "src": "2248:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 21410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2267:1:67",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 21409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2259:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 21408,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2259:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 21411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2259:10:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2248:21:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e736574417373657449643a2041535345545f49445f414c52454144595f534554",
                        "id": 21413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2283:38:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_97db4697d9d4380178a6c707781066b006d0bc00bb9f31fd8b54ebb3e602a250",
                          "typeString": "literal_string \"ICT.setAssetId: ASSET_ID_ALREADY_SET\""
                        },
                        "value": "ICT.setAssetId: ASSET_ID_ALREADY_SET"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_97db4697d9d4380178a6c707781066b006d0bc00bb9f31fd8b54ebb3e602a250",
                          "typeString": "literal_string \"ICT.setAssetId: ASSET_ID_ALREADY_SET\""
                        }
                      ],
                      "id": 21406,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2226:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2226:105:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21415,
                  "nodeType": "ExpressionStatement",
                  "src": "2226:105:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 21416,
                      "name": "assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21331,
                      "src": "2342:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 21417,
                      "name": "_assetId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21401,
                      "src": "2352:8:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2342:18:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 21419,
                  "nodeType": "ExpressionStatement",
                  "src": "2342:18:67"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "26158a8b",
            "id": 21421,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 21404,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21403,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 37372,
                  "src": "2202:9:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2202:9:67"
              }
            ],
            "name": "setAssetId",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21402,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21401,
                  "mutability": "mutable",
                  "name": "_assetId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21421,
                  "src": "2161:16:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21400,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2161:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2160:18:67"
            },
            "returnParameters": {
              "id": 21405,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2216:0:67"
            },
            "scope": 21885,
            "src": "2141:226:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21478,
              "nodeType": "Block",
              "src": "2462:758:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21431,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21331,
                              "src": "2520:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21429,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21325,
                              "src": "2493:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 21430,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isRegistered",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4510,
                            "src": "2493:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view external returns (bool)"
                            }
                          },
                          "id": 21432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2493:35:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2532:4:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "2493:43:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e6372656174654465706f736974466f724576656e743a2041535345545f444f45535f4e4f545f4558495354",
                        "id": 21435,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2550:49:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b43043d6a26d2fd1809d588c13632b7ba9918745d30d9207f158332cc37a5c14",
                          "typeString": "literal_string \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\""
                        },
                        "value": "ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b43043d6a26d2fd1809d588c13632b7ba9918745d30d9207f158332cc37a5c14",
                          "typeString": "literal_string \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\""
                        }
                      ],
                      "id": 21428,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2472:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2472:137:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21437,
                  "nodeType": "ExpressionStatement",
                  "src": "2472:137:67"
                },
                {
                  "assignments": [
                    21439,
                    21441
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21439,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21478,
                      "src": "2621:19:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21438,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "2621:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21441,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21478,
                      "src": "2642:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21440,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2642:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21445,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21443,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21423,
                        "src": "2678:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 21442,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "2666:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 21444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2666:19:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2620:65:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "id": 21450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21447,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21439,
                            "src": "2845:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21448,
                              "name": "EventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22610,
                              "src": "2858:9:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                "typeString": "type(enum EventType)"
                              }
                            },
                            "id": 21449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "XD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2858:12:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "src": "2845:25:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_EventType_$22610",
                            "typeString": "enum EventType"
                          },
                          "id": 21454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 21451,
                            "name": "eventType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21439,
                            "src": "2874:9:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21452,
                              "name": "EventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22610,
                              "src": "2887:9:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                "typeString": "type(enum EventType)"
                              }
                            },
                            "id": 21453,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "RPD",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2887:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            }
                          },
                          "src": "2874:26:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2845:55:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e6372656174654465706f736974466f724576656e743a20464f5242494444454e5f4556454e5f54595045",
                        "id": 21456,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2914:48:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_96c665b6247ae69fbbc07adc636611533b47ef47b2e7b78210ea8ec736bd8ea0",
                          "typeString": "literal_string \"ICT.createDepositForEvent: FORBIDDEN_EVEN_TYPE\""
                        },
                        "value": "ICT.createDepositForEvent: FORBIDDEN_EVEN_TYPE"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_96c665b6247ae69fbbc07adc636611533b47ef47b2e7b78210ea8ec736bd8ea0",
                          "typeString": "literal_string \"ICT.createDepositForEvent: FORBIDDEN_EVEN_TYPE\""
                        }
                      ],
                      "id": 21446,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2824:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2824:148:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21458,
                  "nodeType": "ExpressionStatement",
                  "src": "2824:148:67"
                },
                {
                  "assignments": [
                    21460
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21460,
                      "mutability": "mutable",
                      "name": "currency",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21478,
                      "src": "2983:16:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 21459,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2983:7:67",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21466,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21463,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21331,
                        "src": "3049:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "63757272656e6379",
                        "id": 21464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3058:10:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        },
                        "value": "currency"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3c08d3f448df2356e2cb0a694d483a225e67b278dc944049feecddb1d7e6b1f5",
                          "typeString": "literal_string \"currency\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21461,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21325,
                        "src": "3002:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 21462,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getAddressValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6839,
                      "src": "3002:46:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes32) view external returns (address)"
                      }
                    },
                    "id": 21465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3002:67:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2983:86:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21468,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21423,
                        "src": "3107:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21469,
                        "name": "scheduleTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21441,
                        "src": "3127:12:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_EventType_$22610",
                              "typeString": "enum EventType"
                            },
                            "id": 21473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 21470,
                              "name": "eventType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21439,
                              "src": "3154:9:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21471,
                                "name": "EventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22610,
                                "src": "3167:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                  "typeString": "type(enum EventType)"
                                }
                              },
                              "id": 21472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "RFD",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3167:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            "src": "3154:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 21474,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3153:28:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21475,
                        "name": "currency",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21460,
                        "src": "3195:8:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 21467,
                      "name": "createDeposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20643,
                      "src": "3080:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_bool_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,uint256,bool,address)"
                      }
                    },
                    "id": 21476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3080:133:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21477,
                  "nodeType": "ExpressionStatement",
                  "src": "3080:133:67"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "ec15b9ca",
            "id": 21479,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 21426,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21425,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38344,
                  "src": "2443:12:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2443:14:67"
              }
            ],
            "name": "createDepositForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21424,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21423,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21479,
                  "src": "2404:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21422,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2404:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2403:16:67"
            },
            "returnParameters": {
              "id": 21427,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2462:0:67"
            },
            "scope": 21885,
            "src": "2373:847:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21549,
              "nodeType": "Block",
              "src": "3320:793:67",
              "statements": [
                {
                  "assignments": [
                    21487,
                    21489
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21487,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21549,
                      "src": "3331:19:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21486,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "3331:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21489,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21549,
                      "src": "3352:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21488,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3352:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21493,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21491,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21481,
                        "src": "3388:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 21490,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "3376:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 21492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3376:19:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3330:65:67"
                },
                {
                  "assignments": [
                    21495,
                    21497
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21495,
                      "mutability": "mutable",
                      "name": "isSettled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21549,
                      "src": "3407:14:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 21494,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3407:4:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21497,
                      "mutability": "mutable",
                      "name": "payoff",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21549,
                      "src": "3423:13:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21496,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3423:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21521,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21500,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21331,
                        "src": "3482:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              "id": 21504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21501,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21487,
                                "src": "3504:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21502,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "3517:9:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 21503,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3517:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "3504:26:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 21505,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "3503:28:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21508,
                                "name": "EventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22610,
                                "src": "3609:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                  "typeString": "type(enum EventType)"
                                }
                              },
                              "id": 21509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "RPD",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3609:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 21513,
                                      "name": "assetId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21331,
                                      "src": "3738:7:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "736574746c656d656e74506572696f64",
                                      "id": 21514,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3747:18:67",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_0a5ea9d3932adf12dc03652b0e3eeb001e53c884f1b47e4121f7de15230a5bb8",
                                        "typeString": "literal_string \"settlementPeriod\""
                                      },
                                      "value": "settlementPeriod"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_0a5ea9d3932adf12dc03652b0e3eeb001e53c884f1b47e4121f7de15230a5bb8",
                                        "typeString": "literal_string \"settlementPeriod\""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21511,
                                      "name": "assetRegistry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21325,
                                      "src": "3692:13:67",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                        "typeString": "contract IAssetRegistry"
                                      }
                                    },
                                    "id": 21512,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getPeriodValueForTermsAttribute",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6875,
                                    "src": "3692:45:67",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                      "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                    }
                                  },
                                  "id": 21515,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3692:74:67",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                    "typeString": "struct IP memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 21516,
                                  "name": "scheduleTime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21489,
                                  "src": "3792:12:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                    "typeString": "struct IP memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 21510,
                                "name": "getTimestampPlusPeriod",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24884,
                                "src": "3644:22:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 21517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3644:182:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21507,
                            "name": "encodeEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24702,
                            "src": "3576:11:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_EventType_$22610_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (enum EventType,uint256) pure returns (bytes32)"
                            }
                          },
                          "id": 21518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3576:268:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 21519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "3503:341:67",
                        "trueExpression": {
                          "argumentTypes": null,
                          "id": 21506,
                          "name": "_event",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21481,
                          "src": "3551:6:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21498,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21325,
                        "src": "3440:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 21499,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isEventSettled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4914,
                      "src": "3440:28:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_bool_$_t_int256_$",
                        "typeString": "function (bytes32,bytes32) view external returns (bool,int256)"
                      }
                    },
                    "id": 21520,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3440:414:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                      "typeString": "tuple(bool,int256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3406:448:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 21523,
                          "name": "isSettled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21495,
                          "src": "3886:9:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3899:4:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "3886:17:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e66657463684465706f736974416d6f756e74466f724576656e743a204e4f545f5945545f4445504f5349544544",
                        "id": 21526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3917:51:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_156d2845289b6765e807e58c97a3794425ca2b4ae12471f8b354556718796f97",
                          "typeString": "literal_string \"ICT.fetchDepositAmountForEvent: NOT_YET_DEPOSITED\""
                        },
                        "value": "ICT.fetchDepositAmountForEvent: NOT_YET_DEPOSITED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_156d2845289b6765e807e58c97a3794425ca2b4ae12471f8b354556718796f97",
                          "typeString": "literal_string \"ICT.fetchDepositAmountForEvent: NOT_YET_DEPOSITED\""
                        }
                      ],
                      "id": 21522,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3865:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3865:113:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21528,
                  "nodeType": "ExpressionStatement",
                  "src": "3865:113:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21530,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21481,
                        "src": "4022:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 21533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21531,
                                "name": "payoff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21497,
                                "src": "4043:6:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4053:1:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4043:11:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 21534,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4042:13:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 21544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21541,
                                "name": "payoff",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21497,
                                "src": "4084:6:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 21543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "4093:2:67",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 21542,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4094:1:67",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              },
                              "src": "4084:11:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 21540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4076:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 21539,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4076:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 21545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4076:20:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "4042:54:67",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21537,
                              "name": "payoff",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21497,
                              "src": "4066:6:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 21536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4058:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 21535,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4058:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 21538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4058:15:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21529,
                      "name": "updateDepositAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20685,
                      "src": "3989:19:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 21547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3989:117:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21548,
                  "nodeType": "ExpressionStatement",
                  "src": "3989:117:67"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "2069daeb",
            "id": 21550,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 21484,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21483,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38344,
                  "src": "3301:12:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3301:14:67"
              }
            ],
            "name": "fetchDepositAmountForEvent",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21481,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21550,
                  "src": "3262:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21480,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3262:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3261:16:67"
            },
            "returnParameters": {
              "id": 21485,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3320:0:67"
            },
            "scope": 21885,
            "src": "3226:887:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21672,
              "nodeType": "Block",
              "src": "4344:1434:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21566,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21563,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21331,
                              "src": "4402:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21561,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21325,
                              "src": "4375:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 21562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isRegistered",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4510,
                            "src": "4375:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view external returns (bool)"
                            }
                          },
                          "id": 21564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4375:35:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4414:4:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "4375:43:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e7265676973746572466f72526564656d7074696f6e3a2041535345545f444f45535f4e4f545f4558495354",
                        "id": 21567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4432:49:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8ea466dbaad28668ba190dc7d83419c5624d69b4c7eff5a09467763a0f37bbf7",
                          "typeString": "literal_string \"ICT.registerForRedemption: ASSET_DOES_NOT_EXIST\""
                        },
                        "value": "ICT.registerForRedemption: ASSET_DOES_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8ea466dbaad28668ba190dc7d83419c5624d69b4c7eff5a09467763a0f37bbf7",
                          "typeString": "literal_string \"ICT.registerForRedemption: ASSET_DOES_NOT_EXIST\""
                        }
                      ],
                      "id": 21560,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4354:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4354:137:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21569,
                  "nodeType": "ExpressionStatement",
                  "src": "4354:137:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21571,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21553,
                        "src": "4525:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21572,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21555,
                        "src": "4533:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21570,
                      "name": "signalAmountForDeposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20854,
                      "src": "4502:22:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 21573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4502:38:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21574,
                  "nodeType": "ExpressionStatement",
                  "src": "4502:38:67"
                },
                {
                  "assignments": [
                    21576
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21576,
                      "mutability": "mutable",
                      "name": "deposit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4551:23:67",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                        "typeString": "struct DepositAllocaterStorage.Deposit"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21575,
                        "name": "Deposit",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 21165,
                        "src": "4551:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                          "typeString": "struct DepositAllocaterStorage.Deposit"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21580,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 21577,
                      "name": "deposits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21169,
                      "src": "4577:8:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Deposit_$21165_storage_$",
                        "typeString": "mapping(bytes32 => struct DepositAllocaterStorage.Deposit storage ref)"
                      }
                    },
                    "id": 21579,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 21578,
                      "name": "_event",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21553,
                      "src": "4586:6:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4577:16:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$21165_storage",
                      "typeString": "struct DepositAllocaterStorage.Deposit storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4551:42:67"
                },
                {
                  "assignments": [
                    21582
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21582,
                      "mutability": "mutable",
                      "name": "totalQuantity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4706:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21581,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4706:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21588,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21585,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21331,
                        "src": "4772:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7175616e74697479",
                        "id": 21586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4781:10:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ce0f9e6c0aabeafe0ddc06e24b09d8141559d91eb3976c426b9091110b777d0f",
                          "typeString": "literal_string \"quantity\""
                        },
                        "value": "quantity"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ce0f9e6c0aabeafe0ddc06e24b09d8141559d91eb3976c426b9091110b777d0f",
                          "typeString": "literal_string \"quantity\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21583,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21325,
                        "src": "4729:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 21584,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getIntValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6866,
                      "src": "4729:42:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (bytes32,bytes32) view external returns (int256)"
                      }
                    },
                    "id": 21587,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4729:63:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4706:86:67"
                },
                {
                  "assignments": [
                    21590
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21590,
                      "mutability": "mutable",
                      "name": "totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4802:18:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21589,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4802:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21598,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21594,
                              "name": "deposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21576,
                              "src": "4844:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                              }
                            },
                            "id": 21595,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scheduledFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21146,
                            "src": "4844:20:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21593,
                          "name": "totalSupplyAt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20330,
                          "src": "4830:13:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view returns (uint256)"
                          }
                        },
                        "id": 21596,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4830:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "4823:6:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 21591,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4823:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 21597,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4823:43:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4802:64:67"
                },
                {
                  "assignments": [
                    21600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21600,
                      "mutability": "mutable",
                      "name": "ratioSignaled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4876:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21599,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4876:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21609,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21607,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21590,
                        "src": "4944:11:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21603,
                              "name": "deposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21576,
                              "src": "4906:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                              }
                            },
                            "id": 21604,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalAmountSignaled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21152,
                            "src": "4906:27:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4899:6:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 21601,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4899:6:67",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 21605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4899:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 21606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "floatDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24193,
                      "src": "4899:44:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 21608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4899:57:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4876:80:67"
                },
                {
                  "assignments": [
                    21611
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21611,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "4966:15:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21610,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4966:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21616,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21614,
                        "name": "totalQuantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21582,
                        "src": "5008:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21612,
                        "name": "ratioSignaled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21600,
                        "src": "4984:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 21613,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "floatMult",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24120,
                      "src": "4984:23:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 21615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4984:38:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4966:56:67"
                },
                {
                  "assignments": [
                    21618,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21618,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "5034:19:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21617,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "5034:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 21622,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21620,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21553,
                        "src": "5071:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 21619,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "5059:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 21621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5059:19:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5033:45:67"
                },
                {
                  "assignments": [
                    21624
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21624,
                      "mutability": "mutable",
                      "name": "timestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21672,
                      "src": "5089:17:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21623,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5089:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21663,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              "id": 21629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21626,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21618,
                                "src": "5137:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21627,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "5150:9:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 21628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "5150:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "5137:26:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 21630,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5136:28:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21636,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21331,
                                  "src": "5312:7:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6578657263697365506572696f64",
                                  "id": 21637,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5321:16:67",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e4a520a6d9071de7920fe6487dd776e3bb7eab906fb8e79826a4753f0d132636",
                                    "typeString": "literal_string \"exercisePeriod\""
                                  },
                                  "value": "exercisePeriod"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_e4a520a6d9071de7920fe6487dd776e3bb7eab906fb8e79826a4753f0d132636",
                                    "typeString": "literal_string \"exercisePeriod\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21634,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21325,
                                  "src": "5266:13:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 21635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPeriodValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6875,
                                "src": "5266:45:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                }
                              },
                              "id": 21638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5266:72:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21639,
                                "name": "deposit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21576,
                                "src": "5360:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                  "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                                }
                              },
                              "id": 21640,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "scheduledFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 21146,
                              "src": "5360:20:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21633,
                            "name": "getTimestampPlusPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24884,
                            "src": "5222:22:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5222:176:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21642,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "5136:262:67",
                        "trueExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21631,
                            "name": "deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21576,
                            "src": "5183:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                              "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                            }
                          },
                          "id": 21632,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "scheduledFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21146,
                          "src": "5183:20:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21646,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21331,
                                "src": "5478:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "627573696e657373446179436f6e76656e74696f6e",
                                "id": 21647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5487:23:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                  "typeString": "literal_string \"businessDayConvention\""
                                },
                                "value": "businessDayConvention"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                  "typeString": "literal_string \"businessDayConvention\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21644,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "5434:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 21645,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getEnumValueForTermsAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6830,
                              "src": "5434:43:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                              }
                            },
                            "id": 21648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5434:77:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 21643,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "5412:21:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 21649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5412:100:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21653,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21331,
                                "src": "5579:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "63616c656e646172",
                                "id": 21654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5588:10:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                  "typeString": "literal_string \"calendar\""
                                },
                                "value": "calendar"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                  "typeString": "literal_string \"calendar\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21651,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "5535:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 21652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getEnumValueForTermsAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6830,
                              "src": "5535:43:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                              }
                            },
                            "id": 21655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5535:64:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 21650,
                          "name": "Calendar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22506,
                          "src": "5526:8:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                            "typeString": "type(enum Calendar)"
                          }
                        },
                        "id": 21656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5526:74:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 21659,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21331,
                            "src": "5658:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "6d6174757269747944617465",
                            "id": 21660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5667:14:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                              "typeString": "literal_string \"maturityDate\""
                            },
                            "value": "maturityDate"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                              "typeString": "literal_string \"maturityDate\""
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21657,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21325,
                            "src": "5614:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 21658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getUIntValueForTermsAttribute",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6857,
                          "src": "5614:43:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                          }
                        },
                        "id": 21661,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5614:68:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21625,
                      "name": "shiftCalcTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23056,
                      "src": "5109:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 21662,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5109:583:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5089:603:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21667,
                        "name": "marketObjectCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21329,
                        "src": "5733:16:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21668,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21624,
                        "src": "5751:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21669,
                        "name": "quantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21611,
                        "src": "5762:8:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21664,
                        "name": "dataRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21327,
                        "src": "5703:12:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DataRegistry_$7688",
                          "typeString": "contract DataRegistry"
                        }
                      },
                      "id": 21666,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "publishDataPoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7687,
                      "src": "5703:29:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_int256_$returns$__$",
                        "typeString": "function (bytes32,uint256,int256) external"
                      }
                    },
                    "id": 21670,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5703:68:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21671,
                  "nodeType": "ExpressionStatement",
                  "src": "5703:68:67"
                }
              ]
            },
            "documentation": {
              "id": 21551,
              "nodeType": "StructuredDocumentation",
              "src": "4119:115:67",
              "text": " @param _event encoded redemption to register for\n @param amount amount of tokens to redeem"
            },
            "functionSelector": "1cb54d49",
            "id": 21673,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 21558,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21557,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38344,
                  "src": "4325:12:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4325:14:67"
              }
            ],
            "name": "registerForRedemption",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21553,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21673,
                  "src": "4270:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21552,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4270:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21555,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21673,
                  "src": "4286:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21554,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4286:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4269:32:67"
            },
            "returnParameters": {
              "id": 21559,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4344:0:67"
            },
            "scope": 21885,
            "src": "4239:1539:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21794,
              "nodeType": "Block",
              "src": "5970:1441:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 21687,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21684,
                              "name": "assetId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21331,
                              "src": "6028:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21682,
                              "name": "assetRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21325,
                              "src": "6001:13:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                "typeString": "contract IAssetRegistry"
                              }
                            },
                            "id": 21683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isRegistered",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4510,
                            "src": "6001:26:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32) view external returns (bool)"
                            }
                          },
                          "id": 21685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6001:35:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 21686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6040:4:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "6001:43:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e6372656174654465706f736974466f724576656e743a2041535345545f444f45535f4e4f545f4558495354",
                        "id": 21688,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6058:49:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b43043d6a26d2fd1809d588c13632b7ba9918745d30d9207f158332cc37a5c14",
                          "typeString": "literal_string \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\""
                        },
                        "value": "ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b43043d6a26d2fd1809d588c13632b7ba9918745d30d9207f158332cc37a5c14",
                          "typeString": "literal_string \"ICT.createDepositForEvent: ASSET_DOES_NOT_EXIST\""
                        }
                      ],
                      "id": 21681,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5980:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5980:137:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21690,
                  "nodeType": "ExpressionStatement",
                  "src": "5980:137:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21692,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21676,
                        "src": "6151:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 21693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6159:1:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 21691,
                      "name": "signalAmountForDeposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 20854,
                      "src": "6128:22:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 21694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6128:33:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21695,
                  "nodeType": "ExpressionStatement",
                  "src": "6128:33:67"
                },
                {
                  "assignments": [
                    21697
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21697,
                      "mutability": "mutable",
                      "name": "deposit",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6172:23:67",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                        "typeString": "struct DepositAllocaterStorage.Deposit"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21696,
                        "name": "Deposit",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 21165,
                        "src": "6172:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                          "typeString": "struct DepositAllocaterStorage.Deposit"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21701,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 21698,
                      "name": "deposits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21169,
                      "src": "6198:8:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Deposit_$21165_storage_$",
                        "typeString": "mapping(bytes32 => struct DepositAllocaterStorage.Deposit storage ref)"
                      }
                    },
                    "id": 21700,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 21699,
                      "name": "_event",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21676,
                      "src": "6207:6:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6198:16:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$21165_storage",
                      "typeString": "struct DepositAllocaterStorage.Deposit storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6172:42:67"
                },
                {
                  "assignments": [
                    21703
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21703,
                      "mutability": "mutable",
                      "name": "totalQuantity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6327:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21702,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6327:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21709,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21706,
                        "name": "assetId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21331,
                        "src": "6393:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7175616e74697479",
                        "id": 21707,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6402:10:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ce0f9e6c0aabeafe0ddc06e24b09d8141559d91eb3976c426b9091110b777d0f",
                          "typeString": "literal_string \"quantity\""
                        },
                        "value": "quantity"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ce0f9e6c0aabeafe0ddc06e24b09d8141559d91eb3976c426b9091110b777d0f",
                          "typeString": "literal_string \"quantity\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21704,
                        "name": "assetRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21325,
                        "src": "6350:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                          "typeString": "contract IAssetRegistry"
                        }
                      },
                      "id": 21705,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getIntValueForTermsAttribute",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6866,
                      "src": "6350:42:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_int256_$",
                        "typeString": "function (bytes32,bytes32) view external returns (int256)"
                      }
                    },
                    "id": 21708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6350:63:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6327:86:67"
                },
                {
                  "assignments": [
                    21711
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21711,
                      "mutability": "mutable",
                      "name": "totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6423:18:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21710,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6423:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21719,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21715,
                              "name": "deposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21697,
                              "src": "6465:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                              }
                            },
                            "id": 21716,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "scheduledFor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21146,
                            "src": "6465:20:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21714,
                          "name": "totalSupplyAt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20330,
                          "src": "6451:13:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) view returns (uint256)"
                          }
                        },
                        "id": 21717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6451:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "6444:6:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 21712,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6444:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 21718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6444:43:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6423:64:67"
                },
                {
                  "assignments": [
                    21721
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21721,
                      "mutability": "mutable",
                      "name": "ratioSignaled",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6497:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21720,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6497:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21730,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21728,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21711,
                        "src": "6565:11:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21724,
                              "name": "deposit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21697,
                              "src": "6527:7:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                              }
                            },
                            "id": 21725,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totalAmountSignaled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 21152,
                            "src": "6527:27:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 21723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6520:6:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_int256_$",
                            "typeString": "type(int256)"
                          },
                          "typeName": {
                            "id": 21722,
                            "name": "int256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6520:6:67",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 21726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6520:35:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 21727,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "floatDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24193,
                      "src": "6520:44:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 21729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6520:57:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6497:80:67"
                },
                {
                  "assignments": [
                    21732
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21732,
                      "mutability": "mutable",
                      "name": "quantity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6587:15:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 21731,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6587:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21737,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21735,
                        "name": "totalQuantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21703,
                        "src": "6629:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21733,
                        "name": "ratioSignaled",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21721,
                        "src": "6605:13:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "id": 21734,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "floatMult",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24120,
                      "src": "6605:23:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                        "typeString": "function (int256,int256) pure returns (int256)"
                      }
                    },
                    "id": 21736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6605:38:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6587:56:67"
                },
                {
                  "assignments": [
                    21739,
                    21741
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21739,
                      "mutability": "mutable",
                      "name": "eventType",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6655:19:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_EventType_$22610",
                        "typeString": "enum EventType"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21738,
                        "name": "EventType",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 22610,
                        "src": "6655:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_EventType_$22610",
                          "typeString": "enum EventType"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21741,
                      "mutability": "mutable",
                      "name": "scheduleTime",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6676:20:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21740,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6676:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21745,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21743,
                        "name": "_event",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21676,
                        "src": "6712:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 21742,
                      "name": "decodeEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24743,
                      "src": "6700:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_enum$_EventType_$22610_$_t_uint256_$",
                        "typeString": "function (bytes32) pure returns (enum EventType,uint256)"
                      }
                    },
                    "id": 21744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6700:19:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_EventType_$22610_$_t_uint256_$",
                      "typeString": "tuple(enum EventType,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6654:65:67"
                },
                {
                  "assignments": [
                    21747
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21747,
                      "mutability": "mutable",
                      "name": "timestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 21794,
                      "src": "6730:17:67",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21746,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6730:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21785,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_EventType_$22610",
                                "typeString": "enum EventType"
                              },
                              "id": 21752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 21749,
                                "name": "eventType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21739,
                                "src": "6778:9:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21750,
                                  "name": "EventType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22610,
                                  "src": "6791:9:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_EventType_$22610_$",
                                    "typeString": "type(enum EventType)"
                                  }
                                },
                                "id": 21751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "RFD",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6791:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_EventType_$22610",
                                  "typeString": "enum EventType"
                                }
                              },
                              "src": "6778:26:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 21753,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6777:28:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 21759,
                                  "name": "assetId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21331,
                                  "src": "6953:7:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "6578657263697365506572696f64",
                                  "id": 21760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6962:16:67",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e4a520a6d9071de7920fe6487dd776e3bb7eab906fb8e79826a4753f0d132636",
                                    "typeString": "literal_string \"exercisePeriod\""
                                  },
                                  "value": "exercisePeriod"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_e4a520a6d9071de7920fe6487dd776e3bb7eab906fb8e79826a4753f0d132636",
                                    "typeString": "literal_string \"exercisePeriod\""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21757,
                                  "name": "assetRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21325,
                                  "src": "6907:13:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                    "typeString": "contract IAssetRegistry"
                                  }
                                },
                                "id": 21758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getPeriodValueForTermsAttribute",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6875,
                                "src": "6907:45:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_struct$_IP_$22493_memory_ptr_$",
                                  "typeString": "function (bytes32,bytes32) view external returns (struct IP memory)"
                                }
                              },
                              "id": 21761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6907:72:67",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21762,
                              "name": "scheduleTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21741,
                              "src": "7001:12:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_IP_$22493_memory_ptr",
                                "typeString": "struct IP memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21756,
                            "name": "getTimestampPlusPeriod",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24884,
                            "src": "6863:22:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_IP_$22493_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (struct IP memory,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6863:168:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "6777:254:67",
                        "trueExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21754,
                            "name": "deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21697,
                            "src": "6824:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                              "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                            }
                          },
                          "id": 21755,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "scheduledFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21146,
                          "src": "6824:20:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21768,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21331,
                                "src": "7111:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "627573696e657373446179436f6e76656e74696f6e",
                                "id": 21769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7120:23:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                  "typeString": "literal_string \"businessDayConvention\""
                                },
                                "value": "businessDayConvention"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_905a4d95a2e27644bcaa74baefc28eed7d59efaa13569ee390a0c0252275c4b4",
                                  "typeString": "literal_string \"businessDayConvention\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21766,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "7067:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 21767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getEnumValueForTermsAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6830,
                              "src": "7067:43:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                              }
                            },
                            "id": 21770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7067:77:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 21765,
                          "name": "BusinessDayConvention",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22503,
                          "src": "7045:21:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_BusinessDayConvention_$22503_$",
                            "typeString": "type(enum BusinessDayConvention)"
                          }
                        },
                        "id": 21771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7045:100:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21775,
                                "name": "assetId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21331,
                                "src": "7212:7:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "63616c656e646172",
                                "id": 21776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7221:10:67",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                  "typeString": "literal_string \"calendar\""
                                },
                                "value": "calendar"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_f12295c6cff7c66c50482f7bee8dd63da0f387f76819ffea278d69c8f37485d1",
                                  "typeString": "literal_string \"calendar\""
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21773,
                                "name": "assetRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21325,
                                "src": "7168:13:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                                  "typeString": "contract IAssetRegistry"
                                }
                              },
                              "id": 21774,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getEnumValueForTermsAttribute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6830,
                              "src": "7168:43:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint8_$",
                                "typeString": "function (bytes32,bytes32) view external returns (uint8)"
                              }
                            },
                            "id": 21777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7168:64:67",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          ],
                          "id": 21772,
                          "name": "Calendar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22506,
                          "src": "7159:8:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_Calendar_$22506_$",
                            "typeString": "type(enum Calendar)"
                          }
                        },
                        "id": 21778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7159:74:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 21781,
                            "name": "assetId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21331,
                            "src": "7291:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "6d6174757269747944617465",
                            "id": 21782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7300:14:67",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                              "typeString": "literal_string \"maturityDate\""
                            },
                            "value": "maturityDate"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_aa070e2b1c6cf838992192c95948c4af5c0f288b14767f418b56f7fd57e3c29e",
                              "typeString": "literal_string \"maturityDate\""
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21779,
                            "name": "assetRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21325,
                            "src": "7247:13:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IAssetRegistry_$4500",
                              "typeString": "contract IAssetRegistry"
                            }
                          },
                          "id": 21780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getUIntValueForTermsAttribute",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6857,
                          "src": "7247:43:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                          }
                        },
                        "id": 21783,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7247:68:67",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_enum$_BusinessDayConvention_$22503",
                          "typeString": "enum BusinessDayConvention"
                        },
                        {
                          "typeIdentifier": "t_enum$_Calendar_$22506",
                          "typeString": "enum Calendar"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21748,
                      "name": "shiftCalcTime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23056,
                      "src": "6750:13:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_enum$_BusinessDayConvention_$22503_$_t_enum$_Calendar_$22506_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,enum BusinessDayConvention,enum Calendar,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 21784,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6750:575:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6730:595:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21789,
                        "name": "marketObjectCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21329,
                        "src": "7366:16:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21790,
                        "name": "timestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21747,
                        "src": "7384:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21791,
                        "name": "quantity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21732,
                        "src": "7395:8:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21786,
                        "name": "dataRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21327,
                        "src": "7336:12:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DataRegistry_$7688",
                          "typeString": "contract DataRegistry"
                        }
                      },
                      "id": 21788,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "publishDataPoint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7687,
                      "src": "7336:29:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_int256_$returns$__$",
                        "typeString": "function (bytes32,uint256,int256) external"
                      }
                    },
                    "id": 21792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7336:68:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21793,
                  "nodeType": "ExpressionStatement",
                  "src": "7336:68:67"
                }
              ]
            },
            "documentation": {
              "id": 21674,
              "nodeType": "StructuredDocumentation",
              "src": "5784:82:67",
              "text": " @param _event encoded redemption to cancel the registration for"
            },
            "functionSelector": "8e17e4a3",
            "id": 21795,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 21679,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21678,
                  "name": "nonReentrant",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 38344,
                  "src": "5951:12:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5951:14:67"
              }
            ],
            "name": "cancelRegistrationForRedemption",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21676,
                  "mutability": "mutable",
                  "name": "_event",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21795,
                  "src": "5912:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21675,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5912:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5911:16:67"
            },
            "returnParameters": {
              "id": 21680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5970:0:67"
            },
            "scope": 21885,
            "src": "5871:1540:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21815,
              "nodeType": "Block",
              "src": "7523:66:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21809,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21797,
                        "src": "7545:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21810,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21799,
                        "src": "7554:6:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21806,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "7533:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ProxySafeICT_$21885",
                          "typeString": "contract super ProxySafeICT"
                        }
                      },
                      "id": 21808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20499,
                      "src": "7533:11:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 21811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7533:28:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21812,
                  "nodeType": "ExpressionStatement",
                  "src": "7533:28:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 21813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7578:4:67",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 21805,
                  "id": 21814,
                  "nodeType": "Return",
                  "src": "7571:11:67"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "40c10f19",
            "id": 21816,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 21802,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 21801,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 37372,
                  "src": "7487:9:67",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7487:9:67"
              }
            ],
            "name": "mint",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 21800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21797,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21816,
                  "src": "7431:15:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21796,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7431:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21799,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21816,
                  "src": "7448:14:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21798,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7448:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7430:33:67"
            },
            "returnParameters": {
              "id": 21805,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21804,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21816,
                  "src": "7513:4:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21803,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7513:4:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7512:6:67"
            },
            "scope": 21885,
            "src": "7417:172:67",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              20549
            ],
            "body": {
              "id": 21843,
              "nodeType": "Block",
              "src": "7739:178:67",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 21831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 21827,
                            "name": "totalAmountSignaledByHolder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21173,
                            "src": "7770:27:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 21829,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 21828,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21818,
                            "src": "7798:4:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7770:33:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 21830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7807:1:67",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7770:38:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4943542e5f7472616e736665723a20484f4c4445525f49535f5349474e414c494e47",
                        "id": 21832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7822:36:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_9158e12e1795d0e8ad39a90e753eaaf0c0b282f1092294faefb89d32b8f36654",
                          "typeString": "literal_string \"ICT._transfer: HOLDER_IS_SIGNALING\""
                        },
                        "value": "ICT._transfer: HOLDER_IS_SIGNALING"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_9158e12e1795d0e8ad39a90e753eaaf0c0b282f1092294faefb89d32b8f36654",
                          "typeString": "literal_string \"ICT._transfer: HOLDER_IS_SIGNALING\""
                        }
                      ],
                      "id": 21826,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7749:7:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 21833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7749:119:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21834,
                  "nodeType": "ExpressionStatement",
                  "src": "7749:119:67"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21838,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21818,
                        "src": "7894:4:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21839,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21820,
                        "src": "7900:2:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21840,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21822,
                        "src": "7904:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21835,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "7878:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ProxySafeICT_$21885",
                          "typeString": "contract super ProxySafeICT"
                        }
                      },
                      "id": 21837,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 20549,
                      "src": "7878:15:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 21841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7878:32:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21842,
                  "nodeType": "ExpressionStatement",
                  "src": "7878:32:67"
                }
              ]
            },
            "documentation": null,
            "id": 21844,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transfer",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21824,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "7726:8:67"
            },
            "parameters": {
              "id": 21823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21818,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21844,
                  "src": "7623:12:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21817,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7623:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21820,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21844,
                  "src": "7645:10:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21819,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7645:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21822,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21844,
                  "src": "7665:13:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21821,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7665:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7613:71:67"
            },
            "returnParameters": {
              "id": 21825,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7739:0:67"
            },
            "scope": 21885,
            "src": "7595:322:67",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              21001
            ],
            "body": {
              "id": 21883,
              "nodeType": "Block",
              "src": "8091:279:67",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 21864,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 21857,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21854,
                          "name": "deposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21848,
                          "src": "8105:7:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                            "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                          }
                        },
                        "id": 21855,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "onlySignaled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 21156,
                        "src": "8105:20:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 21856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8129:4:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "src": "8105:28:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 21863,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21858,
                            "name": "deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21848,
                            "src": "8137:7:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                              "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                            }
                          },
                          "id": 21859,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signaledAmounts",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 21164,
                          "src": "8137:23:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 21861,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 21860,
                          "name": "payee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21846,
                          "src": "8161:5:67",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8137:30:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 21862,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8170:1:67",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "8137:34:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "8105:66:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21874,
                  "nodeType": "IfStatement",
                  "src": "8101:141:67",
                  "trueBody": {
                    "id": 21873,
                    "nodeType": "Block",
                    "src": "8173:69:67",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21866,
                              "name": "payee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21846,
                              "src": "8193:5:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21867,
                                  "name": "deposit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21848,
                                  "src": "8200:7:67",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                                    "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                                  }
                                },
                                "id": 21868,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signaledAmounts",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21164,
                                "src": "8200:23:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 21870,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 21869,
                                "name": "payee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21846,
                                "src": "8224:5:67",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8200:30:67",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21865,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              20524
                            ],
                            "referencedDeclaration": 20524,
                            "src": "8187:5:67",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 21871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8187:44:67",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21872,
                        "nodeType": "ExpressionStatement",
                        "src": "8187:44:67"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21878,
                        "name": "payee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21846,
                        "src": "8337:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21879,
                        "name": "deposit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21848,
                        "src": "8344:7:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                          "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21880,
                        "name": "depositId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21850,
                        "src": "8353:9:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                          "typeString": "struct DepositAllocaterStorage.Deposit storage pointer"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21875,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -25,
                        "src": "8315:5:67",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_ProxySafeICT_$21885",
                          "typeString": "contract super ProxySafeICT"
                        }
                      },
                      "id": 21877,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferDeposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21001,
                      "src": "8315:21:67",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Deposit_$21165_storage_ptr_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,struct DepositAllocaterStorage.Deposit storage pointer,bytes32)"
                      }
                    },
                    "id": 21881,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8315:48:67",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21882,
                  "nodeType": "ExpressionStatement",
                  "src": "8315:48:67"
                }
              ]
            },
            "documentation": null,
            "id": 21884,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferDeposit",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 21852,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "8078:8:67"
            },
            "parameters": {
              "id": 21851,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21846,
                  "mutability": "mutable",
                  "name": "payee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21884,
                  "src": "7957:13:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21845,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7957:7:67",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21848,
                  "mutability": "mutable",
                  "name": "deposit",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21884,
                  "src": "7980:23:67",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                    "typeString": "struct DepositAllocaterStorage.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21847,
                    "name": "Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 21165,
                    "src": "7980:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$21165_storage_ptr",
                      "typeString": "struct DepositAllocaterStorage.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21850,
                  "mutability": "mutable",
                  "name": "depositId",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 21884,
                  "src": "8013:17:67",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21849,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8013:7:67",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7947:89:67"
            },
            "returnParameters": {
              "id": 21853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8091:0:67"
            },
            "scope": 21885,
            "src": "7923:447:67",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "scope": 21886,
        "src": "839:7533:67"
      }
    ],
    "src": "41:8332:67"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.11+commit.5ef660b1.Emscripten.clang"
  },
  "networks": {
    "1994": {
      "events": {
        "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        "0x76735e462dae5480c552f970568dc60e35cc3c4c06eb818f77bbb357593bf7fa": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "uint256",
              "name": "checkpointId",
              "type": "uint256"
            }
          ],
          "name": "CheckpointCreated",
          "type": "event"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xA9C613909EA956e3a5ceb0618CD1405098164740",
      "transactionHash": "0x0b409fda969a10b3ce9d8714428be9c96c165c2e034b068c553987e2a613e1d3"
    }
  },
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-08-12T09:47:18.223Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "allowance(address,address)": {
        "details": "See {IERC20-allowance}."
      },
      "approve(address,uint256)": {
        "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
      },
      "balanceOf(address)": {
        "details": "See {IERC20-balanceOf}."
      },
      "balanceOfAt(address,uint256)": {
        "params": {
          "holder": "Holder to query balance for",
          "timestamp": "Timestamp of the balance checkpoint"
        }
      },
      "calculateClaimOnDeposit(address,bytes32)": {
        "params": {
          "depositId": "Id of the deposit",
          "payee": "Address of holder"
        },
        "returns": {
          "_0": "withdrawable amount"
        }
      },
      "cancelRegistrationForRedemption(bytes32)": {
        "params": {
          "_event": "encoded redemption to cancel the registration for"
        }
      },
      "claimDeposit(bytes32)": {
        "params": {
          "depositId": "Id of the deposit"
        }
      },
      "decimals()": {
        "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
      },
      "decreaseAllowance(address,uint256)": {
        "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
      },
      "getDeposit(bytes32)": {
        "returns": {
          "amount": "amount",
          "claimedAmount": "claimedAmount",
          "onlySignaled": "onlySignaled",
          "scheduledFor": "scheduledFor",
          "token": "token",
          "totalAmountSignaled": "totalAmountSignaled"
        }
      },
      "getHoldersAt(uint256)": {
        "params": {
          "checkpointId": "Checkpoint id at which holder list is to be populated"
        },
        "returns": {
          "_0": "list of holders"
        }
      },
      "hasClaimedDeposit(address,bytes32)": {
        "params": {
          "depositId": "Id of the deposit"
        },
        "returns": {
          "_0": "bool whether the address has claimed"
        }
      },
      "increaseAllowance(address,uint256)": {
        "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
      },
      "initialize(address,address,bytes32,address)": {
        "details": "\"constructor\" to be called on deployment"
      },
      "initialize(string,string)": {
        "details": "\"constructor\" to be called on deployment"
      },
      "name()": {
        "details": "Returns the name of the token."
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "pushFundsToAddresses(bytes32,address[])": {
        "params": {
          "depositId": "Id of the deposit",
          "payees": "Addresses to which to push the funds"
        }
      },
      "registerForRedemption(bytes32,uint256)": {
        "params": {
          "_event": "encoded redemption to register for",
          "amount": "amount of tokens to redeem"
        }
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "symbol()": {
        "details": "Returns the symbol of the token, usually a shorter version of the name."
      },
      "totalSupply()": {
        "details": "See {IERC20-totalSupply}."
      },
      "totalSupplyAt(uint256)": {
        "params": {
          "timestamp": "Timestamp of the totalSupply checkpoint"
        },
        "returns": {
          "_0": "uint256"
        }
      },
      "transfer(address,uint256)": {
        "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "balanceOfAt(address,uint256)": {
        "notice": "Queries the balances of a holder at a specific timestamp"
      },
      "calculateClaimOnDeposit(address,bytes32)": {
        "notice": "Calculate claimable amount of a deposit for a given address"
      },
      "claimDeposit(bytes32)": {
        "notice": "Withdraws the holders share of funds of the deposit"
      },
      "getDeposit(bytes32)": {
        "notice": "Returns params of a deposit"
      },
      "getEpochOffset(uint8)": {
        "notice": "Returns the epoch offset for a given event type to determine the correct order of events if multiple events have the same timestamp"
      },
      "getHoldersAt(uint256)": {
        "notice": "returns an array of holders with non zero balance at a given checkpoint"
      },
      "hasClaimedDeposit(address,bytes32)": {
        "notice": "Checks whether an address has withdrawn funds for a deposit"
      },
      "initialize(address,address,bytes32,address)": {
        "notice": "Initialize a new instance storage"
      },
      "initialize(string,string)": {
        "notice": "Initialize a new instance storage"
      },
      "pushFundsToAddresses(bytes32,address[])": {
        "notice": "Issuer can push funds to provided addresses"
      },
      "shiftCalcTime(uint256,uint8,uint8,uint256)": {
        "notice": "Used in POFs and STFs for DCFs. No shifting is applied if a Calc/Shift instead of Shift/Calc BDC is provided."
      },
      "totalSupplyAt(uint256)": {
        "notice": "Queries totalSupply at a specific timestamp"
      }
    },
    "version": 1
  }
}